近一段时间疏于总结,罪过罪过。
今天重温一下Dubbo的调用流程,如下图所示:
- Provider
- 第 0 步,start 启动服务。
- 第 1 步,register 注册服务到注册中心。
- Consumer
- 第 2 步,subscribe 向注册中心订阅服务。
- 注意,只订阅使用到的服务。
- 再注意,首次会拉取订阅的服务列表,缓存在本地。
- 【异步】第 3 步,notify 当服务发生变化时,获取最新的服务列表,更新本地缓存。
- 第 2 步,subscribe 向注册中心订阅服务。
- invoke 调用
- Consumer 直接发起对 Provider 的调用,无需经过注册中心。而对多个 Provider 的负载均衡,Consumer 通过 cluster 组件实现。
- count 监控
- 【异步】Consumer 和 Provider 都异步通知监控中心。
换个角度来看:
- 图中的【代理】指的是 proxy 代理服务层,和 Consumer 或 Provider 在同一进程中。
- 图中的【负载均衡】指的是 cluster 路由层,和 Consumer 或 Provider 在同一进程中。
- 默认情况下,调用是同步的方式。