本博客转自git项目advancejava
dubbo 工作原理
• 第一层:service 层,接口层,给服务提供者和消费者来实现的
• 第二层:config 层,配置层,主要是对 dubbo 进行各种配置的
• 第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都会给你生成代理,代理之间进行网络通信
• 第四层:registry 层,服务注册层,负责服务的注册与发现
• 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
• 第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控
• 第七层:protocal 层,远程调用层,封装 rpc 调用
• 第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步
• 第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口
• 第十层:serialize 层,数据序列化层
工作流程
• 第一步:provider 向注册中心去注册
• 第二步:consumer 从注册中心订阅服务,注册中心会通知 consumer 注册好的服务
• 第三步:consumer 调用 provider
• 第四步:consumer 和 provider 都异步通知监控中心
注册中心挂了可以继续通信吗?
可以,因为刚开始初始化的时候,消费者会将提供者的地址等信息拉取到本地缓存,所以注册中心挂了可以继续通信。