Eureka 高可用

架构

在这里插入图片描述

服务端配置

新增配置文件

application-8761.properties

server.port=8761
#与下面的服务地址的主机号没有关联
eureka.instance.hostname=Eureka8761
#是否注册到eureka
eureka.client.registerWithEureka=true
#是否从eureka中拉取注册信息
eureka.client.fetchRegistry=true
##暴露eureka服务的地址
eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8762:8762/eureka/

#自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
eureka.server.enable-self-preservation=false

security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=admin

application-8762.properties

server.port=8762
eureka.instance.hostname=Eureka8762
#是否注册到eureka
eureka.client.registerWithEureka=true
#是否从eureka中拉取注册信息
eureka.client.fetchRegistry=true
##暴露eureka服务的地址
eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8761:8761/eureka/

#自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
eureka.server.enable-self-preservation=false

security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=admin

这里面涉及到了 Eureka 用户认证,如果不需要认证可以去掉相关配置。

如果不熟悉服务端配置,可以先看看 Eureka 服务端配置

系统文件配置

因为是在一台电脑上模拟2台服务器,所以要更改电脑的系统配置

进入文件夹 C:\Windows\System32\drivers\etc

更改 host 文件
在这里插入图片描述
添加行
127.0.0.1 localhost Eureka8761 Eureka8762

maven 打包

如果不会 maven 打包,可以参考 Maven 打包可执行 jar,各种报错怎么办?

启动 jar

在 jar 包位置下打开命令行
在这里插入图片描述

java -jar springcloud-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=8761

同样的方法再打开一个

java -jar springcloud-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=8762

查看结果

在这里插入图片描述
在这里插入图片描述

客户端配置

如果不熟悉基本的客户端配置,请看 Eureka 客户端配置

新增配置文件

bootstrap-cluster.properties

其它不变,只需改变

eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8761:8761/eureka/,http://admin:admin@Eureka8762:8762/eureka/

maven 打包

启动 jar

java -jar micro-web-1.0-SNAPSHOT.jar --spring.profiles.active=cluster

查看结果

在这里插入图片描述

与 zookeeper 相比

建议先阅读文章 zookeeper 与分布式系统

CAP 理论指出,一个分布式系统不可能同时满足 Consistency (一致性)、Availability (可用性)和 Partition tolerance (分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在一致性可用性之间进行权衡。在此,zookeeper 保证的是 CP,而 eureka 则保证 AP。

zookeeper 保证一致性,放弃可用性

当 master 节点因为网络故障与其他节点失去联系时,剩余节点会重新进行 leader 选举。问题在于,选举 leader 的时间太长,30 ~ 120s, 且选举期间整个 zk 集群都是不可用的,这就导致在选举期间注册服务瘫痪。

zookeeper 由于 leader 选举的关系,至少 3 台机器才能做集群,且至少 2 台处于工作状态。

eureka 保证可用性,放弃一致性

eureka 服务器各个节点都是平等的,只要还有一个节点挂掉不会影响正常节点的工作。

eureka 2 台机器就可以做集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值