简单来说,Eureka Server
的高可用,实际上就是将自己也作为服务向其他服务注册中心进行注册,这样就可以形成一组相互注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。
另外,从官网文档中有提到Zones
、Regions
,Region
和Zone
(或者Availability Zone)均是AWS的概念。在非AWS环境下,我们可以先简单地将region理解为Eureka集群,zone理解成机房。下图就可以理解为一个Eureka集群被部署在了zone1机房和zone2机房中。
对这些概念的其他相关知识,也深入了解,大家感兴趣,可自行搜索下吧。
示例前,先看看集群模式下,Eureka的架构图。
- Service Provider会向Eureka Server做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作。
- Eureka Server之间会做注册服务的同步,从而保证状态一致
- Service Consumer会向Eureka Server获取注册服务列表,并消费服务
Eureka服务端高可用
通过点对点配置,注册中心通过相互注册来实现高可用配置。以下构建一个双节点的集群模式。
修改spring-cloud-eureka-server项目
1.由于是在同一台进行模拟,首先修改hosts文件,当浏览器请求一个地址时,首先会从此文件选择对应对应的IP地址,找不到时才请求CDS域名解析服务器进行解析
C:\Windows\System32\drivers\etc\hosts文件:
127.0.0.1 eureka-server
127.0.0.1 eureka-server1
分别启动2个注册中心
Eureka客户端注册至集群上
客户端只需要通过修改配置文件的eureka.client.service-url.defaultZone值即可。
修改spring-cloud-eureka-client项目
修改配置文件application.properties
分别启动二个服务提供端,启动后,可以看见eureka-client注册到2个注册中心上去了。
高可用测试
为了验证高可用性是否成功,创建一个spring-cloud-eureka-server-ha-test项目,作为服务消费者使用RestTemplate+ribbon进行调用spring-cloud-eureka-client的服务。
创建spring-cloud-eureka-server-consumer-message项目
pom依赖:
1.配置文件,配置注册中心地址
2.启动类,配置RestTemplateBean类,同时加入@LoadBalanced注解实现服务调用。
3.编写一个控制类,简单调用EUREKA-CLIENT服务方法。
4.启动应用类,访问注册中心和http://localhost:9600 。
PS:福利来了,上源码!福利来了,上源码!
福利来了,上源码!
https://github.com/TheWays/springCloud
记得点赞哈