美文网首页Spring Cloud 核心技术微服务Spring Boot 核心技术
SpringCloud组件:将服务提供者注册到Eureka集群

SpringCloud组件:将服务提供者注册到Eureka集群

作者: 恒宇少年 | 来源:发表于2018-10-05 16:23 被阅读111次

    在之前章节SpringCloud组件:将微服务提供者注册到Eureka服务中心已经讲解了把服务注册到单个Eureka Server节点上,既然我们在SpringCloud组件:Eureka高可用集群部署讲到了如何去构建Eureka Server 集群的问题,那么我们该考虑下怎么将服务注册Eureka Server集群上呢?

    带着这个疑问来开始本章的内容。

    本章目标

    服务节点注册到Eureka Server集群

    构建项目

    使用idea开发工具创建SpringBoot项目,创建时选择集成依赖Eureka DiscoveryWeb等,pom.xml配置文件如下所示:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <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.SR1</spring-cloud.version>
    </properties>
    
    <dependencies>
        <!--Web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Eureka Client-->
        <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-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

    添加完成依赖后我们需要开始进行配置Eureka Client相关信息。

    启用Eureka Client

    在入口类XxxApplication上添加@EnableDiscoveryClient注解用于启用Eureka Client客户端的相关依赖配置,如下所示:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class SpringCloudEurekaHighProviderApplication {
        //...
    }
    

    配置Eureka Client

    打开application.yml配置文件进行配置Eureka相关参数信息,我们先看下具体的配置内容,如下所示:

    # 服务名称
    spring:
      application:
        name: hengboy-spring-cloud-eureka-high-provider
    
    # 端口号
    server:
      port: 20000
    
    # Eureka集群配置信息
    eureka:
      client:
        service-url:
          defaultZone: http://node1:10001/eureka/,http://node2:10002/eureka/
    

    主动将服务注册到Eureka集群

    我们需要注意的是上面的eureka.clinet.service-url.defaultZone参数内容,我们通过,隔开配置了两个Eureka Server地址,这两个地址则是SpringCloud组件:Eureka高可用集群部署章节提高的Eureka Server集群地址。

    如果defaultZone,隔开配置了多个Eureka Server地址,那么在启动服务提供者时就会主动向配置的多个Eureka Server地址进行发送注册信息,这样也就注册到集群上。

    运行测试

    下面我们来运行测试看下效果,测试步骤如下所示:

    1. 启动node1环境服务注册中心
    2. 启动node2环境服务注册中心
    3. 启动本章项目
    4. 访问node1管理界面http://node1:10001查看服务列表
    5. 访问node2管理界面http://node2:10002查看服务列表

    注意:node1以及node2的启动方式请查看SpringCloud组件:Eureka高可用集群部署

    访问两个服务注册中心管理界面你都会发现如下图所示:

    注册中心管理界面

    服务节点hengboy-spring-cloud-eureka-high为注册中心的名称,hengboy-spring-cloud-eureka-high-provider为本章的服务节点

    自动同步到Eureka集群

    为什么说会自动同步到Eureka集群呢?

    因为有eureka.client.fetch-registry这个参数,而且还是默认为true,这个参数配置了是否自动同步服务列表,也就是默认就会进行同步的操作。你就算将Eureka Client注册到http://node1:10001/eureka/注册中心,也会自动同步到http://node2:10002/eureka/

    总结

    本章讲解了怎么通过主动以及自动同步的方式将Eureka Client注册到服务注册中心集群环境中,为了保证完整性,还是建议手动进行配置,自动同步也有不成功的情况存在。

    源码位置

    有问题要问?

    如果你有技术相关的问题想要咨询恒宇少年,请去博客首页左侧导航栏,点击知识星球微信扫码加入我的星球。

    与恒宇少年面对面

    如果你喜欢恒宇少年的相关文章,那么就去微信公众号(恒宇少年)关注我吧!!!
    当然你也可以去 SpringCloud码云源码 项目底部扫描微信公众号二维码关注我,感谢阅读!!!

    学习目录推荐

    开源信息

    这段时间一直在编写开源的相关框架,致力于公司使用的框架升级以及开源计划,将公司使用到的工具以及插件进行升级重构并且开源。

    相关文章

      网友评论

        本文标题:SpringCloud组件:将服务提供者注册到Eureka集群

        本文链接:https://www.haomeiwen.com/subject/iguqaftx.html