0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

tRPC跟Tars有什么聯(lián)系?為什么要將tRPC開源?

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-11-17 11:06 ? 次閱讀

10 月 18 日,騰訊開源了 RPC 開發(fā)框架 ——tRPC,號稱具有 “多語言、高性能” 的特點,首批開源支持 Go / Cpp 兩種編程語言。眾所周知,現(xiàn)有的開源 RPC 框架已經(jīng)很多了, gRPC、Thrift、Dubbo、bRPC,難道就沒有一個能騰訊滿足需求嗎,騰訊是不是在重復(fù)造輪子?我們真的需要這么多 RPC 框架嗎? 為此,開源中國對騰訊 tRPC 團隊進行了采訪,來解答網(wǎng)友心中的部分疑惑。

一、有網(wǎng)友認為現(xiàn)有的開源 RPC 框架已經(jīng)很多了,騰訊搞 tRPC 是在重復(fù)造輪子。您怎么看待這種觀點?

存量的框架的確夠多了,但對騰訊來說,多一套框架不能只是多了一套,核心是讓存量歸一。

以前在騰訊,都是由業(yè)務(wù)自己選擇 RPC 框架,造成在用的框架種類繁多,有開源的,有自研的,達數(shù)十種。它們使用的通信協(xié)議不一樣,使用的名字服務(wù)不一樣,造成服務(wù)之間互通不順暢,阻礙了業(yè)務(wù)的發(fā)展。同時,眾多的 RPC 框架維護和使用成本也很高,急需收斂存量框架。是選擇一個存量框架還是重新開發(fā)一個新的框架去做收斂,我們在開發(fā) tRPC 之前,也深度思考了這個問題,并在內(nèi)部進行了充分的討論,最終決定采用自研 tRPC。因為騰訊的業(yè)務(wù)形態(tài)多樣,對性能、開發(fā)語言支持、架構(gòu)開放性等方面要求都比較高,已開源或者內(nèi)部已有的 RPC 框架或多或少還不能完全滿足騰訊業(yè)務(wù)的需求。

二、騰訊曾在 2017 年開源了 RPC 框架 Tars。今天的 tRPC 跟 Tars 有什么聯(lián)系嗎?為什么要另起爐灶又開發(fā)了個新的?

tRPC 和 Tars 是兩個完全獨立框架。不過,tRPC 設(shè)計之初也有借鑒 Tars 的部分設(shè)計,tRPC 的部分核心開發(fā)設(shè)計者曾經(jīng)也是 Tars 的核心開發(fā)設(shè)計者。之所以要另起爐灶,主要還是因為 Tars 不能承擔(dān)起公司內(nèi)部框架存量歸一的目標,自身架構(gòu)上比較封閉是最主要的原因。而 tRPC 采用插件化的設(shè)計,架構(gòu)開放性很強,很容易融入到已有的服務(wù)治理平臺中去,更利于存量收斂。

三、tRPC 項目是從什么時候開始的?背后有什么故事值得分享嗎?

tRPC 項目從 2019 開始,到現(xiàn)在已經(jīng) 4 年多了。當時公司存量框架數(shù)量最多的時候,達數(shù)十種,嚴重影響了研發(fā)效率,阻礙業(yè)務(wù)進一步發(fā)展。tRPC 從成立到發(fā)展至今確實也發(fā)生了很多故事。比如在成立之初,對于是否應(yīng)該另起爐灶去做 tRPC 來收斂存量框架,當時在公司內(nèi)也是見解不一。我們內(nèi)部論壇就這個問題有一個帖子,在全公司范圍進行了激烈討論,評論達到了上百條,pv 到達上萬。不辯不明。

在內(nèi)部經(jīng)過這么大范圍的討論后,才最終確定了要自研 tRPC。研發(fā) tRPC 得到公司內(nèi)部技術(shù)人員的廣泛支持。為了使 tRPC 能成為集大成的 RPC 框架,能夠承擔(dān)存量歸一的重任,我們研發(fā)采用了內(nèi)部社區(qū)模式,公司很多擅長框架開發(fā)的技術(shù)同事都主動積極參與進來,先后為 tRPC 貢獻代碼的人員有數(shù)百人之多。設(shè)計研發(fā)過程中也是各種思想碰撞,比如 tRPC 插件化的總體架構(gòu)形態(tài)的確定,就是通過幾次數(shù)十人的閉門會議,在激烈的爭吵中形成的。

四、為什么要將 tRPC 開源?希望開源能給該項目帶來什么?

開源 tRPC 的原因有兩個:1. 公司內(nèi)部業(yè)務(wù)對外擴展時需要。如游戲出海,業(yè)務(wù)需要在外部企業(yè)私有化部署,這時候因為業(yè)務(wù)開發(fā)使用了 tRPC,需要把代碼交付出去。2. 希望通過開源對外做更多的技術(shù)分享交流,并借助社區(qū)的力量來進一步將 tRPC 打造得更好。

五、官方提到 tRPC 支持多種通信協(xié)議,能具體說一下支持哪些通信協(xié)議嗎?協(xié)議的通用性和高性能可以兼得嗎?

tRPC 框架默認支持 tRPC 協(xié)議,還支持業(yè)界 HTTP (s)/gRPC/bRPC/Tars/Thrift 協(xié)議,以及公司內(nèi)部多種通信協(xié)議,目前只開源了 HTTP (s)/gRPC 協(xié)議,未來會逐步開源其它協(xié)議。

對于協(xié)議這塊通用性和高性能是否兼得的問題,這里更多地要看業(yè)務(wù)場景和需求,如果想要通用性,可以選擇 HTTP 或者 gRPC 協(xié)議,如果想要高性能,可以選擇 tRPC 協(xié)議,因為協(xié)議本身設(shè)計和實現(xiàn)會對性能有比較大的影響。

六、相比較于其他開源框架,tRPC 出現(xiàn)得比較晚。從 RPC 框架的演進歷史來看,tRPC 與其他開源 RPC 框架有什么本質(zhì)上的區(qū)別嗎?

RPC 框架演進到現(xiàn)在確實已經(jīng)很成熟了,業(yè)界開源的 RPC 框架各自之間也都很難說有什么本質(zhì)區(qū)別,更多的是符合各自業(yè)務(wù)發(fā)展的訴求。tRPC 出現(xiàn)的主要目的是做公司存量框架收斂,它有一定的后發(fā)優(yōu)勢,可以吸取已有存量框架的優(yōu)點,規(guī)避不足,通過在高性能的基礎(chǔ)上基于插件化思想去構(gòu)建開放性的架構(gòu),使它能更適用于騰訊多樣復(fù)雜的業(yè)務(wù)場景。

七、官方提到項目規(guī)劃,主要有兩點,一是開源更多編程語言:Java、Python、Node,二是豐富生態(tài),開源更多云原生相關(guān)的插件和組件。想問下是出于哪些方面考慮,將其作為未來重點開發(fā)方向?

主要還是希望框架能夠更廣泛和高效地使用起來,更多的開發(fā)語言支持能覆蓋更多的場景,如現(xiàn)在很多企業(yè)都是使用 Java 語言,tRPC 只有支持 Java 才有可能成為其候選。又如現(xiàn)在 AI 場景大部分都使用 Python,那么 tRPC 支持了 Python 才有可能被使用。

豐富生態(tài)也是希望 tRPC 能夠幫助使用者能夠更快速構(gòu)建自己的微服務(wù)體系。目前大家都喜歡使用云原生相關(guān)的組件去構(gòu)建自己的微服務(wù)體系,tRPC 如果能夠豐富云原生的插件生態(tài),那么用戶使用 tRPC 和這些云原生的組件對接就會更高效快捷。

八、騰訊有 tRPC,百度有 bRPC,阿里有 Dubbo,字節(jié)有 Volo,為什么每個大廠都要開發(fā)自己的 RPC 框架?

大廠為什么都要開發(fā)自己的 RPC 框架?個人覺得主要還是業(yè)務(wù)形態(tài)決定的。雖然 RPC 框架看起來都差不多,但真正應(yīng)用到業(yè)務(wù)時,根據(jù)業(yè)務(wù)的形態(tài)不同又會有很多差異。如果使用開源的框架,很有可能要費很大的成本才能解決這些差異,花費的時間周期也會更長,甚至可能解決不了。比如我們在游戲場景使用 tRPC 時,發(fā)現(xiàn)游戲這種有狀態(tài)的業(yè)務(wù)場景,通用的 RPC 設(shè)計并不能滿足其需求,我們也是基于 tRPC 插件化的架構(gòu),通過和游戲團隊合作替換了底層通信組件后,才滿足了游戲場景的需求。如果采用的開源框架,這個問題可能就很難解決了。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    840

    瀏覽量

    40215
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104477
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29806

    瀏覽量

    268103
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11493
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375

原文標題:騰訊重復(fù)造輪子?我們真的需要這么多RPC框架嗎?

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    開源FPGA項目哪些

    請問開源FPGA項目哪些?
    發(fā)表于 12-26 12:09

    同步FIFO中值濾波法之間如何聯(lián)系在一起

    本帖最后由 jiabowen0819 于 2015-3-13 15:52 編輯 我想編寫一個3*3的濾波窗口 ,我寫出了中值濾波處理FIFO,但是不知道這兩個如何聯(lián)系在一起,我對讀出數(shù)據(jù)
    發(fā)表于 03-13 15:50

    鴻蒙OS與之前華為開源的LiteOS什么區(qū)別和聯(lián)系?

    了解下鴻蒙OS與之前華為開源的LiteOS什么區(qū)別和聯(lián)系
    發(fā)表于 10-15 10:33

    東莞黃江收購?fù)烁垭娮恿?全新單片機回收公司

    高頻管,回收濾波器,收購高端電子元器件!深圳市科啟達電子回收公司是一家實力電子回收公司,高同行,現(xiàn)金回收,只要你電子料,無論在哪里,我們公司都安排優(yōu)秀的人員評估你的電子料!歡迎電話聯(lián)系!一:新年份IC
    發(fā)表于 05-20 16:35

    LittlevGL開源圖形庫哪些特性

    LittlevGL是什么?LittlevGL開源圖形庫何功能?LittlevGL開源圖形庫哪些特性?
    發(fā)表于 11-05 09:18

    Tars在ARM平臺上的移植是如何去實現(xiàn)的

    如下支持ARM64平臺的實現(xiàn):總結(jié)Tars的移植沒有牽扯到太多CPU架構(gòu)相關(guān)的代碼,因此工作量不大,但需要我們對ARM64架構(gòu)一定的了解,才能確保移植的準確性。該文的幾個移植點具有通用性,對于其他應(yīng)用移植到ARM64平臺具有
    發(fā)表于 03-30 11:30

    Tars移植到ARM64平臺上的過程實現(xiàn)

    for the Arm規(guī)范我們做了如下支持ARM64平臺的實現(xiàn):總結(jié)Tars的移植沒有牽扯到太多CPU架構(gòu)相關(guān)的代碼,因此工作量不大,但需要我們對ARM64架構(gòu)一定的了解,才能確保移植的準確性。該文的幾個移植點具有通用性,
    發(fā)表于 07-05 14:59

    電感和磁珠什么聯(lián)系與區(qū)別?

    電感和磁珠什么聯(lián)系與區(qū)別? 電感是儲能元件,而磁珠是能量轉(zhuǎn)換(消耗)器件 電感多用于電源濾波回路,磁
    發(fā)表于 07-01 17:26 ?1269次閱讀

    細菌電池些優(yōu)點?

    細菌電池些優(yōu)點? 生物學(xué)家預(yù)言,21世紀將是細菌發(fā)電造福人類的時代。說起細菌發(fā)電
    發(fā)表于 10-28 13:43 ?1170次閱讀

    騰訊10大開源項目哪些?

    騰訊開源了許多非常有價值的項目,下面我們一起來看看騰訊10大開源項目哪些?
    的頭像 發(fā)表于 03-29 10:16 ?1.1w次閱讀
    騰訊10大<b class='flag-5'>開源</b>項目<b class='flag-5'>有</b>哪些?

    關(guān)于騰訊的開源分布式存儲系統(tǒng)DCache

    騰訊最近開源了一個分布式 NoSQL 存儲系統(tǒng) DCache,它的典型應(yīng)用場景就在分布式緩存。根據(jù)官方介紹,DCache 基于 TARS 微服務(wù)治理方案,它支持 k-v、k-k-row、list、set 與 zset 多種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)基于內(nèi)存存儲,同時支持后接 DB 實
    發(fā)表于 08-01 10:42 ?2000次閱讀

    華為鴻蒙OS和LiteOS必然聯(lián)系嗎?

    華為鴻蒙OS與LiteOS必然聯(lián)系嗎?
    的頭像 發(fā)表于 02-27 16:38 ?1.1w次閱讀

    基于TarsCpp-v3.0.0討論協(xié)程在TarsCpp服務(wù)框架的實現(xiàn)

    Tars 是 Linux 基金會的開源項目,它是基于名字服務(wù)使用 Tars 協(xié)議的高性能 RPC 開發(fā)框架,配套一體化的運營管理平臺,并通過伸縮調(diào)度,實現(xiàn)運維半托管服務(wù)。
    的頭像 發(fā)表于 05-09 09:41 ?921次閱讀
    基于TarsCpp-v3.0.0討論協(xié)程在TarsCpp服務(wù)框架的實現(xiàn)

    Tars框架使用NIO進行網(wǎng)絡(luò)編程的源碼分析

    Tars是騰訊開源的支持多語言的高性能RPC框架,起源于騰訊內(nèi)部2008年至今一直使用的統(tǒng)一應(yīng)用框架TAF(Total Application Framework),目前支持C++、Java、PHP、Nodejs、Go語言。
    的頭像 發(fā)表于 06-26 17:31 ?618次閱讀
    <b class='flag-5'>Tars</b>框架使用NIO進行網(wǎng)絡(luò)編程的源碼分析

    什么是干簧管呢?它霍爾元件什么區(qū)別和聯(lián)系呢?

    什么是干簧管呢?它霍爾元件什么區(qū)別和聯(lián)系呢? 干簧管是一種基于磁電效應(yīng)的開關(guān)器件,廣泛應(yīng)用于電子和自動控制系統(tǒng)中。它由兩個金屬片組成,其中一個片上覆蓋一個在有電流流過時產(chǎn)生磁場的線圈。當沒有外部
    的頭像 發(fā)表于 12-18 14:49 ?1004次閱讀