首页 > 科技 > 正文

微服务注册中心为什么推荐使用Consul? 一、Eureka不建议使用 二、Consul与Zookeeper的区别

日期:2019-11-22 07:57:58   来源:互联网   编辑:小TT   阅读人数:538
一、Eureka不建议使用在选型微服务注册中心时,一定要长远考虑,SpringCloud提供了Eureka作为服务注册中心,我们可以开箱即用,但是,对于服务注册中心随着业务需求的不断变化,对服务注册中

一、Eureka不建议使用

在选型微服务注册中心时,一定要长远考虑,SpringCloud提供了Eureka作为服务注册中心,我们可以开箱即用,但是,对于服务注册中心随着业务需求的不断变化,对服务注册中心提出了更高要求,Eureka就不太适合了,看到“Eureka 2.0 开源工作宣告停止,继续使用风险自负”

微服务注册中心为什么推荐使用Consul? 一、Eureka不建议使用 二、Consul与Zookeeper的区别(图1)

这意味着如果者继续使用作为 2.x 分支上现有工作 repo 一部分发布的代码库和工件,则将自负风险,对此,专家建议者尽快将相关业务迁移到 Consul/ZooKeeper/Etcd等工具上。

二、Consul与Zookeeper的区别

Consul是一个在国外流行的服务发现和配置共享的服务软件。本文翻译自Consul的文档,文中重点讲述:在与主流同类软件ZooKeeper、Doozerd以及Etcd比较时,Consul的优势所在。

ZooKeeper、Doozerd、Etcd在架构上都非常相似,它们都有服务节点(server node)而这些服务节点的操作都要求达到节点的仲裁数(通常,节点的仲裁数遵循的是简单多数原则)此外,它们都是强一致性的,并且提供各种原语。通过应用程序内部的客户端lib库,这些原语可以用来构建复杂的分布式。

Consul在一个单一的数据中心内部使用服务节点。在每个数据中心中,为了Consule能够运行,并且保持强一致性,Consul服务端需要仲裁。然而,Consul原生支持多数据中心,就像一个丰富gossip连接节点和客户端一样。

当提供K/V存储的时候,这些具有大致相同的语义,读取是强一致性的,并且在面对网络分区的时候,为了保持一致性,读取的可用性是可以牺牲的。然而,当应用于复杂情况时,这种差异会变得更加明显。

这些提供的语义对人员构建服务发现很有吸引力,但更重要的是,强调人员要构建这些特性。ZooKeeper只提供一个原始的K/V值存储,并要求人员构建他们自己的来提供服务发现功能。相反的是,Consul提供了一个坚固的框架,这不仅仅是为了提供服务发现功能,也是为了减少推测工作和工作量。客户端只需简单地完成服务注册工作,使用一个DNS接口或者HTTP接口就可以执行工作了,而其他则需要你定制自己的解决方案。

一个令人信服的服务发现框架必须包含健康检测功能,并且考虑失败的可能性。要是节点失败或者服务故障了,即使人员知道节点A提供Foo服务也是没用的。Navie利用的是心跳、周期性更新和TTLs,这些不仅需要工作量与节点数量成线性关系,并且对的固定数量提出了要求。此外,故障检测窗口的存活时间至少要和TTL一样长。

ZooKeeper提供了临时节点,这些临时节点就是K/V条目,当客户端断开连接时,这些条目会被删除。虽然这些临时节点比一个心跳更高级,但仍存在固有的扩展性问题,并且会增加客户端的复杂性。与ZooKeeper端连接时,客户端必须保持活跃,并且去做持续性连接。此外,ZooKeeper还需要胖客户端,而胖客户端是很难编写,并且胖客户端会经常导致调试质询。

Consul使用一个完全不同的架构进行健康检测。Consul客户端可以运行在集群中的每一个节点上,而不是拥有节点,这些Consul客户端属于一个gossip pool,gossip pool提供了一些功能,包括分布式健康检测。gossip协议提供了一个高效的故障检测工具,这个故障检测工具可以应用到任意规模的集群,而不仅仅是作用于特定的组。同时,这个故障检测工具也支持在本地进行多种健康检测。与此相反,ZooKeeper的临时节点只是一个非常原始的活跃度检测。因为有了Consul,客户端可以检测web是否正在返回200状态码,内存利用率是否达到临界点,是否有足够的数据存储盘等。此外,ZooKeeper会暴露的复杂性给客户端,为了避免ZooKeeper出现的这种情况,Consul只提供一个简单HTTP接口。

本文相关词条概念解析:

客户端

客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。

  • 网友评论
返回顶部