当前位置: 首页 > news >正文

tRPC-Go 框架 01:tRPC-Go 总览与核心架构

tRPC-Go 框架 01:tRPC-Go 总览与核心架构

tRPC 是腾讯开源的多语言 RPC 框架,tRPC-Go是其 Go 语言实现,已在腾讯内部支撑了海量服务(视频、音乐、新闻、广告等),日均调用量万亿级。本篇我们站高一点,俯瞰 tRPC-Go 的整体架构与设计理念。

一、tRPC 是什么?

tRPC =tencentRPCFramework

它是一个:

  • 多语言:Go / C++ / Java / Python / Node.js / Rust …
  • 多协议:原生 trpc / gRPC / HTTP / 自定义
  • 可插拔:服务治理、配置、可观测皆为插件
  • 云原生:与 Kubernetes、Polaris 深度集成

官方仓库:https://github.com/trpc-group/trpc-go

二、为什么需要又一个 RPC 框架?

业界已有 gRPC、Dubbo,为什么腾讯还要做 tRPC?

维度gRPCtRPC
协议绑定仅 HTTP/2+Protobuf协议可插拔
多语言一致性各语言实现略有差异各语言行为一致
服务治理需要自行集成 Istio 等内建 Polaris、配置中心、可观测
国内生态适配强(腾讯/北极星/天机阁/七彩石)
周边脚手架需要自行拼装trpc-cmdline 一键创建

核心动因:在腾讯内部多语言、多协议、多基础设施环境下,需要一个统一、灵活、易扩展的 RPC 框架。

三、设计理念

3.1 一切皆插件

tRPC-Go 的核心非常薄,所有能力(编解码、传输、注册中心、负载均衡、限流、日志、监控)都通过插件接口实现:

typePlugininterface{Type()stringSetup(namestring,decoder Decoder)error}

这意味着切换注册中心、加监控点、改协议只需改配置或加一行 import,业务代码零侵入。

3.2 接口定义先行

tRPC 强制以.proto为接口契约,通过trpc-cmdline工具生成桩代码:

trpc create-phello.proto-o.

生成的代码包含:

  • 服务端接口(你来实现);
  • 客户端 stub(直接调用);
  • mock(测试用)。

3.3 配置驱动

所有运行时行为通过trpc_go.yaml配置:

server:service:-name:trpc.app.server.Greeterip:127.0.0.1port:8000protocol:trpcclient:service:-name:trpc.app.user.Usertarget:polaris://trpc.app.user.Userprotocol:trpctimeout:1000plugins:log:default:...registry:polaris:...

四、整体架构图

┌─────────────────────────────────────────────────────────┐ │ 业务代码 (handler) │ └─────────────────────────────────────────────────────────┘ ▲ ▲ │ 服务端 │ 客户端 ┌───────────┴──────────────┐ ┌──────────────┴──────────┐ │ Filter Chain (拦截器) │ │ Filter Chain (拦截器) │ └───────────┬──────────────┘ └──────────────┬──────────┘ ▼ ▼ ┌──────────────────────────┐ ┌─────────────────────────┐ │ Codec(编解码) │ │ Codec(编解码) │ └───────────┬──────────────┘ └──────────────┬──────────┘ ▼ ▼ ┌──────────────────────────┐ ┌─────────────────────────┐ │ Transport(传输层) │ │ Transport(传输层) │ └───────────┬──────────────┘ └──────────────┬──────────┘ └─────────── Network ────────────┘ ┌─────────────────┐ │ 插件层(贯穿全局) │ │ 注册中心 / LB │ │ 监控 / 日志 │ │ 配置中心 / 限流 │ └─────────────────┘

五、核心组件详解

5.1 Service / Server / Client

  • Server:进程级别,可以承载多个 Service;
  • Service:一个 RPC 服务(一组方法);
  • Client:调用端代理。
// Server 启动s:=trpc.NewServer()pb.RegisterGreeterService(s,&greeterImpl{})s.Serve()// Client 调用proxy:=pb.NewGreeterClientProxy()resp,err:=proxy.Hello(ctx,req)

5.2 Codec(编解码)

负责消息打包/拆包、协议头与 body 的处理。tRPC 内置:

  • trpc(默认,二进制+protobuf)
  • http(HTTP+JSON 或 HTTP+protobuf)
  • grpc(HTTP/2+protobuf,与 gRPC 互通)

通过protocol配置切换:

protocol:trpc|http|grpc|http_no_protocol

5.3 Transport(传输层)

抽象底层网络通信,默认 TCP,支持:

  • TCP / UDP
  • 自定义 transport(如基于共享内存)

5.4 Filter(拦截器)

类似 Java Servlet Filter / Express middleware,对所有调用做横切处理:

typeFilterfunc(ctx context.Context,req,rsp any,next Handler)error

经典用途:

  • 日志、监控、链路追踪;
  • 鉴权;
  • 限流熔断;
  • 重试。

注册:

server:filter:[recovery,debuglog,openTelemetry]client:filter:[retry,breaker,debuglog]

5.5 Selector(服务发现 + LB + 路由)

selector("polaris://trpc.app.user") │ ├─ Discovery:拉实例列表 ├─ ServiceRouter:路由筛选 ├─ LoadBalancer:负载均衡 └─ CircuitBreaker:熔断

每一步都可独立替换。

5.6 Naming(命名服务)

target 的格式:

<schema>://<service-name>?<key=value>&<key=value>

例:

polaris://trpc.app.user?namespace=Production ip://127.0.0.1:8000 dns://www.example.com:80

5.7 Plugin

插件框架是 tRPC-Go 的"骨架"。注册一个插件:

plugin.Register("polaris",&PolarisPlugin{})

启动时根据trpc_go.yaml加载对应插件。

六、一次完整的服务端调用流程

1. TCP accept (Transport) 2. 拆包 + 解码协议头 (Codec) 3. 解码 body 为 message (Codec) 4. 路由到 method (Server) 5. Filter 链:日志 / 监控 / 鉴权… (Filter) 6. 调用 handler (业务代码) 7. 返回值经 Filter 反向链 (Filter) 8. 编码响应 (Codec) 9. 写回 TCP (Transport)

七、一次完整的客户端调用流程

1. proxy.Method(ctx, req) 2. Filter 链:retry / circuit / 监控 3. Selector:选目标实例 4. Codec:编码 req 5. Transport:网络发送 6. Transport:接收 response 7. Codec:解码 response 8. Filter 链反向 9. 返回业务调用方

八、生态全景

围绕 tRPC-Go 还有一系列周边:

工具/库作用
trpc-cmdline项目脚手架与代码生成
trpc-cli客户端调试
trpc-go-database数据库驱动封装
trpc-filter-*各类内置 filter
trpc-naming-polaris北极星命名服务插件
trpc-config-*配置中心插件(rainbow/etcd…)
trpc-log-*日志插件(atta/zap)
trpc-metrics-*监控指标插件
trpc-opentelemetry链路追踪

九、与 gRPC 的关系

tRPC 不是要取代 gRPC,而是包含 gRPC

  • 你可以让 tRPC 服务以 gRPC 协议对外提供;
  • 你可以让 tRPC 客户端调用 gRPC 服务;
  • 也可以让 tRPC 服务被 gRPC 客户端调用。

所谓"协议互通"是 tRPC 设计中重要的一环。

十、最小化体验

# 1. 安装命令行工具goinstalltrpc.group/trpc-go/trpc-cmdline/trpc@latest# 2. 创建一个 protocat>hello.proto<<'EOF' syntax = "proto3"; package helloworld; option go_package = "git.code.oa.com/examples/helloworld"; service HelloWorld { rpc Hello(HelloReq) returns (HelloRsp); } message HelloReq { string msg = 1; } message HelloRsp { string msg = 1; } EOF# 3. 生成项目骨架trpc create-phello.proto-o.# 4. 启动go run main.go

十一、小结

  • tRPC-Go = 多语言 + 多协议 + 全插件化的 RPC 框架;
  • 一切皆插件 / 接口先行 / 配置驱动 三大设计原则;
  • 核心组件:Codec、Transport、Filter、Selector、Plugin;
  • 与 Polaris、北极星、七彩石、天机阁等深度集成。

下一篇我们将动手搭建第一个 tRPC-Go 服务,从 0 到 1 跑通 Hello World

http://www.jsqmd.com/news/859593/

相关文章:

  • 2026无锡高端西装定制权威评测:制造之都的商务着装智慧 - 西装爱好者
  • CentOS 7安装卡在dracut界面?手把手教你排查U盘盘符和修改引导参数
  • 2026电磁阀厂家哪家好?行业选购要点解析 - 品牌排行榜
  • 2026濮阳高性价比软件开发企业靠谱排行榜 - 资讯速览
  • Java找工作别老盯着所谓的“金三银四”与“金九银十”!
  • 用Python搞定CEEMDAN信号分解:从振动信号到故障诊断的完整实战流程
  • 2026年河北联邦外国语学校升学实力评测:用升学硬数据说话 - 奔跑123
  • 宝塔面板301重定向保姆级教程:从WWW跳转到Nginx/Apache配置文件修改,一篇搞定
  • 2026年漳州市政疏通清理工程优质服务商推荐榜:沉淀池/污水池/管道修复/河道清理 - 海棠依旧大
  • 2026年红木整装公司评价排行榜,比较不错的红木整装企业/靠谱的红木整装企业/实力强的红木整装企业 - 品牌推广大师
  • 国省道主干线治超专用系统排行 广州聚杰治超不停车称重系统普及率高 - 品牌速递
  • 2026年Q2中国管道修复优质厂家首选推荐:合肥玉通管道工程有限公司 - 安互工业信息
  • 淘宝指定店铺商品销量与价格数据监控实战指南
  • 3步终极指南:高效解密网易云音乐NCM文件格式转换
  • 2026程序员面试必备工具盘点|刷题/简历/模拟面试/复盘全覆盖(亲测好用)
  • 手把手教你为国产裕太YT8511 PHY芯片适配U-boot驱动(附完整代码)
  • 南京学生心理咨询机构选择:专业服务与机构解析 - 品牌排行榜
  • 流水线铝型材常见问题解答(2026最新专家版) - 资讯速览
  • 2026年5月沙盘模型厂家最新推荐:房地产、山体、机械、工业、多媒体、规划、全品类沙盘模型设计制作定制优选指南 - 海棠依旧大
  • 宣城线下中小学辅导机构权威推荐 - 资讯速览
  • ElevenLabs陕西话语音上线倒计时:政策合规红线+广电备案要点+方言数据脱敏清单(2024Q3最新监管口径)
  • 独立开发者如何利用Taotoken模型广场快速进行AI产品原型选型
  • 2026年5月漳州污水管道清淤池体清理厂家最新推荐:沉淀池清理、管道疏通修复、吸污车租赁实用参考指南 - 海棠依旧大
  • 2026通关榜!好用的降AIGC平台全盘点,AIGC痕迹直接抹平!
  • 辽宁森信再生资源:合规专业的本地电脑回收服务商 - 奔跑123
  • AI应用开发与AI Agent开发入门指南:收藏这份后端程序员转型必看资料
  • Unity项目里如何优雅地做热更新?试试用Embedded Browser加载本地HTML当UI界面
  • 对比按量计费与Token Plan套餐哪种方式更节省成本
  • 2026年值得信赖的唇彩灌装机公司认准金华市启点机械科技有限公司 - 品牌推广大师
  • 2026年靠谱推荐:濮阳软件开发代理公司排行榜TOP10 - 资讯速览