dubbo

dack

介绍

Dubbo是阿里提供的开源的SOA服务化治理框架的技术框架,通过spring beans的方式管理配置及实例。

架构

节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Register 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

调用者关系:

  • 服务容器负责启动、加载、运行服务提供者。
  • 服务提供者在启动时,想注册中心注册自己提供的服务。
  • 服务消费者在启动时,想注册中心订阅自己所需的服务。
  • 注册中心返回服务服务提供者的地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  • 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

注册中心

zookeeper

zookeeper是apacah hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心。

流程:

  • 服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址
  • 服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
  • 监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。

支持功能:

  • 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。
  • 当注册中心重启时,能自动恢复注册数据,以及订阅请求。
  • 当会话过期时,能自动恢复注册数据,以及订阅请求。
  • 当设置<dubbo:registry check="false" />时,记录失败注册和订阅请求,后台定时重试。
  • 可通过<dubbo:registry username="admin" password="1234" />设置zookeeper的登录信息。
  • 可通过<dubbo:registry group="dubbo" ./>设置zookeeper的根节点,不设置将使用无根树。
  • 支持*号通配符<dubbo:reference group="" version="" />,可订阅服务的所有分组和所有版本的提供者。

Redis

基于Redis实现的注册中心,使用Redis的key/map结构存储数据结构。

  • 主key作为服务名和类型。
  • Map中的key为url地址。
  • map中的value为过期时间,用于判断脏数据,脏数据由监控中心删除。

使用Redis的publish/subscribe事件通知数据变更:

  • 通过事件的值区分事件类型:register , unregister , subscribe, unsubscribe。
  • 普通消费者直接订阅指定服务提供者的key,只会收到执行服务的register, unregister事件。
  • 监控中心通过psubscribe功能订阅/dubbo/*,会收到所有服务的所有变更事件。
阅读 1k

Java、GO、计算机网络、操作系统等学习总结
之前秋招复习的时候开始写这个专栏,本想重新开一个专栏记录工作之后学到的东西,但是因为segmentfault...

一直在路上

95 声望
18 粉丝
0 条评论

一直在路上

95 声望
18 粉丝
文章目录
宣传栏