dubbo

头像
dack
    阅读 2 分钟

    介绍

    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/*,会收到所有服务的所有变更事件。

    dack
    98 声望18 粉丝

    一直在路上


    « 上一篇
    并发编程模型
    下一篇 »
    Zookeeper