在Dubbo微服务体系中,注册中心是其核心组件之一,Dubbo通过注册中心实现了分布式环境中各个服务之间的注册和发现,是各个分布式节点之间的纽带,主要的作用如下:
1、动态加入。一个服务提供者通过注册中心可以动态的把自己暴露给其他消费者,无需消费者逐个去更新配置文件。
2、动态发现,一个消费者可以动态的感知新的配置,路由规则和新的服务器提供者,无需重启服务使之生效。
3、动态调整,注册中心支持参数的动态调整,新参数自动更新到所有相关的服务节点。
4、统一配置,避免本地配置导致每个服务的配置不一致的问题。
Dubbo的注册中心源码在模块dubbo-registry中,里边包括五个子模块。分别如下:
Dubbo提供了四种注册中心的实现,具体如上所示,当时这块也是可以扩展的,我们基于dubbo-registry-api也可以去做扩展,我想着nacos也是基于此。
Zookeeper是其官方推荐的注册中心,redis做注册中心并没有长时间的可靠性验证,其稳定性依赖于redis本身,default是其采用内存的一种方式,其本身就是一个rpc服务,不支持集群也久会出现单点故障,multicast模式则不需要启动任何注册中心,只要通过广播地址,就可以互相发现,服务提供者启动时,会广播自己的地址,消费者启动时会广播订阅请求,服务提供者收到订阅请求,会根据配置广播或者单播给订阅者,但是不建议在生产环境使用。后期我们再探索下注册中心的自定义扩展。
注册中心的工作流程
注册中心的总体流程比较简单,总体流程图如下:
1、服务提供者启动时,会向注册中心写入自己的元数据信息,同时会订阅配置元数据信息
2、消费者启动时,也会向注册中心写入自己的元数据信息,并订阅服务提供者,路由和配置元数据信息。
3、服务治理中心(dubbo-admin)启动时,会同时订阅所有的消费者,服务提供者,路由和配置元数据信息。
4、当有服务提供者离开或有新的服务提供者加入时,注册中心服务提供者目录会发生变化,变化信息会动态通知给消费者,服务治理中心
5、当消费方发起服务调用时,会异步将调用,统计信息上报给监控中心(dubbo-monitor-simple)。
申明:本文系图书《深入理解Apache dubbo与实践》章节内容,作者经常通过抄书打发时间而已。年轻的时候还是多学一点吧,等老了拿出来吹牛也挺好。
今日立秋,祝大家愉快!