RPC服务框架——Dubbo

Dubbo,分布式服务框架,致力于提供性能和透明化的远程服务调用方案和基于服务框架展开的完整SOA服务治理方案。

Duboo的核心部分包含三部分

  • 远程通信
    提供对于多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求——响应”模式的信息交换方式
  • 集群容错
    提供基于接口方法的远程过程透明调用,包括对多协议的支持,以及对软负载均衡、失败容错、地址路由和动态配置等集群特性的支持
  • 自动发现
    提供基于注册中心的目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑地增加或减少机器

注册中心是RPC框架最核心的模块之一,用于服务的注册和订阅。在Dubbo的实现中,对注册中心模块进行了抽象封装,因此可以基于对其提供的外部接口来实现各种不同类型的注册中心,如关系型数据库、Redis和ZooKeeper。

基于ZooKeeper实现的注册中心节点结构示意图
ZooKeeper

  • /dubbo:这是Dubbo在ZooKeeper上创建的根节点
  • /dubbo/com.foo.barService:服务节点,代表了Dubbo的一个服务
  • /dubbo/com.foo.barService/providers:服务提供者的根节点,其子节点代表了每一个服务的真正提供者
  • /dubbo/com.foo.barService/consumers:服务消费者的根节点,其子节点代表了每一个服务的真正消费者

结合上图,以“com.foo.barService”这个服务为例,说明基于ZooKeeper实现的注册中心的工作流程。

服务提供者

服务提供者在初始化启动的时候,会首先在ZooKeeper的“/dubbo/com.foo.barService/providers”节点下创建一个子节点,并写入自己的URL地址,这就代表了“com.foo.barService”这个服务的一个提供者。

服务消费者

服务消费者会在启动的时候,读取并订阅ZooKeeper上”/dubbo/com.foo.barService/providers”节点下的所有子节点,并解析出所有提供者的URL地址来作为该服务地址列表,然后开始发起正常调用。

同时,服务消费者还会在ZooKeeper的”/dubbo/com.foo.barService/consumers”节点下创建一个临时节点,并写入自己的URL地址,这就代表了”com.foo.barService”这个服务的一个消费者。

监控中心

监控中心是Dubbo中服务治理体系的重要一部分,其需要知道一个服务的所有提供者和订阅者,及其变化情况。因此监控中心在启动的时候,会通过ZooKeeper的“/dubbo/com.foo.barService”节点来获取所有提供者和消费者的URL地址,并注册Watcher来监听其子节点变化。

注意事项

所有的提供者在ZooKeeper上创建的节点都是临时节点,利用的是临时节点的生命周期和客户端会话相关的特性,因此一旦提供者所在的机器出现故障导致该提供者无法对外提供服务时,该临时节点就会自动从ZooKeeper上删除,这样服务的消费者和监控中心都能感知到服务提供者的变化。

在ZooKeeper节点结构设计上,以服务名和类型作为节点路径,符合Dubbo订阅和通知的需求,这样保证以服务为粒度的变更通知,通知范围易于控制,即使在服务的提供者和消费者变更频繁的情况下,也不会对ZooKeeper造成太大的性能影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值