抛弃概念,只说自己的理解:
首先我们都知道Cloud微服务可以是多个Boot组成,Boot之间的服务相互调用,我们当然可以用RestTemplate,但是如果子项目过多,相互调用频繁,项目与项目之间的耦合度就会非常高,注册中心帮我们解决的一个问题,就是以生产者消费者角度出发的,对代码的改动最小,相当于一个中介的概念,一个集市,每个人都可以放东西上来卖,也可以买别人的东西。
Eureka就相当于集市的作用,所以它就是一个注册中心。
看图说话?
上面的例子我们提出了两个概念例子:生产者/消费者(它们两者都可以互相转换,所以混为一体)和集市(注册中心),所以理所当然的就是一个三角关系:
怎么用?如何改造?
上面说了可以都是Boot,那我们就可以在一个Maven Project下面创建3个Boot。
(1)Pom.xml文件里:
生产者/消费者都使用:
这样证明它们都是这个集市的客户,既可以买也可以卖,没有强制的单一的身份。
Eureka服务注册中心使用:
代表着我是server管理人员。
(2)启动类:
生产者/消费者都使用:
Eureka服务注册中心使用:
(3)YML配置文件:
生产者/消费者都使用:
Eureka服务注册中心使用:
其他不用改造了,启动三个项目,打开自己配置的的defaultZone就可以看到~
集群版Eureka
为什么要用集群版?
就如同上面所说的,Eureka注册中心是一个集市,如果这个集市因为疫情或者地面塌陷不能用了,那么所有生产者和消费者都不能够使用了,所以就要有多个集市,如同游戏中的交易频道,一个频道饱满了,我就去另外一个交易频道,一样摆摊做买卖。
看图:
所以集群的意思,就是启动多个Eureka注册中心项目。
基于上面配置的基础,我们做一些修改:
(1)首先新增两个Eureka Server:
pom.xml都跟单机版的一样,唯一要修改的是yml文件:
为什么要这样配置?记住一句话:集群版Eureka就是相互注册,相互守望。才能达到高可用的集群效果。也就是说,一个挂掉没关系,其他两个注册中心照样正常提供咨询注册服务。
(2)让生产者与消费者都接入集群中:
只需要修改yml文件:
用逗号隔开,代表当前服务要注册到多个注册中心即可。
(3)重启:
记住千万千万记住启动顺序:
1:启动3个Eureka注册中心的Boot项目。
2:启动生产者。
3:启动消费者。