服务注册中心(Eureka,zookeeper,Consul)
一.框架结构图

以生活中的例子来解释该图,注册中心就相当于是商场,而Service Provider服务提供者则相当于是商场中的卖家,Service Consumer服务消费者则相当于是商场中的买家。服务的提供者会以别名的形式注册进入注册中心,服务的消费者则可以通过注册中心提供的信息利用别名找到自己所需要的服务。这就相当于卖家在商场中卖东西首先就要向商场进行报备,商场则要在自己的花名册上记录卖家名字,然后买家通过商场提供的花名册找到自己想要去的卖家那里购买东西。
二.CAP

C:强一致性; A:高可用; P:分区容错性
关注粒度是数据,最多只能满足其中的两个要求。
CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP-满足一致性,分区容错的系统,通常性能不是特别高。
AP-满足可用性,分区容错的系统,通常对一致性要求略低一些。
在此中介绍的注册中心一般满足AP或者是CP。
三 Eureka
如今的Eureka已经不再更新处于维护阶段,但不可否认的是其的重要性,现在仍有许多公司还是继续使用Eureka。
官网地址:https://github.com/Netflix/eureka

Eureka一般有两个部分组成,一个是Eureka Server相当于上面介绍的商场,用来进行定位服务和实现负载均衡以及中间层服务器的故障转移;另一个就是Eureka Client,相当于是上面介绍的卖家以及买家。与传统的利用域名和端口号访问相比,使用Eureka只需要要知道其的别名即可,更加的简洁。除此之外Eureka存在前端界面可供开发者使用,并且存在自我保护机制,暂时把失效的服务保护起来,不让其过期。Eureka在启动完成后,每隔60秒会检查一次服务健康状态,如果这些被保护起来失效的服务过一段时间后(默认90秒)还是没有恢复,就会把这些服务剔除。如果在此期间服务恢复了并且实例心跳占比高于85%时,就会自动关闭自我保护机制。
四 Zookeeper,Consul
zookeeper:https://github.com/apache/zookeeper
consul:https://github.com/hashicorp/consul
Zookeeper和Consul是在Eureka停止更新之后出现的实现注册功能的替代品,其中Zookeeper在服务失去心跳之后不会立马将服务去除会等几秒中的时间再进行删除。Consul则比Zookeeper多了前端的界面更加方便观察。

五 Eureka,Zookeeper,Consul三者的区别
| 组件名 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | SpringCloud集成 |
|---|---|---|---|---|---|
| Eureka | Java | AP | 可配支持 | HTTP | 已集成 |
| Zookeeper | Java | CP | 支持 | 客户端 | 已集成 |
| Consul | Go | CP | 支持 | HTTP/DNS | 已集成 |

浙公网安备 33010602011771号