开源公告|tRPC-多语言插件化高性能的RPC开发框架

c3c3376280ebb8c4fce2d8c94695feca.gif

03beba4b399d68ec9dd42322bc3ad5e3.png

1、项目简介

      tRPC是基于插件化理念设计的一款支持多语言、高性能的RPC开发框架,在腾讯内部得到广泛的应用。通过对底层通信的封装提供RPC的调用方式,可以轻松的进行分布式应用开发;基于插件化的架构能支持多种业务通信协议,灵活对接各种微服务治理平台,帮助业务快速构建所需的微服务体系。

      首批开源支持Go/Cpp两种编程语言,未来会开源更多编程语言的支持。

8605b60f2d8829f1df3a1d96ef9c27db.png

2、架构设计

      tRPC在架构设计上采用插件化设计思想,总体架构由 "框架" 和 "插件" 两部分组成, 其中虚线框内为tRPC,中间的红色实线框为框架,蓝色实线框为插件部分。tRPC将核心功能抽象封装成一个个独立的插件,然后由框架来负责这些独立插件的串联和拼装,从而实现框架所要支持的功能特性,通过这种设计使tRPC具备很强的开放性和可扩展性。此外框架还设计了admin管理接口,方便用户或者运营平台可以通过调用admin接口对服务进行管理。

625fe9701301da7941f45e926d651a4e.png

658489ec4aa07b139373b2dadfd88479.png

3、主要特点

● 跨语言:基于Protocol Buffers来实现跨语言的服务通信。

● 多通信协议:支持多种通信协议,方便与不同框架进行互通(比如gRPC)。

● 支持流式RPC:更好地适用于大文件上传/下载、消息Push、AI类语音识别/视频理解等多种应用场景。

● 丰富插件生态:提供大量对接业界微服务组件的插件(比如Consul/Promethues/Opentelemetry等),方便用户构建适合自己的服务治理体系。

● 可扩展:基于框架插件化的设计,用户可以进行二次开发来扩展框架能力,比如:RPC请求参数校验、鉴权、请求录制等。

● 流控和过载保护:提供多种应用场景下的流量控制和过载保护插件,防止服务因为访问突增造成过载而不可用。

f609d8d730247a7594e2140f25881d21.png

4、项目规划

● 开源更多编程语言:Java、Python、Node

● 丰富生态,开源更多云原生相关的插件和组建

762cdfd773030a95ac7dd8eb1139aa81.png

5、项目地址

● 项目官方网站:

https://trpc.group/

● Github主仓库:

https://github.com/trpc-group

● Github插件仓库:

https://github.com/trpc-ecosystem

请给项目 一个 Star !

欢迎提出你的 issue 和 PR!

关注腾讯开源公众号

获取更多最新腾讯官方开源信息!

f57cf1393e761dfadf0be06b56154693.png

04-01
### TRPC-Go 使用教程概述 TRPC-Go 是一个高性能、可插拔的 RPC 框架,专为微服务架构和分布式系统设计[^3]。以下是关于其安装、配置和基本使用方法的内容。 #### 安装 TRPC-Go 要开始使用 TRPC-Go,需先确认已正确安装 Go 语言环境。随后通过以下命令获取框架及其相关工具: ```bash go get -u github.com/trpc-group/trpc-go/trpc/cmd/trpc ``` 此命令会下载并安装必要的依赖项以及 `trpc` 命令行工具[^1]。 #### 创建基础服务 初始化一个新的 Go 项目后,可以创建一个简单的服务文件(如 `main.go`)。下面是一个典型的服务器端实现示例: ```go package main import ( "context" "github.com/trpc-group/trpc-go/trpc" "github.com/trpc-group/trpc-go/trpc/example" ) func main() { server := trpc.NewServer() server.RegisterService(new(example.Echo), "/example") if err := server.Serve("127.0.0.1:8080"); err != nil { panic(err) } } ``` 上述代码展示了如何注册一个名为 `/example` 的服务路径,并绑定具体的处理逻辑至该路径上。 #### 定义服务接口 在 TRPC-Go 中定义服务通常涉及编写协议缓冲区(Protocol Buffers, Protobuf)描述的服务接口。之后利用框架自带的工具生成对应的客户端和服务端代码。例如,运行如下命令即可基于 `.proto` 文件生成所需代码: ```bash trpc proto --out . ``` 这一步骤对于简化通信层开发至关重要[^2]。 #### 推荐资源 官方文档提供了详尽的操作指南和技术细节说明,建议访问 [GitHub 上的 tRPC-Go](https://github.com/trpc-group/trpc-go) 获取最新版本的信息和支持材料[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值