小麦带你学服注册体系二

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 含金量文章,你不得不看的好文章

## 心跳机制


如果服务有多个实例,其中一个实例出现宕机,注册中心是可以实时感知到,并且将该实例信息从列表中移出,也称为摘机。如何实现摘机?业界比较常用的方式是通过心跳检测的方式实现,心跳检测有**主动**和**被动**两种方式。


### 被动检测


**被动检测**是指服务主动向注册中心发送心跳消息,时间间隔可自定义,比如配置5秒发送一次,注册中心如果在三个周期内比如说15秒内没有收到实例的心跳消息,就会将该实例从列表中移除。



上图中服务A的实例2已经宕机不能主动给注册中心发送心跳消息,15秒之后注册就会将实例2移除掉。




### 主动检测


**主动检测**是注册中心主动发起,每隔几秒中会给所有列表中的服务实例发送心跳检测消息,如果多个周期内未发送成功或未收到回复就会主动移除该实例。





## Dubbo注册中心


### 核心功能


针对使用者,主要关注注册中心的以下五个核心接口,通过以下五个核心接口,可以实现服务的动态发布、动态发现以及优雅下线等操作:


- **注册服务**:将服务提供者的URL暴露至注册中心

- **注销服务**:从注册中心将服务提供者的地址进行摘除

- **订阅服务**:将从注册中心订阅需要消费的URL至本地,当注册中心的服务清单发展变化时,自动通知订阅者

- **退订服务**:取消向注册中心订阅的服务监听者

- **查找服务**:向注册中心查找指定的服务清单列表




### 生产特性


Zookeeper会有一些未知的问题出现,所以需要生产特性来应对各种可能出现的问题,从而提升产品的质量。该类功能针对使用者一般情况是没办法直接感受到,但其发挥的作用就是保障产品的高质量服务:


- **自动重连**:与Zookeeper或Redis的连接断开后,支持自动重新连接

- **自动切换**:与Zookeeper或Redis的连接失败后,支持自动切换

- **自动清理**:Zookeeper或Redis中的数据过期后,支持自动清理(超时自动摘除)

- **自动恢复**:与Zookeeper或Redis自动重连成功后,支持自动恢复(即再次发起注册、订阅或监听动作)

- **自动重试**:失败自动重试(注册、注销、订阅、退订、监听和取消监听失败,无限重试至成功为止)

- **自动缓存**:Client订阅的服务清单会自动离线缓存至JVM本地的文件(变更通知时更新)




## 业界方案


下面结合各个维度对比一下各组件:


| **方案**      | **优点**                                                     | **缺点**                                                     | **访问协议** | **一致性算法** |

| :------------ | :----------------------------------------------------------- | :----------------------------------------------------------- | :----------- | :------------- |

| **Zookeeper** | 1.功能强大,不仅仅只是服务发现;2.提供watcher机制可以实时获取服务提供者的状态;3.广泛使用,dubbo等微服务框架已支持 | 1.没有健康检查;2.需要在服务中引入sdk,集成复杂度高;3.不支持多数据中心 | TCP          | Paxos(CP)    |

| **Consul**    | 1.开箱即用,方便集成;2.带健康检查;3.支持多数据中心;4.提供web管理界面 | 不能实时获取服务变换通知                                     | HTTP/DNS     | Raft(CP)     |

| **Nacos**     | 1.开箱即用,适用于dubbo,spring cloud等;2.AP模型,数据最终一致性;3.注册中心,配置中心二合一(二合一也不一定是优点),提供控制台管理;4.纯国产,各种有中文文档,久经双十一考验 | 刚刚开源不久,社区热度不够,依然存在bug                      | HTTP/DNS     | CP+AP          |

| **Eureka**    |                                                              |                                                              | HTTP         | AP             |




### Zookeeper

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12月前
|
新零售 存储 供应链
严选库存中心设计实践
严选库存中心设计实践
252 0
|
消息中间件 NoSQL 安全
|
负载均衡 算法
小麦带你学服注册体系一
含金量很高,好好领悟
|
JSON 数据可视化 开发工具
|
存储 网络协议 Go
|
存储 消息中间件 JSON
|
运维 监控 微服务
|
缓存 监控 负载均衡