技术架构(7)- 注册中心
在一个分布式系统中,注册中心就像114查号台,保存服务的“联系方式”,其本质是存储+运维逻辑。
它主要的功能是服务注册和服务发现,另外还为服务治理提供一些支撑。
服务注册和发现
服务提供者
服务启动时,将自身的地址、端口等信息发送给注册中心保存。
服务消费者
调用其他服务时,消费者向注册中心发送请求,获取其他服务的地址信息。根据地址信息与服务提供方交互。
注册中心
- 保存服务的地址信息以及服务之间的调用关系
- 对注册的服务做健康检查,及时清理不可用服务,并向各调用方发送通知
注册中心分类
根据CAP理论,分布式系统在一致性(C)、可用性(A)和分区容忍性(P)中只能满足其中两条,分区容忍性是分布式的基础,是必须满足的。因此注册中心大致分为AP模型和CP模型。
至于是AP好,还是CP好,要根据场景来选择,看是能接受获取错误的服务地址还是能接受服务地址查询不可用。
CP模型的共识算法大多是paxos的变种,毕竟paxos太复杂了,很难懂,也难以实现。用的比较多的是raft协议,ZK有专用的原子广播协议ZAB。
AP模型的共识算法在达成一致的过程中会出现各节点数据不一致的情况,比如gossip协议。
服务治理
注册中心在分布式服务架构里,处于核心地位。没有注册中心,服务之间的调用地址就必须写死在缓存、配置文件或者数据库里,一旦服务发生变动,要更改的地方那太多了。
注册中心有所有服务的地址,所以它有天然的优势,可以与所有服务通信,做为服务治理命令的下发通道。
它可以协助实现以下功能:
- 动态权重调整
- 流量路由
- 服务熔断降级
- 权限管理
- 过载保护
- AB测试
- 灰度发布