[RPC框架]rpc框架有哪些

4 阅读6分钟

在微服务领域,当前业界“用得比较多”的RPC框架已形成清晰的“一超多强、技术栈分流”格局。 跨语言、云原生场景下gRPC是公认的事实标准;Java生态尤其是国内企业Dubbo占据存量与治理优势;Thrift、Kitex、Kratos等则在特定语言或历史传承中扮演关键角色。

以下从技术栈视角为您梳理当前微服务RPC框架的全景与选型逻辑:


一、全景概览:主流RPC框架分类图谱

框架主导语言核心定位2025-2026行业共识
gRPC多语言(C++/Go/Java等)云原生时代跨语言RPC标准服务规模≥50节点或跨3个技术栈时的首选,服务网格xDS原生适配
DubboJava(多语言扩展中)Java生态企业级服务治理框架国内Java存量市场统治级份额,日均千亿级调用验证
Thrift多语言高性能二进制RPC,IDL灵活大型公司历史架构重,生态活跃度弱于gRPC,但仍被部分AI/大数据场景采用
KitexGo字节跳动开源,高吞吐Go微服务中国互联网公司Go技术栈增量首选之一,Thrift/Protobuf双栈
KratosGoB站开源,企业级微服务套件内置gRPC/HTTP,适合中大型Go团队,服务网格就绪
Spring Cloud HTTPJava基于REST的“非严格RPC”中小团队、开发效率优先场景最广泛,但性能非极致

二、第一梯队(行业事实标准):gRPC

gRPC目前是业界采用率增长最快、跨语言场景默认选型的RPC框架。

✅ 核心驱动力

  1. 契约优先(IDL)强管控.proto文件驱动,自动生成多语言客户端,版本兼容性内置,彻底解决跨团队协作的接口漂移问题
  2. 云原生基座完备:原生支持xDS协议,可直接接入Istio/Envoy服务网格;OpenTelemetry可观测性拦截器一行代码注入
  3. 性能碾压HTTP/1.1:Protobuf二进制序列化+HTTP/2多路复用,小包高频场景吞吐量可达REST的3-5倍,延迟低5-10倍
  4. 企业级生态背书:谷歌全球基础设施统一标准,Spotify、谷歌云等已将gRPC作为后端唯一RPC协议

⚠️ 适用边界

  • 不适合对外暴露:调试工具链不如HTTP丰富,浏览器友好度低。
  • 不适合极轻量场景:QPS<1k、团队无多语言需求时,引入成本可能大于收益。

三、第二梯队(语言/生态绑定型)

1. Dubbo —— Java生态的“存量之王”

在Java技术栈,尤其是中国互联网企业,Dubbo是RPC调用的事实统治者。

  • 体量实证vivo日均RPC调用量高达8000亿次,支撑5亿用户、万级服务、十万级机器,2018年完成全网Java RPC框架统一为Dubbo。
  • 核心优势服务治理能力极强(路由、标签、就近访问、流量管控),与Nacos/Spring Cloud Alibaba生态无缝整合。
  • 最新演进:已支持应用级注册、响应式编程、多语言(Dubbo-go),正从“Java框架”向“多语言服务治理平台”演进。
  • 典型场景:电商、金融、制造等Java重资产企业,新项目若技术栈锁定Java且对治理能力要求高,Dubbo仍是重要选项

2. Apache Thrift —— 历史选型,稳定传承

  • Facebook开源,支持多种传输协议(TCP/HTTP)与序列化格式,IDL非强制。
  • 仍被部分大数据组件(HBase、Cassandra)及早期建设的大型系统采用。
  • 目前新项目鲜有选用,但存量维护需求持续存在。

3. Kitex —— Go语言高并发新锐

  • 字节跳动开源,专为Go大规模微服务优化,连接池、自适应流控、服务治理模块完备。
  • 吞吐量表现优异:Thrift协议场景18k QPS,Protobuf场景近30k QPS(1K并发)。
  • 采用趋势:中国互联网公司(如滴滴、好未来)Go技术栈增量项目选型率快速上升。

4. Kratos —— 企业级Go微服务套件

  • B站开源,非单纯RPC框架,而是完整微服务解决方案(含配置、日志、元数据)。
  • 通信层同时支持gRPC与HTTP,可一键切换,服务网格就绪态验证完善。
  • 适合追求工程标准化、不愿自行组装gRPC基础设施的Go团队

四、第三梯队(轻量/过渡方案)

1. Spring Cloud HTTP(REST/OpenFeign)

  • 全球Java微服务开发最广泛的通信方式,非二进制RPC,但承担了绝大多数企业内部调用。
  • 优势:调试极简、防火墙友好、学习成本为零
  • 劣势:JSON序列化开销大,连接复用弱,当单个业务链路调用超过5跳或QPS>5000时,往往是性能瓶颈源头
  • 当前行业主流做法:对外HTTP,对内高频路径切gRPC,网关层转译。

2. 轻量REST(Gin/Echo等)

  • Go语言中小型服务常见选型,本质是HTTP框架,但承担RPC职责
  • 无服务治理内置,需自行集成注册中心与可观测性。

五、选型决策:2026年实用建议

✅ 场景A:跨语言、云原生、新项目

→ 直接选择 gRPC

  • 不论您用Go、Java、Python还是Node.js,gRPC已成为多云/混合云环境下沟通成本最低的契约方案
  • 服务治理层可由Istio + Envoy承载,框架仅需关注业务通信,gRPC是唯一与Sidecar模型原生互通的RPC协议

✅ 场景B:Java技术栈,存量系统大,治理需求重

→ 选择 Dubbo(或 Dubbo + gRPC 协议适配)

  • 若您已有Nacos/Spring Cloud Alibaba基础设施,Dubbo提供开箱即用的路由、标签、流量管控,代码侵入极低。
  • 最新Dubbo版本已支持gRPC协议,可在不改变编程模型前提下享受Protobuf性能红利。

✅ 场景C:Go技术栈,追求极致性能+自闭环

→ Kitex(字节生态) 或 Kratos(B站生态)

  • Kitex在高并发连接池、多协议自适应方面有深度优化,适合大规模Go专用集群。
  • Kratos提供完整微服务套件,适合需要快速搭建规范化治理体系的团队。

✅ 场景D:小型团队、研发效率优先

→ 继续使用 Spring Cloud HTTP / Gin

  • 不需要为了“技术先进”而强行上RPC。HTTP在调用频次低、调试频繁、人员流动大的场景依然是综合成本最低的选择。

总结:微服务RPC框架早已不是“技术够不够用”的问题,而是规模化后的效率与成本博弈。gRPC正以协议标准化优势吞噬增量市场,Dubbo在Java存量领域地位稳固,Go生态则呈现Kitex与Kratos双星格局。清晰的选型不是追逐最热,而是匹配自身业务阶段与技术栈惯性。