• SpringCloud教程之Spring Cloud Eureka


    1.Spring Cloud Eureka

    Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分, 它基于 NetflixEureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。

    1.服务治理

    服务治理可以说是微服务架构中最为核心和基础的模块, 它主要用来实现各个微服务实例的自动化注册与发现。

    服务注册:在服务治理框架中, 通常都会构建一个注册中心, 每个服务单元向注册中心登记自己提供的服务,将主机与端口号、 版本号、 通信协议等一些附加信息告知注册中心, 注册中心按服务名分类组织服务清单。另外, 服务注册中心还需要以心跳的方式去监测清单中的服务是否可用, 若不可用需要从服务清单中剔除, 达到排除故障服务的效果。

    服务发现:由于在服务治理框架下运作, 服务间的调用不再通过指定具体的实例地址来实现, 而是通过向服务名发起请求调用实现。 所以, 服务调用方在调用服务提供方接口的时候, 并不知道具体的服务实例位置。 因此, 调用方需要向服务注册中心咨询服务, 并获取所有服务的实例清单, 以实现对具体服务实例的访问。

    2.搭建Eureka

    2.1 创建总体Maven项目;

    首先创建一个总的Maven项目来管理SpringCloud项目,并添加依赖,pom.xml文件内容如下所示

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion><groupId>com.xcu</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>1.0-SNAPSHOT</version><parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.3.RELEASE</version>
            <relativePath/>
        </parent><modules>
            <module>eureka-server</module>
            <module>service-hi</module>
        </modules><properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        </properties><dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies><dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement><build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    2.2 创建Eureka服务中心

    2.2.1 右键创建总体Maven的Module

    2.2.2 选择Eureka Server组件

    2.2.3 查看pom.xml,已经添加了依赖

    2.2.4 在SpringBoot启动类中添加注解@EnableEurekaServer

    @EnableEurekaServer 注解启动一个服务注册中心提供给其他应用进行对话

    2.2.5 配置application.yml

    server:
      port: 8761
    ​
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false 
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    ​
    spring:
      application:
        name: eurka-server

    默认情况下,服务中心也会作为客户端来自己注册自己,所以配置eureka.client.registerWithEureka=false来关闭自我注册;

    eureka.client.fetchregistry: 由于注册中心的职责就是维护服务实例,它并不需要去检索服务, 所以也设置为 false

    2.2.6 启动查看

    发现没有服务,因为我们并没有创建eureka-client

    2.3 创建服务注册中心

    2.3.1-2.3.4 请参考2.2创建服务中心的步骤,这里略过

    创建完毕的pom.xml如下

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.xcu</groupId>
        <artifactId>service-hi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>service-hi</name>
        <description>Demo project for Spring Boot</description><properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
        </properties><dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency><dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency><dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies><dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement><build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build></project>

    2.3.5 在启动类添加注解@EnableEurekaClient

    @SpringBootApplication
    @EnableEurekaClient
    @RestController
    public class ServiceHiApplication {
    ​
        public static void main(String[] args) {
            SpringApplication.run(ServiceHiApplication.class, args);
        }
    ​
        @Value("${server.port}")
        String port;
    ​
        @RequestMapping("/hi")
        public String home(@RequestParam(value = "name",defaultValue = "com.xcu")String name){
            return "hi "+name+ " ,i am form port:"+port;
        }
    }
    ​
    

    2.3.6 配置application.yml

    server:
      port: 8762   #端口号
    ​
    ​
    spring:
      application:
        name: service-hi  #服务名
    ​
    ​
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/  #服务注册中心的地址
    

    2.3.7 启动项目并查看

    完毕!

    不忘初心,方得始终,以梦为马,不负韶华
  • 相关阅读:
    Java MQTT 客户端之 Paho
    Spring Security + JJWT 实现 JWT 认证和授权
    MinIO
    Spring Boot 实现看门狗功能 (调用 Shell 脚本)
    Canal Admin
    canal
    浅尝 Elastic Stack (五) Logstash + Beats + Kafka
    养鸡场下蛋记
    涛声依旧
    原创:矩阵论学习心得
  • 原文地址:https://www.cnblogs.com/newz/p/12595576.html
Copyright © 2020-2023  润新知