从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

13 | 开源服务注册中心如何选型?

Eureka
Consul
etcd
ZooKeeper
AP型注册中心
CP型注册中心
分区容错性
可用性
一致性
多IDC部署
集群部署
Consul Template
Registrator
Consul
客户端的Eureka Client
服务端的Eureka Client
Eureka Server
Consul
Eureka
注册中心解决方案选择的方向
CAP理论
以Consul为例
方法
开源注册中心Consul
Netflix开源的Eureka
思考题
选择开源注册中心解决方案要看业务的具体场景
数据一致性
高可用性
应用外注册与发现
应用内注册与发现
总结
注册中心选型要考虑的两个问题
两种主流的服务注册与发现解决方案
开源服务注册中心如何选型?

该思维导图由 AI 生成,仅供参考

上一期我给你讲了服务注册中心的落地实践,以及在实际应用中可能会遇到的问题和对应的解决方案。关于注册中心,如果你的团队有足够的人才和技术储备,可以选择自己研发注册中心。但对于大多数中小规模团队来说,我的建议是最好使用业界开源的、应用比较成熟的注册中心解决方案,把精力投入到业务架构的改造中,不要自己造轮子。
当下主流的服务注册与发现的解决方案,主要有两种:
应用内注册与发现:注册中心提供服务端和客户端的 SDK,业务应用通过引入注册中心提供的 SDK,通过 SDK 与注册中心交互,来实现服务的注册和发现。
应用外注册与发现:业务应用本身不需要通过 SDK 与注册中心打交道,而是通过其他方式与注册中心交互,间接完成服务注册与发现。
下面我会用两个业界使用比较成熟的注册中心开源实现,来讲解下应用内和应用外两种解决方案的不同之处。

两种典型的注册中心实现

1. 应用内
采用应用内注册与发现的方式,最典型的案例要属 Netflix 开源的 Eureka,官方架构图如下。
对着这张图,我来介绍下 Eureka 的架构,它主要由三个重要的组件组成:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

开源服务注册中心如何选型?本文介绍了开源注册中心的两种主流解决方案:应用内注册与发现和应用外注册与发现。针对这两种方案,分别以Netflix开源的Eureka和Consul为例进行了详细介绍。在选择注册中心解决方案时,需要考虑高可用性和数据一致性两个关键问题。针对高可用性,文章提到了集群部署和多IDC部署两种方法,并以Consul为例说明了如何保证注册中心的高可用性。对于数据一致性,文章介绍了CAP理论,并对CP型注册中心和AP型注册中心进行了对比。最后,根据业务场景的不同,给出了选择注册中心解决方案的建议。文章内容深入浅出,适合读者快速了解开源注册中心的选型问题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 正是那朵玫瑰
    看留言已经有同学贴出官方的解释了,我也同样的疑问老师是写错了么?consul是cp系统吧?在我做实验发现没有leader节点的情况下,consul是没法提供服务的,如果发生网络分区,少数派节点也无法提供服务的,不过consul官方提供三种数据一性的方式: default:默认模式,在脑裂情况下,也可以读取到值,但可能是旧值,这是一种权衡 consistent:强一致模式 stale:允许在没有leader的情况下也能读取到值,效率高,但是读取旧值的可能性非常大 所以consul怎么也不是CA系统!不知道理解是否正确,老师指点下!

    作者回复: 查阅了下官方文档,严格意义上讲算是CP,已修正。

    2018-09-20
    2
    36
  • 安小依
    zookeeper 推选leader 的时候,对外服务吗?

    作者回复: 不能,我理解

    2018-09-24
    3
  • mgxian
    其实基本上不存在ca系统 只要有网络连接 分区隔离 就一定存在了p 所以只有 ap cp 系统 也就是说在网络分区的情况下 只能 c和a 选择一个
    2018-09-20
    2
    22
  • mgxian
    Consul is opinionated in its usage while Serf is a more flexible and general purpose tool. In CAPterms, Consul uses a CP architecture, favoring consistency over availability. Serf is an AP system and sacrifices consistency for availability. This means Consul cannot operate if the central servers cannot form a quorum while Serf will continue to function under almost all circumstances.
    2018-09-20
    7
  • mgxian
    本专栏的最后 你可能会选择 service mesh istio 现在可以先观望
    2018-09-20
    6
  • 天择
    分布式系统不能保证节点之间网络总是畅通,因此一定假设有分区。有了分区不能放任某个分区不管,否则就失去分布式的意义了,因此要分区容忍。而要“分区容错”(P),就得让节点间数据共享和拷贝,这就需要时间。要一致性C,就得等数据拷贝完毕,这期间不能提供服务,只好牺牲A。要高可用A,就得时刻提供服务,没法等数据拷贝结束,就得牺牲C。因此,基本只有CP和AP两类系统。
    2021-09-05
    3
  • CAP 没P时CA共存 有P了C和A只能二选一 我们用的ZK,其他有待研究
    2019-06-14
    3
  • lvvp
    Consul注册中心不是高可用,前面文章中还介绍了Consul注册中心的高可用性,是不是矛盾了
    2018-10-25
    2
  • Stalary
    我们的服务正在拆分,也正在慢慢向容器化靠拢,想要用cloud的一套东西,但是不太清楚eureka和consul具体该怎么选形
    2018-09-20
    2
  • J.Smile
    eureka(AP)的毛病:只支持java语言,而consul(CP)支持多语言。 consul(CP):支持多种心跳监测机制保持服务提供者的服务注册和服务发现。 其实zk跟consul一样是CP系统,这两个的选型老师可以回答下吗?
    2020-11-09
    1
收起评论
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部