服务化架构的 IM 系统中,入口服务层、业务服务层和数据访问服务层(见 IM专题:服务化架构IM系统(1)—架构解读)都包含了非常多的服务,并且服务都是集群化部署。
服务化架构的 IM 系统中,服务之间的寻址,通过本地化配置的方式会非常繁琐,所以通常基于注册中心组件来实现服务的发现,尤其是服务通过容器化部署且 ip 并不固定的部署场景。
注册中心在服务化架构的 IM 系统中的位置和作用,见下图。
- 数据访问服务层服务(如用户das、消息das)通过 “服务注册” 将自己注册到注册中心;
- 业务服务层服务(如用户logic、系统消息extlogic)通过对注册中心 “服务发现” 获取数据访问服务层服务的地址后,对数据访问服务层服务进行调用;
- 业务服务层服务(如联系人logic、消息logic)通过 “服务注册” 将自己注册到注册中心;
- 入口访问服务层服务(如entry、http-entry)通过对注册中心 “服务发现” 获取业务服务层服务的地址后,对业务服务层服务进行调用。
这里我们不讨论一个具体的注册中心的技术选型,我们从普适性的角度分析注册中心应该如何应用。
首先,注册中心在整个服务化系统中承担了什么功能职责呢?这个问题很简单,可以通过 “十六字箴言” 来进行言简意赅地描述,见下图。
- 服务注册:服务提供方将自己的服务地址注册到注册中心;
- 服务发现:服务消费方访问注册中心主动获取服务提供方的地址;
- 健康检查:注册中心对服务提供方服务的健康状况进行实时监测;
- 变更通知:注册中心通过健康检查发现有服务挂掉或新启时,将服务的变更情况及时主动通知到服务消费方。
这是一个非常抽象的注册中心的功能模型,从功能角度来理解完全没有问题;但其在实际的落地应用中,注册中心则分别为不同的客户端角色提供不同的接口流程,见下图。
- 服务管理平台,负责管理整个系统中所有服务,记录服务所属部门和负责人,记录服务之间的订阅(调用)关系;
- 所有要上线的服务,必须由负责人在服务管理平台中进行注册,然后服务管理平台会调用注册中心接口,将服务注册到注册中心;
- 只有服务管理平台注册到注册中心的服务,注册中心才会接受该服务集群中服务运行节点的注册;所以对于实际应用的注册中心来说,注册服务和注册节点是两码事;
- 要对服务进行调用,必须由负责人在服务管理平台中进行订阅申请,然后被订阅的服务负责人通过之后,服务管理平台会调用注册中心接口,将服务订阅关系写入到注册中心;
- 只有服务管理平台将服务订阅方写入到注册中心后,订阅方服务集群中的服务运行节点向注册中心发起 “发现节点” 的请求才会被注册中心受理;所以对于实际应用的注册中心来说,必须先有服务订阅,才会有服务节点的发现;
- 服务提供方集群中的每一个节点,在启动后会调用注册中心 “注册节点” 的接口,将自己注册到注册中心,告诉注册中心自己开始提供服务;
- 服务消费方集群中的每一个节点,在启动后会调用注册中心 “发现节点” 的接口,从注册中心获取其服务所订阅的所有服务集群中运行的节点列表,然后服务消费方节点对服务提供方节点发起 RPC 调用;
- 注册中心会对所有服务提供方集群中所有节点进行实时的健康检查;对于健康状态发生变化的节点情况,注册中心会实时通知给对应的服务订阅方节点,以更新服务消费方节点内存中运行的服务提供方的节点列表。
从普适性场景分析,这就是注册中心在实际落地应用中的需要提供的能力和与客户端之间的交互情况。站在要研发一个注册中心的角度看,以上则是对注册中心的功能需求分析。
通过对普适性注册中心的功能分析,不难推理出注册中心需要提供的接口,见下表。
- 接口1~接口4,调用方是服务管理平台,注册中心通过 http 协议提供接口;
- 接口5~接口8,调用方是服务节点,包括服务提供方节点和服务消费方节点,服务节点与注册中心建立 tcp 长连接,注册中心通过 tcp 协议提供接口;
- 接口9,由注册中心基于 tcp 长连接主动发送 “变更通知” 到客户端。
明确了注册中心应用场景,功能需求和需要提供的接口,接下来对注册中心本身进行架构设计和功能实现,就是水到渠成的事情了,那么应该如何设计和实现呢?对于分布式的注册中心又应该如何扩展和设计呢?在后续文章中我们逐步讲解。
最后,总结文中关键:
- 注册中心功能模型,用 “十六字箴言” 描述:服务注册、服务发现、健康检查、变更通知;
- 注册中心在企业实际落地中的应用流程:(1)服务管理平台调用注册中心 “注册服务” 接口;(2)服务管理平台调用注册中心 “订阅服务” 接口;(3)服务提供方服务节点调用注册中心 “注册节点” 接口;(4)服务消费方服务节点调用注册中心 “发现服务” 接口;(5)所有服务节点周期上报心跳到注册中心;(6)注册中心通过分析所有客户端心跳判断客户端健康度,对于健康变更的节点情况通知到服务订阅方服务的所有节点。
- 普适性注册中心通常提供上表中的九个接口。
作者:棕生;来源:公众号“架构之魂”
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。