Dubbo核心架构!

Registry:注册中心

负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。

注册中心通过长连接感知 Provider 的存在,在 Provider 出现宕机的时候。

  • 注册中心会立即推送相关事件通知 Consumer。

Provider:服务提供者

在它启动的时候,会向 Registry 进行注册操作。

  • 将自己服务的地址和相关配置信息封装成 URL 添加到 ZooKeeper 中。

Consumer:服务消费者

在它启动的时候,会向 Registry 进行订阅操作。

订阅操作会从 ZooKeeper 中获取 Provider 注册的 URL,并在 ZooKeeper 中添加相应的监听器。

获取到 Provider URL 之后,Consumer 会根据负载均衡算法从多个 Provider 中选择一个 Provider 并与其建立连接

  • 最后发起对 Provider 的 RPC 调用。

如果 Provider URL 发生变更,Consumer 将会通过之前订阅过程中在注册中心添加的监听器

  • 获取到最新的 Provider URL 信息,进行相应的调整,比如断开与宕机 Provider 的连接,并与新的 Provider 建立连接。

Consumer 与 Provider 建立的是长连接,且 Consumer 会缓存 Provider 信息,所以一旦连接建立。

  • 即使注册中心宕机,也不会影响已运行的 Provider 和 Consumer。

Monitor:监控中心

用于统计服务的调用次数和调用时间。

Provider 和 Consumer 在运行过程中,会在内存中统计调用次数和调用时间。

  • 定时每分钟发送一次统计数据到监控中心。

image-20231030173221195