• Eureka的高可用


      我们之前搭建的是一个简单的注册中心,而且这个注册中心是一个单点的,那么我们的系统就会存在一个风险,

    一旦我们这个注册中心故障了,则整个服务都不可用,那我们可以对注册中心进行集群部署,

    这样我们不会担心因为某一台注册中心出现故障,而影响到整个服务.也就实现了注册中心的高可用。

    分布式和集群这两个概念:

    • 分布式:一个业务分拆多个子业务,部署在不同的服务器上
    • 集群:同一个业务,分别部署在不同的服务器上

    搭建的步骤 

    由上面的思路,我们知道,端口为8001需要挂上端口为8002和端口为8003,所以在端口为8001的配置文件中需要重新配置一下defaultZone,如下:

    OK,defaultZone 配置好了端口为8002和 端口为8003。

    spring.application.name=spring-cloud-eureka-server
    server.port =8001
    eureka.instance.hostname =eurekaServer8001
    #设置是否将自己作为客户端注册到注册中心(缺省true)
    #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient
    eureka.client.register-with-eureka=false
    #设置是否从注册中心获取注册信息,默认值为true
    #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false
    eureka.client.fetch-registry=false
    # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败
    # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    eureka.client.serviceUrl.defaultZone =http://eurekaServer8002:8002/eureka/,http://eurekaServer8003:8003/eureka/

    安装上面方法,依次搭建端口为8002和端口为8003

    端口为8002的配置文件:

    spring.application.name=spring-cloud-eureka-server
    server.port =8002
    eureka.instance.hostname =eurekaServer8002
    #设置是否将自己作为客户端注册到注册中心(缺省true)
    #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient
    eureka.client.register-with-eureka=false
    #设置是否从注册中心获取注册信息,默认值为true
    #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false
    eureka.client.fetch-registry=false
    # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败
    # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    eureka.client.serviceUrl.defaultZone =http://eurekaServer8001:8001/eureka/,http://eurekaServer8003:8003/eureka/

    端口为8003的配置文件:

    spring.application.name=spring-cloud-eureka-server
    server.port =8003
    eureka.instance.hostname =eurekaServer8003
    #设置是否将自己作为客户端注册到注册中心(缺省true)
    #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient
    eureka.client.register-with-eureka=false
    #设置是否从注册中心获取注册信息,默认值为true
    #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false
    eureka.client.fetch-registry=false
    # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败
    # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    eureka.client.serviceUrl.defaultZone =http://eurekaServer8001:8001/eureka/,http://eurekaServer8002:8002/eureka/

    修改服务的提供者HelloService项目的配置文件:

    # 指定服务注册中心的地址                   
    eureka.client.serviceUrl.defaultZone=http://eurekaServer8001:8001/eureka/,
    http://eurekaServer8002:8002/eureka/,http://eurekaServer8003:8003/eureka/

    测试

    然后浏览器地址栏输入:http://eurekaServer8001:8001/

  • 相关阅读:
    题解【51nod 1290 Counting Diff Pairs】
    题解【luogu3709 大爷的字符串题】
    数据库唯一索引冲突不抛出异常的两种方式
    git 查看远程分支最后一次提交时间
    Java占位符
    IntelliJ IDEA注册码
    git忽略本地文件
    ThreadPoolExecutor参数
    MyBatis是如何解决Sql注入的
    Java 泛型
  • 原文地址:https://www.cnblogs.com/64Byte/p/13281090.html
Copyright © 2020-2023  润新知