搜狗開源srpc 自研高效能通用RPC框架

2022-09-30 07:21:10 字數 1847 閱讀 6692

今年 7 月底,搜狗公司開源了內部的工業級c++伺服器引擎workflow,一路收穫業內許多認可和關注。 9 月 15 日,作為workflow最重要的生態專案——srpc,乙個基於其打造的輕量級rpc框架,也在github上開源了。

github搜尋「sogou srpc」即可找到該專案。

乙個效能更好的thrift/brpc

srpc與thrift/brpc是協議與idl均互通的。srpc除了自帶的sogou-std協議以外,還實現了baidu-std協議和thrift framed協議,因此srpc可以與thrift或brpc(連線池模式)互通。另外,介面描述檔案支援protobuf和thrift,這意味著使用者不僅可以一鍵遷移基於protobuf或thrift作為idl的專案,還可以用srpc作為乙個效能更優的thrift框架或者brpc框架。

與thrift相比,srpc所實現的thrift framed協議在吞吐和長尾方面效能都遠超thrift原生框架。且srpc對於thrift介面描述檔案實現了解析和**生成,因此使用者在srpc上使用thrift idl時無需依賴thrift庫。

而在baidu-std協議的實現上,吞吐和長尾在大部分場景下依然是srpc更優。且由於workflow支援windows(同機效能比linux快20%),所以這等同於使用者得以在windows下使用brpc。還有一點值得一提的是,同樣是支援protobuf的rpc框架,由於srpc實現了部分idl解析和**生成,介面形式無需受protobuf原始限制,因而所提供的介面比brpc更為簡潔,以server的rpc介面為例:

乙個通用、易擴充套件的rpc框架

除了支援binary傳輸,還支援http+json和http+binary的傳輸方式,業務可以借用http實現跨語言,而傳輸本身對業務透明。這是除了上述介紹的協議層和介面描述檔案層以外,srpc的另外乙個重要層次。其中傳輸方式和協議層還可以互相結合,如果接收方為任何一種協議+http作傳輸的server,則使用者都可以對其輕鬆地傳送乙個如下請求:

srpc內部實現層次精巧,非常注重縱向層次拆分和橫向解耦。其中壓縮層、序列化層、協議層是互相解耦的,利用函式過載、派生子類實現父類介面和模版特化等多種多型方式,來實現內部使用同一套**的高度復用。後續架構公升級或者使用者進行二次開發,無論是中間再加一層、還是某層內橫向新增一種內容,都不需要改動現有的**,十分方便。

乙個打通了workfflow、功能更強大的任務流rpc

任務流是workflow 在設計之初就引入的概念,其可將資源高度封裝,使用者可不用關心內部細節、不接觸到連線池、執行緒池,僅需要了程式設計客棧解業務關係就能實現複雜的業務邏輯。srpc除了提供同步、半同步介面外,其非同步介面可以利用context拿到series來打通workflow 任務流,這就意味著srpc可以把rpc呼叫當作任務流來組建。

srpc還可以使用workflow 自帶的其他功能,一方面是服務治理。workflow 的upseffaskchstream是本程序內把一批機器繫結到乙個網域名稱下,自帶多種方式的負載均衡和熔斷恢復等機制,srpc的client對應的是乙個ip,或者乙個帶本地服務治理的集群,直接可以使用負載均衡和熔斷恢復等機制。

另一方面,srpc 還可以呼叫 workflow 其他資源。rpc只是網路資源,而workflow 包含了如計算排程和非同步檔案io等資源,www.cppcns.com還有目前已經實現的多種常用網路協議(包括http、redis、mysql、kafka),這些都可以為srpc所程式設計客棧用。

srpc目前在搜狗搜尋和搜狐集團團隊中多個線上業務已經穩定使用一段時間,由於介面簡介易上手,且直接打通workflow的任務流、計算排程、服務治理等功能, 因此對開發效率有非常大的提公升。但srpc相對來說也是乙個很年輕且**量不多(約一萬行)的專案,搜狗後續還會持續推進其生態建設,有effaskchs信心為不同的rpc開發場景提供更加全面的解決方案。

本文位址:

騰訊開源高效能通用頻率控制項 libwxfreq

元件特性 配置檔案 格式min interval 表示第乙個統計時長的統計值,mid interval 表示第二個統計時長的統計值,max interval 表示第三個統計時長的統計值.例子 100 30,60,90 rule1 item min interval 10 block level 1 ...

重磅開源!阿里首款自研科學計算引擎 Mars 來了

mars 突破了現有大資料計算引擎的關係代數為主的計算模型,將分布式技術引入科學計算 數值計算領域,極大地擴充套件了科學計算的計算規模和效率。目前已應用於阿里巴巴及其雲上客戶的業務和生產場景。下面,我們將詳細介紹mars的設計初衷和技術架構,希望和大家共同交流 概述 科學計算即數值計算,是指應用計算...

百度開源高效能RPC框架 sofa pbrpc

使用sofa pbrpc只需要三步 樣例 參見 sample echo 定義協議只需要編寫乙個proto檔案即可。範例 echo service.proto package sofa.pbrpc.test option cc generic services true message echoreq...