服务器 > 服务器 > 微服务

Nacos、Eureka、Zookeeper、Consul对比

87人参与 2024-08-06 微服务

开发中,经常需要对微服务进行管理,所以需要引入一些服务治理的中间件,用于注册、发现服务,常见的服务治理中间件为

服务治理中间件

【1】nacos
【2】eureka
【3】zookeeper
【4】consul(consul 所在的 hashicorp 公司宣布,不允许中国境内使用该公司旗下的产品和软件。)

对比一览表

名称nacoseurekazookeeperconsul
开发语言javajavacjava
功能特性服务注册&发现、配置管理、流量控制、dns、动态dns服务注册&发现数据存储、协调服务注册&发现、配置管理
应用场景k8s、service mesh、springcloudspringcloudhadoop分布式集群k8s、springcloud
cap理论cp/apapcpcp
运行模式自主部署、集群模式自主部署、集群模式需独立部署、启动集群
其它openapi标准、支持多语言spring开发、易于集成
开发者阿里巴巴netfilxapache基金会

cap理论

cp:consistency and partition tolerance 一致性与分区容错度
ap:availability and partition tolerance 可用性与分区容错度

cap三者是相互矛盾的!

一个分布式系统,不能同时将cap都很好的满足,只能满足其中两者,所以可以使用ap策略、也可以用cp策略

功能特性

nacos是一个全栈的解决方案,而支持服务发现、配置管理和流量管理等多个功能。
eureka专注于服务注册和发现、适用于springcloud体系。
zookeeper则是一个通用的分布式数据存储和协调系统,适用于大规模分布式系统的场景
consul与nacos基本相同

负载均衡

nacos 本身具备负载均衡能力,可以提供服务端负载均衡与客户端负载均衡。
zookeeper 不支持。
eureka 本身不支持,通过ribbon做负载均衡。
consul 本身不支持,通过fabio做负载均衡。

健康检查

服务端健康检查最常见的方式是 tcp 端口探测和 http 接口返回码探测,这两种探测方式因为其协议的通用性可以支持绝大多数的健康检查场景。zookeeper 和 eureka 都实现了⼀种 ttl(time to live)机制,就是如果客户端在⼀定时间内没有向注册中心发送心跳,则会将这个客户端摘除。

zookeeper 使用tcp的keepalive保持客户端和服务端的连接。
eureka 通过客户端心跳来确定客户端是否启动。
consul 通过check方法实现健康检查,check方法有五种:script + interval、http + interval、tcp+ interval、docker + interval、ttl。
nacos 既支持客户端的健康检查(keepalive、client beet),也支持服务端的健康检查(mysql命令等)。

性能与容量

影响读写性能的因素很多:⼀致性协议、机器的配置、集群的规模、存量数据的规模、数据结构及读写逻辑的设计等等。并非性能越高就越好,因为追求性能往往需要其他方面做出牺牲。

zookeeper 在写性能可以达到上万的 tps,容量从存储节点数来说可以达到百万级别。不过 paxos 协议限制了 zookeeper 集群的规模(3、5个节点)。当大量实例上下线时,zookeeper 的表现并不稳定,同时在推送机制上的缺陷,会引起客户端的资源占用上升,从而性能急剧下降。
eureka 在服务实例规模在 5000 左右的时候,就已经出现服务不可用的问题,甚至在压测的过程中,如果并发的线程数过高,就会造成 eureka crash。
nacos 在开源版本中,服务实例注册的支撑量约为 100 万,服务的数量可以达到 10 万以上。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

耗时3个月,线下访谈30+ csdn大佬,规划出了我的云原生学习路线

08-06

云原生和服务网格:最佳实践与案例分析

08-06

「微服务」微服务架构中的数据一致性

08-06

【漏洞防范与应对:从发现到修复的全攻略】Prometheus Pushgateway推送网关 存在未授权访问漏洞 ,处理过程详解!!!

08-06

入门级微服务项目搭建:六、集成Gateway

08-06

微服务:一篇博客带你学会Feign(远程调用、自定义配置、性能优化、常用方式)

08-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论