Dubbo整体设计

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