注册中心技术选型

2024-09-02 08:36
文章标签 技术 注册 中心 选型

本文主要是介绍注册中心技术选型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

优质博文:IT-BLOG-CN

市面上流行的开源注册中心很多,耳熟能详的有EurekaZookeeperNacosConsul。我们在选型的时候也主要从这四个组件中进行筛选。下面就对我们内部的讨论内容进行整理:

第一个维度:开源公司的实力

EurekaNetflix公司出品的一款注册中心,Netflix是一家美国公司,主要做在线影片租赁提供商。嗯…,类似于爱奇艺吧。2012-2014开源,发布了一个release版本;Spring Cloud是基于Netflix Eureka做了二次封装。Eureka提供官方的控制台来查询服务注册情况。但是,Eureka 2.0在2018年宣布停止开发,但毕竟是开源的,所以有一群小伙伴还在维护着,但是不会有新功能的添加,它们主要是对目前版本的bug的修复。比较巧的是Nacos18年开源了。Eureka服务实例规模在5000左右的时候,就已经出现服务不可用的问题(我们不选择它的主要原因),甚至在压测的过程中,如果并发的线程数过高,就会造成Eureka crash。不过如果服务规模在1000上下,几乎目前所有的注册中心都可以满足。但是它也有优点就是稳定,稳定,像银行这种微服务还是比较适合的。不选它的原因是源码无更新,没有新功能。同时,当并发和注册用户达到一定量级的时候就会出现性能问题和不支持K8S

ZookeeperGoogleChubby一个开源的实现,后来托管到Apache,于2010年11月正式成为Apache的顶级项目。我们也习惯性的称它为动物园。在大数据领域极为广泛,是HadoopHbase的重要组件。它是一个为分布式应用提供服务的软件,提供的功能包括:配置维护、域名服务、分布式同步等等。是一款经典的服务注册中心产品(虽然它最初的定位并不在于此)在很长一段时间里,它是国人在提起RPC服务注册中心时心里想到的唯一选择,这很大程度上与Dubbo在中国的普及程度有关。不选它的原因是不能与SpringCloud集成,同时ZooKeeper使用的ZAB协议,由于是单点写,在集群扩展性上不具备优势。

Nacos是国产的组件,由阿里巴巴在2018年开源,2019年1.0发布。此刻,应该有掌声,哈哈。NacosDynamic Naming and Configuration Service的缩写,动态命名和配置服务。Nacos是阿里开源的注册中心+配置中心(配置中心我们使用的是携程的阿波罗,这个后面聊)服务。Nacos提供官方的控制台来查询服务注册情况,但如果在公司,一般只有运维大佬有这个权限访问控制台来对里面的服务删除等危险操作,像我们公司单独开发了一套Nacos控制台管理,权限对开发是比较小的,一些毁灭性的权限,是不会给它们分配的。 后续还会继续增强控制台的能力,增加控制台登录和权限的管控,监控体系和 Metrics的暴露。Nacos 服务实例注册的支撑量约为100万,服务的数量可以达到10万以上。因为Nacos服务之间通过Raft算法保证一致性,所以建议Nacos部署的节点数为大于 3 的奇数。我们最终也是选择使用Nacos作为注册中心。

ConsulHashiCorp公司出品的开源工具,使用Go语言编写,也是一家美国公司,致力于为企业提供服务(它牛逼的功能没有对外开源,是对企业收费的)。Consul遵循CAP原理中的CP原则(跟ZK保持的一样),保证了强一致性和分区容错性。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为ConsulRaft协议要求必须过半数的节点都写入成功才认为注册成功 ;在Leader挂掉了之后,重新选举出 Leader之前会导致Consul服务不可用。不选择的原因,本身就是基于CP舍弃了A,而我们看中的就是A(有效性)。

声明:2020年5月29日禁止HashiCorp[Consul的公司]在中华人民共和国销售或以其他方式提供企业版本的产品,包括Consul企业版。目前不涉及到开源产品。

第二个维度:社区活跃度

Eureka核心代码停滞在2年前,源码地址【GitHub】根据下图我们得到的数据是:关注该项目的有 961次,点赞的9.4k,拉取项目次数 2.7k。我们看项目commit的时间都是比较旧的了,目前开源社区有人维护,所有偶尔也会有代码提交,基本都是bug的修复。

2.0放弃维护声明如下,1.x 相对稳定。如果你们还在使用,后续有必要迁移到其他开源微服务注册中心【链接】。

Zookeeper持续更新,源码地址 【GitHub】根据下图我们得到的数据是:关注该项目的有 661次,点赞的8.2k,拉取项目次数 5.2k。拉取的比Eureka多,当时国内流行 RPC分布式调用的时候,还是很多的。项目在2小时前也有代码提交,还是很活跃的。只是不太适合作为我们目前说的微服务注册中心。

Nacos持续更新,源码地址【GitHub】根据下图我们得到的数据是:关注该项目的有 750次,点赞的12.6k,拉取项目次数 4k。18年开源的,但是目前从数据上看是未来微服务开发的趋势。据我了解目前很多公司,有能力迁移的都从Eureka迁移到了Nacos,因为它们遇见了性能问题。代码更新也是前一天就有更新,这里说下阿里的坏毛病,就是喜欢改项目名称或者就不维护了(借鉴Dubbo等)但是微服务这块大家就不用怕了,因为它托管给了SpringCloud了,也就是SpringCloudAlibaba。嗯…还是值得信赖的。其实,Nacos基本都是我们国内的公司再用,但我相信很快它还是能够在国外打下一片江山,毕竟是经过阿里双十一洗礼过的中间件。

Nacos 开发团队:阿里巴巴、虎牙直播,都是中国人就贴出来。详细信息自己可以上官网看看 【链接】

Nacos 1.0发布时间点,2019.4.10 正式发布1.0 版本。

Consul持续更新,源码地址【GitHub】根据下图我们得到的数据是:关注该项目的有 985次,点赞的19.4k,拉取项目次数 3.3k。其实很多人没怎么听过,但是使用的也不少,因为使用它的基本都是国外的公司,ConsulNacos其实很像,我们在后面有一张对比图大家也能看到两者差别不大,但Nacos还是比Consul牛逼。嗯…打压下大家的心情,其实,Consul牛逼的功能没有开源,哈哈。是付了钱才能用的。。

第三个维度:社区用户群

EurekaConsul在2014开源,时间早,存在大量用户,中文文档资料也比较丰富。
Nacos在2018开源,2019发布1.0版本,比较年轻,社区用户以国内为主,中文文档资料也比较丰富。目前市面上用户群:阿里巴巴、虎牙直播、中国工商银行、爱奇艺、中国平安、平安科技、浙江农信、贝壳、丰巢、百世快递、汽车之家等。平安科技根据需求将EurekaNacos都进行了使用。是不是你们的公司也在里面,骄傲一波。。如果没有,点这个链接Who is Using

Zookeeper开源的比较早 2010年就开源,目前用户量都来自大数据那边,中文文档也比较丰富。这个就留给大数据大小伙伴,这里就不好好介绍了。

Spring Cloud 生态整合: 得到Spring Cloud开源组织的认可的有两个:
【1】Spring Cloud Alibaba(鼓掌):链接
【2】Spring Cloud Netflix:链接

第四个维度:成熟稳定性

RESTful API支持:Eureka&Nacos
■ 都有RESTful API支持,可以通过定制化开发,巡检注册中心的稳定性;
Nacos Open API的更丰富一些;
Eureka Restful 参考地址
Nacos Restful 参考地址

Nacos兜底策略:选Nacos就对了
■ 人员招聘:跟进开源社区,技术交流;
Nacos注册中心,健康检查:
 – 服务实例的健康状态;
 – 服务实例的数量(包括健康、不健康);
 – 服务节点的健康状态;

其实选择用哪个注册中心的时候,都是从业务的角度考虑的,所以以后选型的时候,带着这张表就解决一大半问题:

功能NacosEurekaConsulZookeeper
协议CP+APAPCPCP
负载均衡weight/metadata/SelectorRabbonFabio-
监听机制支持支持支持不支持
自动注销实例支持支持不支持支持
雪崩保护
心跳检测TCP/HTTP/MYSQL/Client BeatClient BeatTCP/HTTP/gRPC/CmdKeep Alive
访问协议HTTP/DNSHTTPHTTP/DNSTCP
多数据中心支持支持支持不支持
SpringCloud集成支持支持支持不支持
跨注册中心同步支持不支持支持不支持
K8S集成支持不支持支持不支持
Dubbo集成支持不支持不支持支持

第五个维度:负载均衡的策略

其实,负载均衡并不算是传统注册中心的功能。我们都知道服务发现的流程是先从注册中心获取到服务的实例列表,然后再根据自身的需求,来选择其中的部分实例或者按照一定的流量分配机制来访问不同的服务提供者,所以注册中心本身一般不参与服务消费者的访问策略。EurekaZooKeeper包括Consul,本身都没有去实现可配置及可扩展的负载均衡机制,Eureka的负载均衡是由Ribbon来完成的,而Consul则是由Fabio做负载均衡。

重点来了,阿里巴巴根据自己的业务场景,必须使用的相反的思路。服务消费者并不关心所访问的服务提供者的负载均衡策略,消息者要的是以最高效的方式访问提供者的服务。服务提供者则需要非常关注自身被访问的流量的调配,原因就是阿里巴巴内部服务访问流量巨大,稍有不慎就会导致流量异常压垮服务提供者的服务。因此服务提供者需要能够完全掌控服务的流量调配,并可以动态调整。服务端的负载均衡,给服务提供者更强的流量控制权,但是无法满足不同的消费者希望使用不同负载均衡策略的需求。而不同负载均衡策略的场景也确实存在。客户端的负载均衡则提供了这种灵活性,并对用户扩展提供更好的支持。但是客户端负载均衡存在的问题就是可能会导致服务提供者出现热点,或者压根就拿不到任何服务提供者。所以根据我们的场景只能选基于流量限制的 Sentinel,后面再好好唠这个。

生态中大礼包组件: Spring Cloud AlibabaNetflix生态大礼包对比

组件SpringCloud 官方SpringCloud NetflixSpringCloud Alibaba我们的选择
分布式配置SpringCloud ConfigArchaiusNacosCtrip Apollo(携程)
服务注册和发现-Eureka(停止更新)NacosEureka/Nacos?
服务熔断-Hystrix(维护状态)SentinelSentinel
服务路由GatewayZuul(维护状态)-Gateway/Zuul
分布式消息RabbitMQ-RocketMQ
负载均衡LoadBalancerRibbonF5、Ribbon
分布式事务--Seata最终事务一致性

这篇关于注册中心技术选型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129496

相关文章

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的