springCloud eureka高可用

springCloud eureka高可用,第1张

springCloud eureka高可用

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指:通过设计减少系统不能提供服务的时间。
 eureka 注册中心怎么高可用?答案是:对等复制,即 Peer to Peer 模式,副本之间不分主从,任何副本都可以接收写 *** 作,然后每个副本之间相互进行数据更新。
 分为两部分
 第一部分:服务端的高可用

1.代码实践,创建一个 eureka-server-ha 高可用注册中心服务端,客户端只要向多个服务端注册即可,大部分代码和 eureka-server 一样,配置文件不一样了,需要多个配置文件结合,启动 eureka-server-ha 项目时,指定使用那个配置文件。
假设为了达到高可用,我们需要启动3个 eureka-server 节点,3个节点的实例名分别是 peer1、peer2、peer3,它们之间相互注册,如:peer1向peer2、peer3注册,peer2向peer1、peer3注册,peer3向peer1、peer2注册来达到高可用

创建一个 bootstrap.properties,在启动项目时,它里面的配置会优先加载,它里面配置security的帐号密码

peer1 使用10025端口,对应application-peer1.properties

peer2 使用10026端口,对应application-peer2.properties

peer3 使用10027端口,对应application-peer3.properties

windwos 下 peer 需要修改 C:WindowsSystem32driversetchosts 文件,在里面添加peer1-3的映射
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3

这里分别贴出各配置文件代码:
#bootstrap.properties 配置登录的用户名和密码
spring.security.user.name=zy
spring.security.user.password=zy123

# application-peer1.properties
server.port=10025
spring.application.name=eureka-server-ha
spring.profiles.active=peer1
eureka.instance.hostname=peer1
eureka.client.registerWithEureka=true
# peer1 向 peer2、peer3注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer2:10026/eureka/,http://zy:zy123@peer3:10027/eureka/

#application-peer2.properties
server.port=10026
spring.application.name=eureka-server-ha
spring.profiles.active=peer2
eureka.instance.hostname=peer2
eureka.client.registerWithEureka=true
# peer2 向 peer1、peer3注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer3:10027/eureka/

#application-peer3.properties
server.port=10027
spring.application.name=eureka-server-ha
spring.profiles.active=peer3
eureka.instance.hostname=peer3
eureka.client.registerWithEureka=true
# peer3 向 peer1、peer2注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer2:10026/eureka/

cd 打包目录,否则会找不到jar,cmd启动命令如下:
java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

2.eureka-client 只需修改注册中心的地址即可,配置如下:
server.port=9600
spring.application.name=eureka-client
eureka.instance.prefer-ip-address=true
#eureka 注册中心高可用配置
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer2:10026/eureka/,http://zy:zy123@peer3:10027/eureka/

OK,注册中心的高可用已经完成,3个节点,挂掉一个并没有影响,还有2个节点能提供服务

第二部分:客户端的高可用

我们已经有了三台服务端了商品服务、订单服务、服务中心,为了展示目前的效果,我们再启动一个商品服务。
首先我们修改goods中的application.yml的端口号为8081,
然后点击顶部的模块选择,点击Eidt Configurations 
依次修改名称为GoodsApplication01,MainClass选择GoodsApplication,Use classpath of module选择goods,点击Apply后选择OK完成

然后,在顶部选择刚才创建的GoodsApplication01并启动,现在,我们可以看到,已经启动了四个服务:
等到启动完成后,GoodsApplication01会在服务中心注册一个新的商品服务,我们现在打开http://127.0.0.1:7000/会发现服务中心已经有两个注册的服务了,此时访问订单服务,一切正常

现在,我们模拟单台服务故障,我们手动关闭GoodsApplication01
现在,再次访问订单服务仍然没有问题,实际上,提供商品服务的一台服务器已经故障了 注册的服务中也只剩下一个了,但是并没有影响我们的业务访问。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5712960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存