zoukankan      html  css  js  c++  java
  • SpringCloud服务的注册发现--------Eureka实现高可用

    1,Eureka作为注册中心,掌管者服务治理的功能,十分重要,如果注册中心的服务一旦宕机,所有的服务就会挂了,为此,实现注册中心的集群(高可用)就显得十分必要了

    2,Eureka 搭建集群

          实现原理就是注册中心的相互注册,实现集群。

          例子:

         

           有两个Eureka服务,分别为eureka和eureka_backup

           eureka的配置文件:8200端口是eureka_backup的端口,将8100的eureka服务注册到eureka_backup注册中心上

    ###服务端口号
    server:
      port: 8100
    ###eureka 基本信息配置
    spring: 
     application: 
      name: eureka-server
    eureka:
      instance:
        ###注册到eurekaip地址
        hostname: 127.0.0.1
      client:
        serviceUrl:
          defaultZone: http://127.0.0.1:8200/eureka/
    ###因为是集群,注册中心也需要注册到其他的注册中心
        register-with-eureka: true
        fetch-registry: true

         eureka_backup的配置文件:8100端口是eureka_backup的端口,将8200的eureka服务注册到eureka注册中心上

    ###服务端口号
    server:
      port: 8200
    ###eureka 基本信息配置
    spring: 
     application: 
      name: eureka-server
    eureka:
      instance:
        ###注册到eurekaip地址
        hostname: 127.0.0.1
      client:
        serviceUrl:
          defaultZone: http://127.0.0.1:8100/eureka/
    ###因为是集群,注册中心也需要注册到其他的注册中心
        register-with-eureka: true
        fetch-registry: true

    其他的服务:member,order,分别需要注册到这个两个注册中心上

    member:

    ###服务启动端口号
    server:
      port: 8000
    ###服务名称(服务注册到eureka名称)  
    spring:
        application:
            name: app-aiyuesheng-member
    ###服务注册到eureka地址
    eureka:
      client:
        service-url:
               defaultZone: http://localhost:8100/eureka,http://localhost:8200/eureka
    ###需要注册到eureka
        register-with-eureka: true
    ###是否需要从eureka上获取注册信息
        fetch-registry: true

    order:

    ###服务启动端口号
    server:
      port: 8001
    ###服务名称(服务注册到eureka名称)  
    spring:
        application:
            name: app-aiyuesheng-order
    ###服务注册到eureka地址
    eureka:
      client:
        service-url:
               defaultZone: http://localhost:8100/eureka,http://localhost:8200/eureka
    ###需要注册到eureka
        register-with-eureka: true
    ###是否需要从eureka上获取注册信息
        fetch-registry: true

    配置完毕:

    先启动eureka 和 eureka_backup,因为这两个注册中心需要相互注册,当先启动eureka 的时候,eureka_backup 还没有启动,所有eureka 启动会报错,不用管,错误如下:

    com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
        at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.8.6.jar:1.8.6]
        at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.8.6.jar:1.8.6]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_201]
        at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_201]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) [na:1.8.0_201]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0_201]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_201]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_201]
        at java.lang.Thread.run(Unknown Source) [na:1.8.0_201]

    再启动member,order 服务会注册到注册中心上,因为先启动8100,再启动8200,所以8200 上有8100,8200,8100上只有8200

    下面是8100的地址:

    如果当8200挂了之后,大约30秒后,注册信息会转移到8100.。。。时间可以配置

    至此,实现了Eureka集群高可用

  • 相关阅读:
    Apple MDM
    苹果核
    iOS自动化测试的那些干货
    Wifi 定位原理及 iOS Wifi 列表获取
    详解Shell脚本实现iOS自动化编译打包提交
    PushKit 占坑
    【译】使用 CocoaPods 模块化iOS应用
    NSMutableArray 根据key排序
    iOS 通过tag查找控件
    自己使用 2.常量变量,数据类型,数据的输入输出。
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11382316.html
Copyright © 2011-2022 走看看