Dubbo 服务调用流程笔记
1. Dubbo 简介
-
Dubbo 是高性能的 RPC 框架,允许服务调用者像调用本地方法一样调用远程服务。
-
核心功能:
-
服务注册与发现
-
服务暴露
-
负载均衡
-
容错和集群管理
-
高效的远程调用协议
-
2. 核心概念
-
Provider(服务提供者):暴露接口供远程调用。
-
Consumer(服务消费者):调用远程服务接口。
-
Registry(注册中心):管理服务列表,实现动态发现。
-
Proxy(代理对象):消费端的代理,调用时封装 RPC 请求。
-
Cluster(集群容错):控制调用失败时的策略,如重试或快速失败。
-
Loadbalance(负载均衡):控制多 Provider 间请求分配方式。
3. 调用流程
-
Consumer 启动
-
系统扫描到需要调用的远程服务。
-
Dubbo 生成代理对象并注入到调用端。
-
-
方法调用
- 调用代理对象方法时,Dubbo 会把调用封装成 RPC 请求。
-
服务发现
-
代理通过注册中心查找可用的 Provider。
-
如果配置了直连地址,也可以直接访问 Provider。
-
-
远程调用
-
请求通过网络发送到 Provider。
-
Provider 接收到请求后执行真实方法。
-
-
返回结果
-
Provider 将执行结果或异常返回给 Consumer。
-
代理对象接收响应并返回给调用方。
-
4. 部署与特性
-
同一台机器:
- 可以直接调用本地服务,避免网络开销。
-
不同机器:
- 通过网络 RPC 调用 Provider,实现服务解耦。
-
注册中心:
- 动态发现服务,支持负载均衡和容错。
-
Consumer 与 Provider 解耦:
- Consumer 只依赖接口,不依赖实现,适合微服务架构。
5. 常见特性
-
支持版本和分组管理服务,便于多版本共存。
-
支持超时和重试机制,增强调用可靠性。
-
可配置异步调用和容错策略,适应不同业务需求。
-
支持本地调用优化(inJvm),提高同机调用性能。
-
支持注册中心直连和服务发现两种方式。