服务定义(服务的范围、接口和边界)
服务部署生命周期(各个生命周期阶段)
服务版本治理(包括兼容性)
服务迁移(启用和退役)
服务注册中心(依赖关系)
服务消息模型(规范数据模型)
服务监视(进行问题确定)
服务所有权(企业组织)
服务测试(重复测试)
服务安全(包括可接受的保护范围)
节点 | 角色说明 |
Provider | 暴露服务的服务提供方。 |
Consumer | 调用远程服务的服务消费方。 |
Registry | 服务注册与发现的注册中心。 |
Monitor | 统计服务的调用次数和调用时间的监控中心。 |
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Config配置层:对外配置接口,以ServiceConfig、ReferenceConfig为中心,可以直接初始化配置类,也可以通过Spring解析配置生成配置类。
Proxy服务代理层:服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。
Registry注册中心层:封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry、RegistryService。
Cluster路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router、LoadBalance。
Monitor监控层:RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor、MonitorService。
Protocol远程调用层:封将RPC调用,以Invocation、Result为中心,扩展接口为Protocol、Invoker、Exporter。
Exchange信息交换层:封装请求响应模式,同步转异步,以Request、Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient、ExchangeServer。
Transport网络传输层:抽象MINA和Netty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server、Codec。
Serialize数据序列化层:可复用的一些工具,扩展接口为Serialization、ObjectInput、ObjectOutput、ThreadPool。
dubbo-common公共逻辑模块:包括Util类和通用模型。
dubbo-remoting远程通讯模块:相当于Dubbo协议的实现,如果RPC用 RMI协议则不需要使用此包。
dubbo-rpc远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。
dubbo-cluster集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡、容错、路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-registry注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
dubbo-monitor监控模块:统计服务调用次数、调用时间的、调用链跟踪的服务。
dubbo-config配置模块:是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。
dubbo-container容器模块:是一个Standlone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。
Dubbo协议(默认协议)
Hessian协议
HTTP协议
RMI协议
WebService协议
Thrift协议
Memcached协议
Redis协议
服务提供者(Provider)启动时,向/dubbo/com.foo.BarService/providers目录下写入URL。
服务消费者(Consumer)启动时,订阅/dubbo/com.foo.BarService/providers目录下的URL,向/dubbo/com.foo.BarService/consumers目录下写入自己的URL。
监控中心(Monitor)启动时,订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者URL。
Mina
Netty(默认)
Grizzly
http://dubbo.io
https://github.com/alibaba/dubbo
http://shiyanjun.cn/archives/325.html
http://mp.weixin.qq.com/s/eVYx-tUIMYtAk5wP-qkdkw