Dubbo:全景速查手册(完整版·多表格体系梳理)/ Java RPC 远程调用框架 一、Dubbo 核心定位与本质一句话吃透Dubbo 是阿里开源、Apache 顶级的高性能、轻量级 Java RPC 远程调用框架专门解决微服务拆分后服务与服务之间跨进程、跨机器通信问题。1.1、在 Spring Cloud Alibaba 体系中OpenFeign基于 HTTP 调用慢、通用、跨语言Dubbo基于自定义 TCP 协议速度快、高并发、专为 Java 微服务而生。1.2、Dubbo 三大核心能力官方定义远程方法调用像调用本地方法一样调用远程服务智能负载均衡多服务节点自动分发流量避免单点压力服务注册与发现自动感知服务上下线动态调度。二、Dubbo 核心架构五大角色必背Dubbo 完整运行架构由五个角色组成缺一不可是所有原理的基础。角色中文名称核心职责通俗理解Provider服务提供者暴露 Dubbo 接口启动后注册服务到注册中心干活的服务被别人调用Consumer服务消费者订阅注册中心服务远程调用 Provider 接口发起调用的服务找别人干活Registry注册中心接收服务注册、订阅推送服务节点变更信息中介、通讯录主流 Nacos / ZookeeperMonitor监控中心统计调用次数、耗时、异常、QPS做服务治理监控后台日志统计、大盘监控Container服务容器加载、启动、运行 Provider 服务Spring 容器承载服务运行三、Dubbo 完整调用链路全景流程3.1 启动流程服务注册服务提供者 Provider 启动扫描 DubboService 接口自动将接口全限定名、IP、端口、版本注册到 Nacos/ZK注册中心保存临时节点实时监听服务状态。3.2 调用流程服务发现远程调用消费者 Consumer 启动向注册中心订阅需要的服务接口注册中心返回可用的 Provider 节点列表Consumer 本地缓存服务列表后续调用不查注册中心提升性能消费者通过负载均衡算法选中一个节点通过 Dubbo 协议发起 TCP 远程调用Provider 接收请求、执行业务、返回结果监控中心异步统计调用数据。核心优势注册中心只负责「服务发现」真正调用是消费者直连提供者不经过中间转发性能极高。四、Dubbo 核心协议与通信方式对照表协议底层特点适用场景Dubbo 协议默认TCP 自定义二进制协议体积小、速度快、高并发、长连接Java 微服务内部互调主流HTTP 协议HTTP/1.1通用、跨语言、文本协议、体积大跨语言调用、对外接口gRPCHTTP2 Protobuf高性能、跨语言、流式通信跨语言微服务、大数据流式五、Dubbo 五大负载均衡策略面试必考Consumer 端从可用节点中挑选机器的算法用于解决流量分发、压力均衡问题。策略名称规则说明特点适用场景Random 随机默认随机挑选一台可用服务节点均匀概率、简单高效、压力均衡常规业务、绝大多数场景RoundRobin 轮询按顺序依次分发请求绝对平均分配流量各机器性能一致、请求耗时均匀LeastActive 最少活跃选择当前并发最少、最空闲的节点自动避让慢节点、容错性好机器性能不均、接口耗时差异大ConsistentHash 一致性哈希相同参数固定访问同一节点请求黏滞、利于缓存命中率缓存业务、用户会话、状态化接口ShortestResponse 最短响应优先选择平均响应最快的节点整体吞吐量最优高并发、追求极致响应速度六、Dubbo 容错机制集群策略当远程调用失败、超时、节点宕机时Dubbo 自动执行的补救策略是高可用核心。容错策略核心行为优缺点场景Failover 失败重试默认失败自动切换重试其他节点默认重试2次容错高重试可能造成重复提交查询、读业务禁止用于写接口Failfast 快速失败失败直接报错不重试杜绝重复操作安全性高新增、修改、删除、事务写接口Failsafe 失败安全失败不抛异常直接返回空结果不影响主流程数据可能丢失日志、统计、非核心次要业务Failback 失败自动恢复失败后台记录定时重试保证最终执行延迟执行消息通知、异步回调、补偿任务Forking 并行调用同时调用多个节点取最快返回结果速度极快、消耗资源高高可用、极速查询场景七、Dubbo 核心常用配置速查表开发必备配置项默认值作用说明开发建议timeout1000ms远程调用超时时间复杂业务适当调大避免超时报错retries2失败重试次数写接口必须改为0防止重复提交checktrue启动时检查服务是否可用本地开发建议关闭避免启动报错loadbalancerandom负载均衡策略根据业务场景手动切换version无服务版本号用于灰度、兼容升级迭代升级接口必须加版本隔离group无服务分组区分环境、业务模块多环境、多业务复用接口必备八、Dubbo 核心注解速查Spring Cloud Alibaba注解使用位置作用DubboService提供者 Service 实现类将当前接口注册为 Dubbo 远程服务对外暴露调用能力DubboReference消费者注入接口位置订阅远程服务生成代理对象实现远程调用核心区别DubboService对外暴露服务我被别人调DubboReference引用远程服务我调别人九、Dubbo vs OpenFeign 终极对比面试高频对比维度DubboOpenFeign底层协议TCP 二进制自定义协议HTTP 文本协议性能速度极快、序列化体积小、高并发友好较慢、报文冗余、开销大跨语言弱主打 Java强任意语言可调用负载均衡内置 5 种精细化策略默认轮询能力简单容错重试完善集群容错机制需手动整合 Resilience4j适用场景微服务内部高频互调对外接口、跨语言调用、网关转发十、Dubbo 核心优缺点全景总结10.1 优点高性能TCP 长连接二进制序列化远快于 HTTP 调用服务治理完善负载均衡、容错、重试、版本、分组、监控全套能力开箱即用和 SpringBoot、Nacos 无缝整合稳定性强阿里多年双11高并发验证企业级稳定动态感知服务上下线自动发现无需手动改配置。10.2 缺点跨语言能力弱主要适配 Java 体系写接口需手动关闭重试否则容易产生脏数据相比 HTTP调试、抓包、排查问题成本更高。十一、Dubbo 开发规范避坑清单查询接口使用默认 Failover 重试保证高可用新增/修改/删除接口必须设置retries0、容错模式 Failfast杜绝重复提交本地开发开启checkfalse避免服务未启动导致项目启动失败接口迭代优先使用版本号 version灰度升级不影响旧业务高并发不均匀场景手动切换LeastActive负载均衡规避慢节点所有 Dubbo 接口参数尽量序列化精简减少传输体积。十二、全文速记总结一句话核心Dubbo 是 Java 微服务内部高性能 RPC 通信框架依靠 Nacos 实现注册发现内置多种负载均衡与集群容错策略TCP 二进制调用速度远超 HTTP是 Spring Cloud Alibaba 微服务体系内部通信的核心组件主打高并发、高可用、精细化服务治理。