「轻阅读」4大服务注册发现技术对比

今日编程 2019-12-18 17:09:11 ⋅ 839 阅读

技术对照表

CAP模型

CAP 这3个字母代表:

  • Consistence(一致性)
  • Availability(可用性)
  • Partition Tolerance(分区容错性)

在一个分布式系统中,这3者不可兼得。

由于网络的原因,分布式系统中 P 是必备的,意味着只能选择 AP 或者 CP。

CP 代表数据一致性是第一位的,AP 代表可用性是第一位的。

他们4个只有 Eureka 是 AP 的,Eureka 在数据不一致的情况下也可以使用,只要数据最终一致即可。

如果想更多的了解 CAP 可以参见:

架构设计中的 CAP 和 BASE 理论

数据一致性

ZAB 是 zookeeper 的原子广播协议,基于 Paxos 算法改的。

Raft 是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。

这两个算法都没毛病,都可以实现分布式一致性,只是实现方式不同。

Eureka 选择的是 AP,不要求强一致性,自然没有使用数据一致性算法。

Paxos 和 Raft 参考资料:

分布式一致性算法 Paxos

分布式一致性算法 Raft

多数据中心

就是多机房,只有 Consul 支持。

zookeeper 不支持多数据中心是指,如果你跨多个机房部署了一套 zookeeper,一旦出现网络划分,那么就不可用了。

Consul 是通过 Gossip 协议实现的。

Gossip 协议中的消息会以一传十、十传百的指数级速度在网络中快速传播。

网络中任何节点的异常都不会影响 Gossip 消息传播,分布式系统容错性极强。

Gossip 协议是去中心化的,所有节点对等,节点无需知道整个网络状况,只要网络是连通的,任意一个节点就可以把消息散播到全网。

Watch

Zookeeper 的 watch 实现比较简单,就是 TCP Ping。

Long Polling(长轮询)是拉模式,客户端每隔一段时间请求拉取一次数据。

客户端发起 Long Polling,如果服务端没有数据,会等待,直到服务端有数据,或者等待到超时,返回后,客户端会再次发起 Long Polling。

多语言支持

Zookeeper 多语言客户端比较成熟。

Consul 支持 DNS 比较有意思,如果你第一次看到可能不太理解。

DNS 方式允许应用程序使用服务发现,而无需与Consul进行任何高度集成。

例如,不需要向 Consul 发送 HTTP 请求,可以使用 DNS 服务器直接通过名字查找,如 redis.service.us-east-1.consul,就会自动转查找位于 us-east-1 这个数据中心提供 redis 服务的节点。

使用DNS的方式可以在程序中集成一个DNS解析库,也可以自定义本地的DNS Server。

自定义本地 DNS Server 是指将 .consul 域的请求全部转发到 Consul Agent。

服务健康检查

心跳方式比较简单,客户端上报自己的存活状态即可。

但存活不代表健康,例如一个应用的服务层没问题,但数据库连接故障了,那么就无法正常提供服务,这就是存活但不健康。

Eureka 支持服务自定义健康检查逻辑。

Consul 支持的很全面,可以配置服务自定义的健康检查接口地址,还有完善的管理界面,可以查看所有服务和节点的健康检查状态。



全部评论: 0

    我有话说:

    阅读」阿里云-开放平台高级技术家教你搭建微服务架构的四金刚利器

    孔凡勇,花名云狄,阿里云-开放平台高级技术家,对高并发、高性能、高可用、可伸缩的分布式系统架构设计有丰富经验,Cloud Native坚定拥护者,坚守开发一线打磨匠艺的架构师。

    阅读」Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

    要实现异构微服务体系间的共存或迁移,关键点在打通异构体系间的协议与服务发现,得益于 Dubbo 自身对多协议、多注册模型的支持

    阅读】为什么越来越多的系统在做服务化?

    脱离业务实际情况的架构都是耍流氓,所以不是所有系统都必须服务化,也不要为了服务化而服务化。

    阅读」“来我公司做技术总监吧” “要写代码吗?” “不写代码你来干嘛?”

    标题来源于一段真实的对话,老赵,小李都是我的朋友,我作为中间人介绍他们认识,我们约在上海码农圣地--张江某咖啡馆。

    阅读」京东商城交易系统的演进之路

    原文:https://www.toutiao.com/i6762874634867048963商城服务如图所

    阅读」移动端适配必须掌握的基本概念和适配方案

    随着技术发展,移动设备越来越流行,并且不同设备间屏幕尺寸和屏幕像素的差异,移动端开发面临着多分辨率适配的问题。

    阅读」消息总线(MQ)知多少

    消息总线(Message Queue,MQ),是一种跨进程的通信机制,用于在上下游之间传递消息。MQ是一种常见的上下游“逻辑解耦+物理解耦”的消息通信服务,消息发送上游只需要依赖MQ,逻辑上和物理上

    阅读」亿级用户的分布式数据存储解决方案

    分布式数据库和分布式存储是分布式系统中难度最、挑战最,也是最容易出问题的地方。互联网公司只有解决分布式数据存储的问题,才能支撑更多次亿级用户的涌入。

    阅读」图文并茂带你了解分布式架构的演进

    初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称LAMP

    阅读」微博推荐架构的演进

    微博两个核心基础点:一是用户关系构建,二是内容传播,微博推荐一直致力于优化这两点,促进微博发展

    阅读」推荐系统中信息增强的小技巧

    实用的推荐系统的构建经验,如何进行信息增强。

    阅读」为什么在做微服务设计的时候需要DDD?

    你的设计蓝图里为什么没有看到DDD的影子呢?

    阅读」如何构建可伸缩的Web应用?

    可伸缩性已经成为Web应用程序的DNA!

    阅读」大众点评是如何分表分库的?

    原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想