美文网首页
注册中心调研

注册中心调研

作者: 诣极 | 来源:发表于2018-01-28 15:36 被阅读0次

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

特性 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

相关文章

  • 注册中心调研

    根据目前开源或者比较流行的服务发现中间件进行比较: 服务健康检查 Eureka 使用时需要显式配置健康检查支持;Z...

  • Dubbo(学习中)

    Dubbo提供的注册中心 Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple...

  • Dubbo学习(二)注册中心及管理平台

    注册中心的选择 dubbo支持多种类型的注册中心: Multicast注册中心 Zookeeper注册中心 Red...

  • 微服务框架选择

    鉴于需要用阿里云来搭建服务,因此调研后,微服务组件选择如下:1)注册中心,暂定nacos,对比如下:

  • 注册中心

    consul

  • 注册中心

    etcd注册中心分布式一致性系统基于raft一致性协议 etcd使用场景服务注册和发现共享配置分布式锁Leader...

  • 注册中心

    ./consul agent -dev

  • 注册中心

    类结构图 RegistryCenter 为操作注册中心的顶层接口。CoordinatorRegistryCente...

  • 注册中心

    百发失一,不足谓善射;千里蹞步不至,不足谓善御;伦类不通,仁义不一,不足谓善学。学也者,固学一之也。一出焉,一入焉...

  • 注册中心

    注册中心是微服务架构中的通信中心,服务的消费端可以从中获取服务提供方的地址、状态等信息。 核心功能: 服务发现。服...

网友评论

      本文标题:注册中心调研

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