注册中心开源方案选型
目录
- 1、服务注册中心分类
- 2、CAP理论
- 3、各注册中心特性对比
- 4、各方案说明
1、服务注册中心分类
应用内:直接集成到应用中,依赖于应用自身完成服务的注册与发现,最典型的是Netflix提供的Eureka,还可以基于ZooKeeper或者Etcd自行实现一套服务注册机制
应用外:把应用当成黑盒,通过应用外的某种机制将服务注册到注册中心,最小化对应用的侵入性,比如Airbnb的SmartStack,HashiCorp的Consul
DNS:将服务注册为DNS的SRV记录,严格来说,是一种特殊的应用外注册方式,SkyDNS是其中的代表
2、CAP理论
CAP理论是分布式架构中重要理论:
- 一致性(Consistency):所有节点在同一时间具有相同的数据;
- 可用性(Availability) :保证每个请求不管成功或者失败都有响应;
- 分隔容忍(Partition tolerance) :系统中任意信息的丢失或失败不会影响系统的继续运作。
在分布式系统内,P 是必然的发生的,不选 P,一旦发生分区错误,整个分布式系统就完全无法使用了,这是不符合实际需要的。所以,对于分布式系统,我们只能能考虑当发生分区错误时,如何选择一致性和可用性。
根据一致性和可用性的选择不同,开源的分布式系统往往又被分为 CP 系统和 AP 系统。
当一套系统在发生分区故障后,客户端的任何请求都被卡死或者超时,但是,系统的每个节点总是会返回一致的数据,则这套系统就是 CP 系统,经典的比如 Zookeeper。
如果一套系统发生分区故障后,客户端依然可以访问系统,但是获取的数据有的是新的数据,有的还是老数据,那么这套系统就是 AP 系统,经典的比如 Eureka。
3、各注册中心特性对比
特性 | Nacos | Eureka | Consul | ETCD | Zookeeper | CoreDNS |
---|---|---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | CP | CP | — |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | Client Beat | Keep Alive | — |
负载均衡策略 | 权重/ metadata/Selector | Ribbon | Fabio | 轮询 | - | RoundRobin |
雪崩保护 | 有 | 有 | 无 | 无 | 无 | 无 |
自动注销实例 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
访问协议 | HTTP/DNS | HTTP | HTTP/DNS | HTTP/GRPC | TCP | DNS |
监听支持 | 支持 | 支持 | 支持 | 支持(3.0) | 支持 | 不支持 |
安全 | acl | - | acl / https | https | acl | - |
多数据中心 | 支持 | 支持 | 支持 | - | 不支持 | 不支持 |
作为配置中心 | 支持 | 不支持 | 支持 | 支持 | 支持 | 不支持 |
跨注册中心同步 | 支持 | 不支持 | 支持 | - | 不支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
Dubbo集成 | 支持 | 不支持 | 支持 | 支持 | 支持 | 不支持 |
K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 | 不支持 |
其中,- 表示不确定,不是不支持,有知道的大佬可以告知我补充一下!
实践中,在 CAP 的权衡中,注册中心的可用性比数据强一致性更宝贵,所以整体设计更应该偏向 AP,而非 CP,注册中心不能因为自身的任何原因破坏服务之间本身的可连通性
4、各方案说明
Eureka
Eureka 遵循AP原理中的「AP」原则,Eureka的集群中,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性),当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。
Eureka2.0已经停止维护.
Consul
Consul 遵循CAP原理中的「CP」原则,保证了强一致性和分区容错性。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 ;在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。
Zookeeper
Zookeeper 遵循CAP原理中的「CP」原则,任何时候对 Zookeeper 的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是 Zookeeper 不能保证每次服务请求都是可达的,不能保证服务可用性。
ETCD
ETCD遵循CAP原理中的「CP」原则,在选主完成前会导致服务不可用。
Nacos
Nacos 的注册中心支持 CP 也支持 AP。
参考链接:
https://glory.blog.csdn.net/article/details/100023415
https://blog.csdn.net/u012921921/article/details/106521181
https://blog.csdn.net/qq_42046105/article/details/123436832
https://blog.csdn.net/weixin_41605937/article/details/121885248
如有不对,烦请指出,感谢~
注册中心开源方案选型相关推荐
- 蚂蚁金服服务注册中心数据一致性方案分析 | SOFARegistry 解析
SOFAStack (Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,是在金融场 ...
- 边缘计算云原生开源方案选型比较
作者 | LanLiang 来源 | https://zhuanlan.zhihu.com/p/353429279?utm_source=wechat_session&utm_medium=s ...
- 阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你!
1.前言 微服务的注册中心目前主流的有以下五种: Zookeeper Eureka Consul Nacos Kubernetes 那么实际开发中到底如何选择呢?这是一个值得深入研究的事情,别着急,今 ...
- Slime Meshregistry 开源,化解服务网格多注册中心兼容之痛
背景 服务发现是微服务治理的核心环节.传统的微服务架构采用Consumer/Provider模式,Provider将服务信息注册到注册中心,Consumer通过注册中心发现Provider的服务信息. ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(三:注册中心、补充CAP定理、BASE 理论)~整起
架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(一:总览篇) 网关开了个头 你请求来了,我网关把你拦截住,验明正身,加以控制,协助你调用服务,完成请求的调用.但是这个过程中,为了解耦和或者 ...
- 源码 状态机_[源码阅读] 阿里SOFA服务注册中心MetaServer(1)
[源码阅读] 阿里SOFA服务注册中心MetaServer(1) 0x00 摘要 0x01 服务注册中心 1.1 服务注册中心简介 1.2 SOFARegistry 总体架构 1.3 为什么要分层 0 ...
- 阿里巴巴微服务注册中心ConfigServer
1.Eureka1.0 架构存在的问题 Eureka 作为 Netflix 公司力推和 SpringCloud 微服务标配的注册中心开源解决方案,其 Eureka 2.0 (Discontinued) ...
- [源码阅读] 阿里SOFA服务注册中心MetaServer(1)
0x00 摘要 SOFARegistry 是蚂蚁金服开源的一个生产级.高时效.高可用的服务注册中心.本系列将带领大家一起分析其MetaServer的实现机制,本文为第一篇,介绍MetaServer总体 ...
- 这个Dubbo注册中心扩展,有点意思
今天想和大家聊聊Dubbo源码中实现的一个注册中心扩展.它很特殊,也帮我解决了一个困扰已久的问题,刚刚在生产中用了,效果很好,迫不及待想分享给大家. Dubbo的扩展性非常灵活,可以无侵入源码加载自定 ...
- Dubbo-gok8s注册中心设计方案与实现
Dubbo-go k8s注册中心设计方案与实现 随着云原生的推广,越来越多的公司或组织将服务容器化,并将容器化后的服务部署在k8s集群中. 今天这篇文章将会介绍dubbo-go将k8s作为服务注册中心 ...
最新文章
- equals方法变量和常量位置区别
- 使用onenote记HTML笔记,如何在Windows 10中使用OneNote做笔记
- SQL 存储过程入门(事务)
- Android控制ScrollView滑动速度
- tornado基本使用一
- Google全球副总裁Vint Cerf:中国物联网发展不得不关注的几大问题
- MTK TP驱动代码调用流程
- Excel高手都会的Shift快捷键7个用法,让工作效率翻倍
- java 状态模式 同步_多人联机射击游戏中的设计模式应用(二):观察者模式,单例模式,状态模式,适配器模式...
- Segment Routing入门
- 第32期:索引设计(索引设计详细规范)
- IE中点击链接下载EXCEL文件直接以乱码方式打开解决
- wzoi‘‘买苹果‘‘
- html 苹果 地图,为什么苹果手机自带的地图是高德而不是谷歌?
- drawableLeft改变图片的大小
- 使用VBA对Excel中的单元格按色阶赋颜色
- 快速上手Matlab二维画图
- 人人皆可做的抖音108个赚钱项目:抖音美妆行业赚钱术(10)
- 针对电子企业的仓储需求,提出WMS仓储管理系统解决方案
- python turtle什么意思_python的turtle模块可以画什么
热门文章
- MariaDB ColumnStore初探(1):安装、使用及测试
- matlab 平行四边形,matlab计算四边形面积
- 问题与解决_IDEA-> Project Structure -> Artifacts-> ‘项目名‘ module: ‘Web‘ facet resources 显示红色
- Pycharm中.py文件调用其他.py文件的函数
- 【机器学习】金融风控评分卡建模全流程!
- Hifn容量优化卡成功支持Bull公司备份方案
- MT6572 耳机驱动笔记
- Hej Stylus for Mac(手写笔画图工具)
- 「效率工具」HHKB的常用快捷键
- linux 进程堆管理,对Linux堆内存释放的总结