美文网首页
SpringCloud服务多实例注入Consul挂掉问题

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

作者: 陈兄 | 来源:发表于2019-01-25 13:53 被阅读0次
image

相信大家在使用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]}

效果图

image

<span style="color:red;font-size:16px">! ! ! 效果图中的错误不必关注,那是因为外网问题</span>

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

Feature | Consul | zookeeper | euerka
--|---|--
服务健康检查 | 服务状态,内存,硬盘等| (弱)长连接,keepalive | 可配支持
多数据中心 | 支持 | — | —
kv存储服务 | 支持 | 支持 | —
一致性 | raft | paxos | —
cap | ca | cp| ap
使用接口(多语言能力) | 支持http和dns | 客户端 |http(sidecar)
watch支持 | 全量/支持long polling | 支持| 支持 long polling/大部分增量
自身监控 | metrics | — | metrics
安全 | acl /https | acl | —
spring cloud集成 | 已支持 | 已支持 | 已支持

相关文章

网友评论

      本文标题:SpringCloud服务多实例注入Consul挂掉问题

      本文链接:https://www.haomeiwen.com/subject/ukvmjqtx.html