Dubbo是一个分布式、高性能、透明化的 RPC 服务框架,作用是提供服务自动注册、自动发现等高效服务治理方案。
一、Dubbo架构图
- Provider:提供者,服务发布方
- Consumer:消费者,服务调用方
- Container:Dubbo容器,依赖于spring容器
- Registry::注册中心,当 Container 启动时把所有可以提供的服务列表上 Registry 中进行注册,作用是告诉 Consumer 提供了什么服务和服务方在哪
- Monitor:监听器
- 虚线都是异步访问,实线都是同步访问
-
蓝色虚线:在启动时完成的功能
-
红色虚线(实线)都是程序运行过程中执行的功能
-
所有的角色都是可以在单独的服务器上.所以必须遵守特定的协议
二、Dubbo运行原理
-
启动容器,相当于在启动 Dubbo 的 Provider
-
启动后会去注册中心进行注册,注册所有可以提供的服务列表
-
在 Consumer 启动后会去 Registry 中获取服务列表和 Provider的地址,并进行订阅
-
当 Provider 有修改后,注册中心会把消息推送给 Consummer
-
使用了观察者设计模式(又叫发布/订阅设计模式)
-
-
根据获取到的 Provider 地址,真实调用 Provider 中功能
-
- 在 Consumer 方使用了代理设计模式,创建一个 Provider方类的一个代理对象。通过代理对象获取 Provider 中真实功能,起到保护 Provider 真实功能的作用
-
Consumer 和 Provider 每隔 1 分钟向 Monitor 发送统计信息,统计信息包含访问次数、频率等