dubbo 工作原理
第一层:service 层, 接口层,给服务的提供者和消费者提供实现。
第二层:config 层, 配置层,主要是对Dubbo进行配置的。
第三层:proxy 层, 服务代理层,无论是consumer还是provider,dubbo都会给你生成代理,代理之间进行网络通信。
第四层:registry 层, 服务注册层,负责服务的注册和发现。
第五层:cluster 层, 集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务。
第六层:monitor 层, 监控层,对 rpc 接口的调用次数和调用时间进行监控。
第七层:protocal 层, 远程调用层,封装 rpc 调用。
第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步。
第九层:transport层,网络传输层,抽象mina和nety为统一接口。
第十层:serialize层,数据序列化层。
工作流程:
第一步:provider向注册中心注册。
第二步:consumer从注册中心订阅服务,注册中心会通知consumer订阅的服务。
第三步:consumer调用provider。
第四步:consumer 和 provider都异步通知监控中心。
注册中心挂了可以继续通信吗?
可以的,因为在刚开始初始化的时候,消费者会把服务的提供者的地址从注册中心拉取到本地缓存,所以如果注册中心挂了,还是可以继续通信的。
原文:https://github.com/doocs/advanced-java/blob/master/docs/distributed-system/dubbo-operating-principle.md