0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

tRPC跟Tars有什么联系?为什么要将tRPC开源?

OSC开源社区 来源:OSC开源社区 2023-11-17 11:06 次阅读

10 月 18 日,腾讯开源了 RPC 开发框架 ——tRPC,号称具有 “多语言、高性能” 的特点,首批开源支持 Go / Cpp 两种编程语言。众所周知,现有的开源 RPC 框架已经很多了, gRPC、Thrift、Dubbo、bRPC,难道就没有一个能腾讯满足需求吗,腾讯是不是在重复造轮子?我们真的需要这么多 RPC 框架吗? 为此,开源中国对腾讯 tRPC 团队进行了采访,来解答网友心中的部分疑惑。

一、有网友认为现有的开源 RPC 框架已经很多了,腾讯搞 tRPC 是在重复造轮子。您怎么看待这种观点?

存量的框架的确够多了,但对腾讯来说,多一套框架不能只是多了一套,核心是让存量归一。

以前在腾讯,都是由业务自己选择 RPC 框架,造成在用的框架种类繁多,有开源的,有自研的,达数十种。它们使用的通信协议不一样,使用的名字服务不一样,造成服务之间互通不顺畅,阻碍了业务的发展。同时,众多的 RPC 框架维护和使用成本也很高,急需收敛存量框架。是选择一个存量框架还是重新开发一个新的框架去做收敛,我们在开发 tRPC 之前,也深度思考了这个问题,并在内部进行了充分的讨论,最终决定采用自研 tRPC。因为腾讯的业务形态多样,对性能、开发语言支持、架构开放性等方面要求都比较高,已开源或者内部已有的 RPC 框架或多或少还不能完全满足腾讯业务的需求。

二、腾讯曾在 2017 年开源了 RPC 框架 Tars。今天的 tRPC 跟 Tars 有什么联系吗?为什么要另起炉灶又开发了个新的?

tRPC 和 Tars 是两个完全独立框架。不过,tRPC 设计之初也有借鉴 Tars 的部分设计,tRPC 的部分核心开发设计者曾经也是 Tars 的核心开发设计者。之所以要另起炉灶,主要还是因为 Tars 不能承担起公司内部框架存量归一的目标,自身架构上比较封闭是最主要的原因。而 tRPC 采用插件化的设计,架构开放性很强,很容易融入到已有的服务治理平台中去,更利于存量收敛。

三、tRPC 项目是从什么时候开始的?背后有什么故事值得分享吗?

tRPC 项目从 2019 开始,到现在已经 4 年多了。当时公司存量框架数量最多的时候,达数十种,严重影响了研发效率,阻碍业务进一步发展。tRPC 从成立到发展至今确实也发生了很多故事。比如在成立之初,对于是否应该另起炉灶去做 tRPC 来收敛存量框架,当时在公司内也是见解不一。我们内部论坛就这个问题有一个帖子,在全公司范围进行了激烈讨论,评论达到了上百条,pv 到达上万。不辩不明。

在内部经过这么大范围的讨论后,才最终确定了要自研 tRPC。研发 tRPC 得到公司内部技术人员的广泛支持。为了使 tRPC 能成为集大成的 RPC 框架,能够承担存量归一的重任,我们研发采用了内部社区模式,公司很多擅长框架开发的技术同事都主动积极参与进来,先后为 tRPC 贡献代码的人员有数百人之多。设计研发过程中也是各种思想碰撞,比如 tRPC 插件化的总体架构形态的确定,就是通过几次数十人的闭门会议,在激烈的争吵中形成的。

四、为什么要将 tRPC 开源?希望开源能给该项目带来什么?

开源 tRPC 的原因有两个:1. 公司内部业务对外扩展时需要。如游戏出海,业务需要在外部企业私有化部署,这时候因为业务开发使用了 tRPC,需要把代码交付出去。2. 希望通过开源对外做更多的技术分享交流,并借助社区的力量来进一步将 tRPC 打造得更好。

五、官方提到 tRPC 支持多种通信协议,能具体说一下支持哪些通信协议吗?协议的通用性和高性能可以兼得吗?

tRPC 框架默认支持 tRPC 协议,还支持业界 HTTP (s)/gRPC/bRPC/Tars/Thrift 协议,以及公司内部多种通信协议,目前只开源了 HTTP (s)/gRPC 协议,未来会逐步开源其它协议。

对于协议这块通用性和高性能是否兼得的问题,这里更多地要看业务场景和需求,如果想要通用性,可以选择 HTTP 或者 gRPC 协议,如果想要高性能,可以选择 tRPC 协议,因为协议本身设计和实现会对性能有比较大的影响。

六、相比较于其他开源框架,tRPC 出现得比较晚。从 RPC 框架的演进历史来看,tRPC 与其他开源 RPC 框架有什么本质上的区别吗?

RPC 框架演进到现在确实已经很成熟了,业界开源的 RPC 框架各自之间也都很难说有什么本质区别,更多的是符合各自业务发展的诉求。tRPC 出现的主要目的是做公司存量框架收敛,它有一定的后发优势,可以吸取已有存量框架的优点,规避不足,通过在高性能的基础上基于插件化思想去构建开放性的架构,使它能更适用于腾讯多样复杂的业务场景。

七、官方提到项目规划,主要有两点,一是开源更多编程语言:JavaPython、Node,二是丰富生态,开源更多云原生相关的插件和组件。想问下是出于哪些方面考虑,将其作为未来重点开发方向?

主要还是希望框架能够更广泛和高效地使用起来,更多的开发语言支持能覆盖更多的场景,如现在很多企业都是使用 Java 语言,tRPC 只有支持 Java 才有可能成为其候选。又如现在 AI 场景大部分都使用 Python,那么 tRPC 支持了 Python 才有可能被使用。

丰富生态也是希望 tRPC 能够帮助使用者能够更快速构建自己的微服务体系。目前大家都喜欢使用云原生相关的组件去构建自己的微服务体系,tRPC 如果能够丰富云原生的插件生态,那么用户使用 tRPC 和这些云原生的组件对接就会更高效快捷。

八、腾讯有 tRPC,百度有 bRPC,阿里有 Dubbo,字节有 Volo,为什么每个大厂都要开发自己的 RPC 框架?

大厂为什么都要开发自己的 RPC 框架?个人觉得主要还是业务形态决定的。虽然 RPC 框架看起来都差不多,但真正应用到业务时,根据业务的形态不同又会有很多差异。如果使用开源的框架,很有可能要费很大的成本才能解决这些差异,花费的时间周期也会更长,甚至可能解决不了。比如我们在游戏场景使用 tRPC 时,发现游戏这种有状态的业务场景,通用的 RPC 设计并不能满足其需求,我们也是基于 tRPC 插件化的架构,通过和游戏团队合作替换了底层通信组件后,才满足了游戏场景的需求。如果采用的开源框架,这个问题可能就很难解决了。

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    876

    浏览量

    40294
  • JAVA
    +关注

    关注

    19

    文章

    2964

    浏览量

    104688
  • AI
    AI
    +关注

    关注

    87

    文章

    30665

    浏览量

    268839
  • RPC
    RPC
    +关注

    关注

    0

    文章

    111

    浏览量

    11529
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84616

原文标题:腾讯重复造轮子?我们真的需要这么多RPC框架吗?

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    开源FPGA项目哪些

    请问开源FPGA项目哪些?
    发表于 12-26 12:09

    同步FIFO中值滤波法之间如何联系在一起

    本帖最后由 jiabowen0819 于 2015-3-13 15:52 编辑 我想编写一个3*3的滤波窗口 ,我写出了中值滤波处理FIFO,但是不知道这两个如何联系在一起,我对读出数据
    发表于 03-13 15:50

    鸿蒙OS与之前华为开源的LiteOS什么区别和联系

    了解下鸿蒙OS与之前华为开源的LiteOS什么区别和联系
    发表于 10-15 10:33

    东莞黄江收购退港电子料 全新单片机回收公司

    高频管,回收滤波器,收购高端电子元器件!深圳市科启达电子回收公司是一家实力电子回收公司,高同行,现金回收,只要你电子料,无论在哪里,我们公司都安排优秀的人员评估你的电子料!欢迎电话联系!一:新年份IC
    发表于 05-20 16:35

    LittlevGL开源图形库哪些特性

    LittlevGL是什么?LittlevGL开源图形库何功能?LittlevGL开源图形库哪些特性?
    发表于 11-05 09:18

    Tars在ARM平台上的移植是如何去实现的

    如下支持ARM64平台的实现:总结Tars的移植没有牵扯到太多CPU架构相关的代码,因此工作量不大,但需要我们对ARM64架构一定的了解,才能确保移植的准确性。该文的几个移植点具有通用性,对于其他应用移植到ARM64平台具有
    发表于 03-30 11:30

    Tars移植到ARM64平台上的过程实现

    for the Arm规范我们做了如下支持ARM64平台的实现:总结Tars的移植没有牵扯到太多CPU架构相关的代码,因此工作量不大,但需要我们对ARM64架构一定的了解,才能确保移植的准确性。该文的几个移植点具有通用性,
    发表于 07-05 14:59

    电感和磁珠什么联系与区别?

    电感和磁珠什么联系与区别? 电感是储能元件,而磁珠是能量转换(消耗)器件 电感多用于电源滤波回路,磁
    发表于 07-01 17:26 1273次阅读

    细菌电池些优点?

    细菌电池些优点? 生物学家预言,21世纪将是细菌发电造福人类的时代。说起细菌发电
    发表于 10-28 13:43 1177次阅读

    腾讯10大开源项目哪些?

    腾讯开源了许多非常有价值的项目,下面我们一起来看看腾讯10大开源项目哪些?
    的头像 发表于 03-29 10:16 1.1w次阅读
    腾讯10大<b class='flag-5'>开源</b>项目<b class='flag-5'>有</b>哪些?

    关于腾讯的开源分布式存储系统DCache

    腾讯最近开源了一个分布式 NoSQL 存储系统 DCache,它的典型应用场景就在分布式缓存。根据官方介绍,DCache 基于 TARS 微服务治理方案,它支持 k-v、k-k-row、list、set 与 zset 多种数据结构,数据基于内存存储,同时支持后接 DB 实
    发表于 08-01 10:42 2015次阅读

    华为鸿蒙OS和LiteOS必然联系吗?

    华为鸿蒙OS与LiteOS必然联系吗?
    的头像 发表于 02-27 16:38 1.1w次阅读

    基于TarsCpp-v3.0.0讨论协程在TarsCpp服务框架的实现

    Tars 是 Linux 基金会的开源项目,它是基于名字服务使用 Tars 协议的高性能 RPC 开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。
    的头像 发表于 05-09 09:41 948次阅读
    基于TarsCpp-v3.0.0讨论协程在TarsCpp服务框架的实现

    Tars框架使用NIO进行网络编程的源码分析

    Tars是腾讯开源的支持多语言的高性能RPC框架,起源于腾讯内部2008年至今一直使用的统一应用框架TAF(Total Application Framework),目前支持C++、Java、PHP、Nodejs、Go语言。
    的头像 发表于 06-26 17:31 650次阅读
    <b class='flag-5'>Tars</b>框架使用NIO进行网络编程的源码分析

    什么是干簧管呢?它霍尔元件什么区别和联系呢?

    什么是干簧管呢?它霍尔元件什么区别和联系呢? 干簧管是一种基于磁电效应的开关器件,广泛应用于电子和自动控制系统中。它由两个金属片组成,其中一个片上覆盖一个在有电流流过时产生磁场的线圈。当没有外部
    的头像 发表于 12-18 14:49 1144次阅读