注册中心调研

根据目前开源或者比较流行的服务发现中间件进行比较:

特性 Consul zookeeper etcd eureka redis
健康检查 服务、内存
硬盘等状态
长连接 连接心跳 可配支持 连接心跳
多数据中心 支持 - - - -
KV存储 支持 支持 支持 - 支持
一致性 gossip paxos raft - raft
多语言 http/dns 支持 http/grpc http(sidecar) 支持
watch http/dns 支持 http/grpc http(sidecar) 支持
自身监控 metrics - metrics metrics -
安全 acl /https acl https auth
spring cloud 支持 支持 支持 支持 支持
实现语言 go java go java c
http/json api 支持 - 支持 - -

服务健康检查

Eureka 使用时需要显式配置健康检查支持;Zookeeper,Etcd, Redis 则在失去了和服务进程的连接情况下任务不健康,而 Consul 相对更为详细点,比如内存是否已使用了90%,文件系统的空间是不是快不足了。

多数据中心

Consul 通过 WAN 的 Gossip 协议,完成跨数据中心的同步;而且其他的产品则需要额外的开发工作来实现。

KV 存储服务

除了 Eureka ,其他几款都能够对外支持 k-v 的存储服务,所以后面会讲到这几款产品追求高一致性的重要原因。而提供存储服务,也能够较好的转化为动态配置服务。

对外提供服务的接入协议

Zookeeper的跨语言支持较弱,其他几款支持 http11 提供接入的可能。Euraka 一般通过 sidecar的方式提供多语言客户端的接入支持。Etcd 还提供了Grpc的支持。 Consul除了标准的Rest服务api,还提供了DNS的支持。

Watch的支持

Zookeeper 支持服务器端推送变化,Eureka 2.0(正在开发中)也计划支持。 Eureka 1,Consul,Etcd则都通过长轮询的方式来实现变化的感知。

自身集群的监控

除了 Zookeeper ,其他几款都默认支持 metrics,运维者可以搜集并报警这些度量信息达到监控目的。

安全

Consul,Zookeeper 支持ACL,另外 Consul,Etcd 支持安全通道https。

Spring Cloud的集成

目前都有相对应的 boot starter,提供了集成能力。

结论

Consul天然支持多数据中心,但是在获取services api的时候返回服务的名字和tag, 如果需要具体服务的信息需要再发起一次请求(请求次数太多),需要数百万Key-value的系统将受到高延迟和内存压力的影响。

Etcd3借鉴了zookeeper的优势,在此基础上提供了:

  • 动态集群成员重新配置
  • 高负载下的稳定读/写
  • 一个多版本并发控制数据模型
  • 可靠的关键监控,它从不悄悄地删除事件
  • 用于安全分布式共享锁的api
  • 使用多路复用socket连接

目前Etcd用于大名鼎鼎的项目K8中。

Eureka提供了一个弱一致的服务机制。当客户端向服务器注册时,该服务器将尝试复制到其他服务器,但不提供保证。服务注册有一个短的生存时间(TTL),要求客户端与服务器心跳。不健康的服务或节点将停止心跳,使他们超时并从注册表中删除。因为Euerka2目前github已经终止开发,目前维护不及时。

zookeeper新版本的bug: ZOOKEEPER-1159ZOOKEEPER-1576

因为dubbo开源已经实现了zookeeper和redis注册中心,因此剩余Etcd和Consul都是比较优秀开源中间件,考虑到etcd的新特性、使用广泛度和社区活跃度,近期先优先开发支持etcd3的注册中心。未来根据实际情况接入Eureka和Consul。

参考资料

  1. https://coreos.com/etcd/docs/latest/learning/why.html
  2. https://coreos.com/etcd/docs/latest/learning/api.html#watch-streams
  3. https://medium.com/@Imesha94/apache-curator-vs-etcd3-9c1362600b26
  4. https://www.consul.io/api/kv.html
  5. https://luyiisme.github.io/2017/04/22/spring-cloud-service-discovery-products/
  6. http://www.chinacloud.cn/show.aspx?id=19979&cid=16
  7. https://www.jianshu.com/p/6160d414dd5e
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353