关于java:Consul服务注册中心

4次阅读

共计 3270 个字符,预计需要花费 9 分钟才能阅读完成。

Consul 服务注册核心

Netflix Eureka 2.X https://github.com/Netflix/eu…,但其实对国内的用户影响甚小,一方面国内大都应用的是 Eureka 1.X 系列,并且官网也在踊跃保护 1.X https://github.com/Netflix/eu…。

The existing open source work on eureka 2.0 is discontinued. The code base and artifacts that were released as part of the existing repository of work on the 2.x branch is considered use at your own risk.

Eureka 1.x is a core part of Netflix’s service discovery system and is still an active project.

翻译:

无关 eureka 2.0 的现有开源工作已进行。在 2.x 分支上作为现有工作资料库的一部分公布的代码库和工件被视为应用后果自负。

Eureka 1.x 是 Netflix 服务发现零碎的外围局部,依然是一个沉闷的我的项目。

尽管 Eureka,Hystrix 等不再持续开发或保护,然而目前来说不影响应用,不管怎么说感激开源,向 Netflix 公司的开源致敬。

另一方面 Spring Cloud 反对很多服务发现的软件,Eureka 只是其中之一,上面是 Spring Cloud 反对的服务发现软件以及个性比照。

常见的注册核心

  • Netflix Eureka
  • Alibaba Nacos
  • HashiCorp Consul
  • Apache ZooKeeper
  • CoreOS Etcd
  • CNCF CoreDNS
个性 Eureka Nacos Consul Zookeeper
CAP AP CP + AP CP CP
健康检查 Client Beat TCP/HTTP/MYSQL/Client Beat TCP/HTTP/gRPC/Cmd Keep Alive
雪崩爱护
主动登记实例 反对 反对 不反对 反对
拜访协定 HTTP HTTP/DNS HTTP/DNS TCP
监听反对 反对 反对 反对 反对
多数据中心 反对 反对 反对 不反对
跨注册核心同步 不反对 反对 反对 不反对
SpringCloud 集成 反对 反对 反对 反对

Consul 介绍

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的计划,Consul 的计划更“一站式”,内置了服务注册与发现框架、散布一致性协定实现、健康检查、Key/Value 存储、多数据中心计划,不再须要依赖其它工具(比方 ZooKeeper 等),应用起来也较为简单。

Consul 应用 Go 语言编写,因而具备人造可移植性(反对 Linux、Windows 和 Mac OS);安装包仅蕴含一个可执行文件,不便部署,与 Docker 等轻量级容器可无缝配合。

Consul 个性

  • Raft 算法
  • 服务发现
  • 健康检查
  • Key/Value 存储
  • 多数据中心
  • 反对 http 和 dns 协定接口
  • 官网提供 web 治理界面

Consul 角色

  • client:客户端,无状态,将 HTTP 和 DNS 接口申请转发给局域网内的服务端集群。
  • server:服务端,保留配置信息,高可用集群,每个数据中心的 server 数量举荐为 3 个或者 5 个。

首先,图中有两个数据中心,别离为 Datacenter1 和 Datacenter2。Consul 十分好的反对多个数据中心,每个数据中心内,有客户端和服务器端,服务器个别为 3~5 个,这样能够在稳固和性能上达到均衡,因为更多的机器会使数据同步很慢。不过客户端是没有限度的,能够有成千上万个。

数据中心内的所有节点都会退出到 Gossip (谰言) 协定。这就意味着有一个 Gossip 池,其中蕴含这个数据中心所有的节点。客户端不须要去配置服务器地址信息,发现服务工作会主动实现。检测故障节点的工作不是放在服务器端,而是分布式的;这使得失败检测绝对于本地化的心跳机制而言,更具可拓展性。在抉择 leader 这种重要的事件产生的时候,数据中心被用作音讯层来做音讯播送。

每个数据中心内的服务器都是单个 Raft 中节点集的一部分。这意味着他们一起工作,抉择一个繁多的领导者——一个具备额定职责的选定的服务器。leader 负责解决所有查问和事物。事物也必须作为同步协定的一部分复制到节点集中的所有节点。因为这个要求,当非 leader 服务器接管到 RPC 申请时,就会将申请其转发给集群 leader。

服务器端节点同时也作为 WAN Gossip 池的一部分,WAN 池和 LAN 池不同的是,它针对网络高提早做了优化,而且只蕴含其余 Consul 服务器的节点。这个池的目标是容许数据中心以起码的耗费形式发现对方。启动新的数据中心与退出现有的 WAN Gossip 一样简略。因为这些服务器都在这个池中运行,它还反对跨数据中心申请。当服务器收到对不同数据中心的申请时,它会将其转发到正确数据中心中的随机服务器。那个服务器可能会转发给本地的 leader。

这样会使数据中心的耦合非常低。然而因为故障检测,连贯缓存和复用,跨数据中心申请绝对疾速牢靠。

总的来说,数据不会在不同的数据中心之间做复制备份。当收到一个申请处于别的数据中心的资源时,本地的 Consul 服务器会发一个 RPC 申请到远端的 Consul 服务器,而后返回后果。如果远端数据中心处于不可用状态,那么这么资源也会不可用,但这不影响本地的数据中心。在一些非凡的状况下,无限的数据集会被跨数据中心复制备份,比如说 Consul 内置的 ACL 复制能力,或者像 consul-replicate 这样的内部工具。

服务发现以及注册

当服务 Producer 启动时,会将本人的 Ip/host 等信息通过发送申请告知 Consul,Consul 接管到 Producer 的注册信息后,每隔 10s(默认)会向 Producer 发送一个健康检查的申请,测验 Producer 是否衰弱。

服务调用

当 Consumer 申请 Product 时,会先从 Consul 中拿到存储 Product 服务的 IP 和 Port 的长期表 (temp table),从 temp table 表中任选一个· Producer 的 IP 和 Port,而后依据这个 IP 和 Port,发送拜访申请;temp table 表只蕴含通过了健康检查的 Producer 信息,并且每隔 10s(默认)更新。

Consul 装置

Eureka 其实就是个 Servlet 程序,跑在 Servlet 容器中;Consul 则是用 go 语言编写的第三方工具须要独自装置应用。

下载

拜访 Consul 官网:https://www.consul.io 下载 Consul 的最新版本。

[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传 (img-agqMlLGF-1608622664803)(Consul 服务注册核心.assets/1578478694286.png)]

反对多种环境装置,截图中只显示了局部环境。

[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传 (img-2ZGIyKDZ-1608622664805)(Consul 服务注册核心.assets/1578478877282.png)]

装置

为了让大家学习到不同环境的装置,单节点咱们在 Windows 装置,集群环境在 Linux 装置。

单节点

压缩包中就只有一个 consul.exe 的执行文件。

cd 到对应的目录下,应用 cmd 启动 Consul

# -dev 示意开发模式运行,另外还有 -server 示意服务模式运行
consul agent -dev -client=0.0.0.0

为了不便启动,也能够在 consul.exe 同级目录下创立一个脚本来启动,脚本内容如下:

consul agent -dev -client=0.0.0.0
pause

拜访治理后盾:http://localhost:8500/ 看到下图意味着咱们的 Consul 服务启动胜利了。

正文完
 0