SpringCloud服务多实例注入Consul挂掉问题

本文探讨了SpringCloud结合Consul进行服务注册时出现的实例名冲突问题,特别是针对1.2.x版本中多实例注册的问题。文章分析了问题产生的原因,并提供了解决方案,即通过配置自定义实例ID来确保每个实例的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信大家在使用SpringCloud服务的发现与注册,都会对Eureka、Zookeeper、Consul熟悉吧。18年7月份爆出了Eureka2.0不在对外开源的消息。相信会有一部分程序猿逐渐往Consul发展。这其中也包含小生我。

问题

SpringCloud+1.2.x时候最严重的一个问题,就是多实例注册的问题.

原因概述

主要原因是SpringCloud中Consul在注册的时候实例名采用了:服务名-端口号{spring.application.name}-{server.port})的值,可以看到这个实例名如果不改变端口号的情况下,实例名都是相同的。由于Consul对实例唯一性的判断标准也有改变,在老版本的Consul中,对于实例名相同,但是服务地址不同,依然会认为是不同的实例。在Consul 1.2.x中,服务实例名成为了集群中的唯一标识。

解决方法

通过配置 spring.cloud.consul.discovery.instance-id 参数来实例命令规则。利用随机数来控制实例名。

  spring.cloud.consul.discovery.instance-id=${spring.application.name}-${random.int[10000,99999]}

效果图

! ! ! 效果图中的错误不必关注,那是因为外网问题

SpringCloud注入与注册类别简单介绍

FeatureConsulzookeepereuerka
服务健康检查服务状态,内存,硬盘等(弱)长连接,keepalive可配支持
多数据中心支持
kv存储服务支持支持
一致性raftpaxos
capcacpap
使用接口(多语言能力)支持http和dns客户端http(sidecar)
watch支持全量/支持long polling支持支持 long polling/大部分增量
自身监控metricsmetrics
安全acl /httpsacl
spring cloud集成已支持已支持已支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

践者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值