介绍
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/*,会收到所有服务的所有变更事件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。