服务需要注册到注册中心才能提供给服务调用者订阅使用,服务化中注册中心是不可缺少的一个组件,目前比较流行的注册中心有nacos/zookeeper/eureka/consul等,下面从几个方面对这些注册中心中的一些做下简要的对比。
1.数据模型
zookeeper是以一种抽象的kv健值对的为数据模型,eureka和consul则是到了实例级别,nacos则是服务-集群-实例的三层模型。
2.数据一致性
consol/zk和nacos能满足cp,所以能保证一致性,而eureka是满足了ap,保证最终一致性。
3.健康检查
zk和eureka使用ttl的机制是想心跳做健康检查,nacos也是采用的心跳检查,也会有客户端上报。服务端健康检查通用采用的方式有tcp端口探活和http接口检查。
4.性能和容量
zk在大量服务上下线是不太稳定,eureka当服务数达到5000时也会不稳定,设置crash,当然一般服务数到1000的也不多。nacos能支持上10万的服务数。
5.易用性
zk易用性比较差,客户端使用复杂,也没有admin后台管理。eureka和nacos则又很友好的客户端和admin。
6.集群扩展性
zk使用zab协议,只能单点写,故扩展困难。eureka是点对点,故能很好的支持集群扩展,不过集群到了一定规模,性能有问题。nacos则能很好的支持集群的扩展,还能很好的同步数据。