二、Apache Dubbo学习整理—注册中心(1)

动态加入:提供者可以通过注册中心动态的把自己暴露给其他消费者,无需消费者分别更新配置文件信息。

动态发现:消费者可以动态感知新的配置、路由规则和新的服务提供者,无须重启即可生效。

动态调整;注册中心支持参数的动态调整,新参数自动更新到所有相关服务节点。

统一配置:避免了本地配置导致每个服务的配置不一致问题。

三、源码模块

模块名称 描述模块描述
dubbo-registry-api 注册中心的所有API和抽象类
dubbo-registry-zookeeper 使用Zookeeper作为注册中心的实现
dubbo-registry-redis 使用Redis作为注册中心的实现
dubbo-registry-default 基于内存的默认实现
dubbo-registry-muliticast multicast模式的服务注册与发现

官方推荐Zookeeper,还可以对注册中心进行扩展。目前有etcd扩张,主要基于RegistryFactory和Registry类实现。

四、工作流程

1、服务提供者启动时,会向注册中心写入自己的元数据信息,同事订阅配置元数据信息。

2、消费者启动时,会向注册中心写入自己的元数据信息,并订阅服务提供者、路由和元数据信息。

3、服务治理中心启动时,会同时订阅服务提供者、消费者、路由和配置元数据信息。

4、当有服务提供者离开或者有新的服务提供者加入,注册中心中的服务提供者目录发生变化,并将变化信息动态通知消费者、服务治理中心。

5、消费者发起服务调用时,会异步将调用、统计信息上报给监控中心。

二、Apache Dubbo学习整理---注册中心(1)

五、注册原理剖析

(一)Zookeeper原理

树形结构注册中心。节点分为: 持久节点、持久顺序节点、临时节点、临时顺序节点。

持久节点:注册后保证节点不会丢失,注册中心重启也会存在。

临时节点:服务注册后连接丢失或session超时,注册的节点会自动被移除。

Dubbo只会注册以上两种类型节点。

二、Apache Dubbo学习整理---注册中心(1)
  • Dubbo在启动时,会根据用户配置,在注册中心创建4个目录,在providers和consumers目录中分别存储服务提供方、消费方元数据信息,主要包括IP、端口、权重、应用名等。

  • 进行服务调用时,用户可通过服务治理平台(web页面)下发路由配置。如果要在运行时改变服务参数,用户可通过服务治理平台下发动态配置。服务器端会通过订阅机制收到属性变更,重新更新已经暴露的服务。

  • 服务元数据中的所有参数都是以键值对(key-value)形式存储的。

目录名称 存储样例
/dubbo/service/providers dubbo://192.168.1.1.8181/com.zk.service.Service1?key=value&…
/dubbo/service/consumers consumers://192.168.2.2.8181/com.zk.service.Service1?key=value&…
/dubbo/service/routers condition://192.168.3.3:8181/com.zk.service.Service1?category=routers&key=value&…
/dubbo/service/configurators condition://192.168.3.3:8181/com.zk.service.Service1?category=configurators&key=value&…
  • providers包含key.value的元数据信息。

  • routers包含category,routers的元数据信息。

原文 

https://juejin.im/post/5f034ec2f265da22b5446655

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 二、Apache Dubbo学习整理—注册中心(1)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址