美文网首页
springCloud Finchley 实战入门(基于spri

springCloud Finchley 实战入门(基于spri

作者: 同学汇俱乐部 | 来源:发表于2018-07-25 11:59 被阅读138次

    Eureka高可用注册中心

    Eureka Server的设计一开始就考虑到了高可用的问题,在eureka服务治理设计中,所有的节点即是是服务提供方,也是服务消费方。

    在部署高可用注册中心前我们先需要准备一下,本地环境。因为我们实例是在单台电脑上的,所以需要模拟堕胎服务器,我们需要修改一下本机的host文件。
    windows的host文件在C:\Windows\System32\drivers\etc\hosts
    在host文件后面加上

    127.0.0.1 peer1
    127.0.0.1 peer2
    

    修改完成,我们就来尝试搭建高可用的服务注册中心集群。接着上一章的服务中心的基础上面扩展,来构建一个双节点服务注册中心集群。

    在resource目录下面:
    创建application-peer1.yml配置文件,作为peer1服务中心的配置,并将serviceId指向peer2.

    server:
      port: 8762
    spring:
      application:
        name: service-register
    eureka:
      instance:
        prefer-ip-address: false
        hostname: peer1
      client:
        fetch-registry: true
        register-with-eureka: true
        serviceUrl:
          defaultZone: http://peer2:8763/eureka/
      server:
        wait-time-in-ms-when-sync-empty: 0
    

    创建application-peer2.yml配置文件,作为peer2服务中心的配置,并将serviceId指向peer1.

    server:
      port: 8763
    spring:
      application:
        name: service-register
    eureka:
      instance:
        prefer-ip-address: false
        hostname: peer2
      client:
        fetch-registry: true
        register-with-eureka: true
        serviceUrl:
          defaultZone: http://peer1:8762/eureka/
      server:
        wait-time-in-ms-when-sync-empty: 0
    

    接下来通过spring.profiles.active属性来分别启动peer1和peer2.
    我启动的做法是不在idea里启动,而是把服务注册中心打包,通过cmd启动。
    maven打包


    15324251491.jpg

    然后通过cmd命令分别启动服务
    [图片上传中...(15324253911.jpg-db47b5-1532490920148-0)]


    15324254351.jpg

    java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active

    15324253911.jpg

    java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

    两个服务启动后,我们访问一下http://localhost:8762/或者http://localhost:8763/

    15324255261.jpg

    这里可以看到两个注册中心部署相互注册成功了。

    关闭其中一个服务我们可以看到对应的节点变成不可用了。


    15324256591.jpg

    设置多个服务注册中心后,服务提供者还需要做一些简单的配置才能将服务注册到Eureka server集群中。

    在这里我们按照前面的做法,重新新建一个服务提供者module,命名为"eureka-bussniss-service-user"当作是我们平时项目中用户服务模块,专门处理用户相关服务的。
    因为目前服务注册中心是多个的,所以我们在服务提供者的配置文件上还需要做一些配置。
    添加下面的属性,表示把服务注册到指定的注册中心,注册中心地址用逗号隔开;

    eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/
    

    完整的application.yml配置如下:

    spring:
      application:
        name: service-user
    server:
      port: 8802
    eureka:
      client:
          serviceUrl:
            defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/
    

    记得主类添加@EnableEurekaClient注解,然后在确保服务注册中心正常的情况下,启动该项目。如果项目没有报错那就说明我们的配置应该是正常的。打开http://localhost:8763/或者http://localhost:8762/我们可以看到service-user已经同时注册到了服务注册中心。

    15324796051.jpg

    此时若断开peer1服务,由于service-user服务也向peer2注册,因此peer2上面的其他服务依然能够访问到service-user。从而实现了注册中心的高可用。

    项目的源码

    服务提供者已经完成了,下一篇我们将会实现服务消费者,以及使用ribbon实现负载均衡。

    相关文章

      网友评论

          本文标题:springCloud Finchley 实战入门(基于spri

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