在上一篇中分享了如何使用Eureka进行服务治理,里面搭建的服务注册中心是单体的,
但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样,需要多台服务一起工作,组成高可用的服务注册中心。这样,如果有其中一台宕机,系统也能正常运行。
那么如何来构建高可用的服务注册中心呢?
由于eureka注册中心既可以作为服务端(服务注册中心),也可以作为客户端(到别的注册中心注册自己),
一、代码实现
还是使用上篇文章中的eureka服务例子,在此基础上我们进行修改:
在eureka-server项目中新增 application-peer.properties
server.port=8666 spring.application.name=eureka-server eureka.instance.hostname=127.0.0.1 # 留存的服务实例低于多少比例进入保护模式 eureka.server.renewal-percent-threshold=0.5 #是否开始保护模式 eureka.server.enable-self-preservation=true #是否注册eureka, eureka.client.register-with-eureka=false #是否启用获取服务注册信息 eureka.client.fetch-registry=false #注册查询都依赖该地址,多个以逗号分隔 #eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8777/eureka/ eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka |
由于需要application-peer.properties和application.properties相互注册,因此在两个配置文件中,eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false这两个配置就不能要了,需要注释掉或删掉。
application.properties
server.port=8666 spring.application.name=eureka-server eureka.instance.hostname=127.0.0.1 # 留存的服务实例低于多少比例进入保护模式 eureka.server.renewal-percent-threshold=0.5 #是否开始保护模式 eureka.server.enable-self-preservation=true #是否注册eureka, eureka.client.register-with-eureka=true #是否启用获取服务注册信息 eureka.client.fetch-registry=true #注册查询都依赖该地址,多个以逗号分隔 #eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8777/eureka/ eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka |
2 配置两个启动服务
使用命令 mvn spring-boot:run 启动application.properties配置
使用命令 mvn spring-boot:run -Dspring.profiles.active=peer 启动application-peer.properties配置
可以看到在两个页面中
此处相互引用