接上回 https://blog.csdn.net/weixin_43119903/article/details/104802546
为什么要搭建集群
我们先来看看在单注册中心中的服务架构
这里我们可以看出来,这里面,注册中心起到了一个不可或缺的作用,假如,注册中心挂掉了,整个系统将会瘫痪,这违背了CAP原则中的A。因此,需要对注册中心做一个集群,当这个注册中心挂掉,还有另一个注册中心可以顶上。
怎么搭建
我这里只搭建两台Eureka展示就可以了
其实搭建起来很简单,我们只需要将其相互注册就好了,这样,Eureka就会自动帮你将数据同步,以及在一台机器出现问题的时候,另一台可以顶上。
准备两个Eureka注册中心
- 我这里准备了一个是8999端口的,另一个是9000端口的
- 配置文件
9000端口的yml
server:
port: 9000 #端口
#配置eureka server
eureka:
instance:
hostname: localhost #主机名称
client:
#register-with-eureka: false #是否将自己注册到注册中心
fetch-register: false #是否从eureka中获取注册信息
service-url: #配置暴露给Eureka Client的请求地址
defaultZone: http://127.0.0.1:8999/eureka/
8999端口的yml
server:
port: 8999 #端口
#配置eureka server
eureka:
instance:
hostname: localhost #主机名称
client:
#register-with-eureka: false #是否将自己注册到注册中心
fetch-register: false #是否从eureka中获取注册信息
service-url: #配置暴露给Eureka Client的请求地址
defaultZone: http://127.0.0.1:9000/eureka/
我们需要注意两个地方
1.在defaultZone的参数中,我们写的是其他Eureka的ip以及端口
2.register-with-eureka参数我们需要将它改成true或者直接默认值
Eureka注册中心配置完成
然后我们来到Eureka的管理后台查看一下
我们可以看到,在服务列表中有一个UNKNOWN服务(其实没有配置spring.application.name),这里服务中,Status中,我们可以看到,有两个端口,这就代表我们成功了,我们可以尝试一下关掉其中一个Eureka,看看生产者和消费者之间会不会出现问题。(这里我就不做展示了)
那么在生产者和消费者间又要怎么处理?
- 首先我们看看不处理,直接启动的情况下,会是什么情况
启动生产者,我们来看看9000端口的注册中心:
我们再来看看8999端口的注册中心:
我们发现,就算我们不去改动,两个注册中心也会进行数据同步,那是不是代表着我们不用修改了呢?
当然不是,我们要考虑到一种情况,我们现在的生产者只在9000端口的机器上注册了,假如9000机器挂了,这个注册就失败了,8999端口的机器就算活着,也不会有生产者的信息,所以我们需要对yml文件中的defaultZone参数进行修改:
eureka:
client:
service-url:
defaultZone: http://localhost:9000/eureka/,http://localhost:8999/eureka/
当然,消费者那边处理的方式也是一样的