Dubbo整体设计
(图片来源阿里巴巴)
dubbo分层设计:
ServiceConfig
, ReferenceConfig
为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类ServiceProxy
为中心,扩展接口为 ProxyFactory
RegistryFactory
, Registry
, RegistryService
Invoker
为中心,扩展接口为 Cluster
, Directory
, Router
, LoadBalance
Statistics
为中心,扩展接口为 MonitorFactory
, Monitor
, MonitorService
Invocation
, Result
为中心,扩展接口为 Protocol
, Invoker
, Exporter
Request
, Response
为中心,扩展接口为 Exchanger
, ExchangeChannel
, ExchangeClient
, ExchangeServer
Message
为中心,扩展接口为 Channel
, Transporter
, Client
, Server
, Codec
Serialization
, ObjectInput
, ObjectOutput
, ThreadPool
dubbo设计原则:
dubbo注册中心
Multicast注册中心:Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
Zookeeper注册中心:Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 阿里内部并没有使用zookeeper注册中心。
Redis注册中心:阿里内部并没有使用Redis注册中心,而是使用的基于数据库的注册中心。
使用 Redis 的 Key/Map 结构存储数据结构:
使用 Redis 的 Publish/Subscribe 事件通知数据变更:
register
, unregister
, subscribe
, unsubscribe
register
, unregister
事件psubscribe
功能订阅 /dubbo/*
,会收到所有服务的所有变更事件Simple注册中心:Simple 注册中心本身就是一个普通的 Dubbo 服务,可以减少第三方依赖,使整体通讯方式一致