以案例聊聊SpringCloud分布式系统的架构者(五)

继续我们的SpringCloud架构,之前聊了聊SpringCloud中的一系列在分布式系统中关于服务注册、发现、路由、熔断等方面的问题,这些问题是分布式系统中常用的几种技术策略。他们共同的都是在注册中心要进行注册,这样一来就出现如果今后在某天负责注册的服务的宕机,那么就会导致整个分布式服务都变的不可用。这样整个系统的可靠性就不能保证。要想解决这个问题将系统的可靠性提高,这就变得很重要了。SpringCloud的作者充分的考虑到这点,所以就有了SpringCloud提供的多注册中心。相当于将注册中心的服务分布到两台机器或者多台机器上,这样其中的一台宕机后另外的一台可以马上接替其工作,这样做就不至于出现单点故障的问题。 那么Dubbo是怎么保证不出现这种单点故障的呢?Dubbo可以利用Zookeeper的集群来解决这个问题。好了接下来我们看SpringCloud的官网是如何做这件事的?

从上面SpringCloud的可以看出来,它的想法是做两个注册中心,但是上面的也存在一个问题,两个注册中心,他们之间好像没有主从机制,那么这样一来如果AB两个服务注册于第一个注册中心,BC两个服务注册于第二个注册中心,其中的一个挂了,那么注册在上面的服务也就变的不可用,导致其他的服务消费者也不可用,这样做不是我们想要的。

怎么才能做成我们想要的呢?首先要明确我们要做成什么样的目标:一主一备,主宕备上。接下来就实现一下。

第一步:重新创建一个注册中心作为从节点或者直接可以复制之前的注册中心作为从节点

注意复制上一个注册中心的时候以下的可以不要,只保留src目录和pom.xml文件。将这些不要的删除了后直接导入项目就可以。

 

第二步:主注册中心和从注册中心进行配置用于互相发现

主注册中心:

#配置注册中心的IP地址和端口号
server.port=6010

#配置注册中心的当前实例主机的名称
eureka.instance.hostname=localhost-main

#注册中心只进行服务注册和获取服务,不能发布服务.下面的具体配置为:
#实例是否在eureka服务器上注册自己的信息以供其他服务发现,默认为true
eureka.client.register-with-eureka=false
#此客户端是否获取eureka服务器注册表上的注册信息,默认为true
eureka.client.fetch-registry=false

spring.application.name=spring-cloud-register

eureka.client.service-url.defaultZone=http://localhost:6090/eureka/

从注册中心:

#指定端口号
server.port=6090

#指定当前的注册中心的实例名
eureka.instance.hostname=localhost-backup
#注册中心只进行服务注册和获取服务,不能发布服务.下面的具体配置为:
#实例是否在eureka服务器上注册自己的信息以供其他服务发现,默认为true
eureka.client.register-with-eureka=false
#此客户端是否获取eureka服务器注册表上的注册信息,默认为true
eureka.client.fetch-registry=false

spring.application.name=spring-cloud-register

eureka.client.service-url.defaultZone=http://localhost:6010/eureka

第三步:在从注册中心启动对象里添加注解,启动主注册中心和从注册中心,发现主从已经互相发现了。

主注册中心:

从注册中心:

第五步:服务提供者和服务的消费者中,在配置文件中指定注册中心的配置时,需要指定两个注册中心的地址.

#配置注册中心
eureka.client.service-url.defaultZone=http://localhost:6010/eureka/,http://localhost:6090/eureka/

如果有路由、熔断、过滤服务的话也得配置两个注册中心的地址。

服务消费者在访问服务提供者的时候之前怎么访问现在就怎么访问。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值