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

2020-11-24 donews

今年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 的upstream是本進程內把一批機器綁定到一個域名下,自帶多種方式的負載均衡和熔斷恢復等機制,srpc的client對應的是一個ip,或者一個帶本地服務治理的集群,直接可以使用負載均衡和熔斷恢復等機制。另一方面,srpc 還可以調用 Workflow 其他資源。RPC只是網絡資源,而Workflow 包含了如計算調度和異步文件IO等資源,還有目前已經實現的多種常用網絡協議(包括HTTP、Redis、MySQL、Kafka),這些都可以為srpc所用。

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

聲明:本站轉載此文目的在於傳遞更多信息,並不代表贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與本網聯繫,我們將在第一時間刪除內容,本網站對此聲明具有最終解釋權。

相關焦點

  • gRPC首頁、文檔和下載 - RPC 框架 - OSCHINA - 中文開源技術交流...
    gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.
  • 微服務RPC框架選美
    說到RPC框架,可能大家能想到一堆RPC開源框架,那麼在微服務平臺中,微服務間的服務調用,不可避免的會遇到一個問題,該選用哪一個RPC框架好呢?今天我們就請到三位RPC框架,來進行一場選美大賽,看看誰更適合微服務平臺中的服務間調用。
  • 【行業資訊】SOFARPC v5.7.4 發布,螞蟻金服開源 Java RPC 框架
    SOFARPC 是一個高可擴展性、高性能、生產級的 Java RPC 框架。在螞蟻金服 SOFARPC 已經經歷了十多年及五代版本的發展。SOFARPC 致力於簡化應用之間的 RPC 調用,為應用提供方便透明、穩定高效的點對點遠程服務調用方案。
  • 騰訊開源高性能 Hybrid 框架 VasSonic
    ­  感謝土豆看科技的投遞­  騰訊近日開源了高性能 Hybrid 框架 VasSonic,用於提升H5頁面首屏速度加速,提高用戶體驗及留存率,48小時內Github Star數突破2000.VasSonic是一個輕量級的高性能的Hybrid框架,專注於提升頁面首屏加載速度,完美支持靜態直出頁面和動態直出頁面,兼容離線包等方案
  • 【行業資訊】gRPC 1.32.0 發布,高性能 RPC 框架6 發布,新增埠和...
    gRPC 1.32.0 穩定版已發布,gRPC 是一款開源的高性能、通用 RPC 框架,面向移動和 HTTP/2 設計,也是谷歌發布的首款基於 Protocol Buffers 的 RPC 框架。
  • 騰訊開源微服務架構 Tars,高性能 RPC 開發框架
    騰訊微服務架構 Tars 於今日正式開源。
  • 開源微服務框架,你知道幾個?
    DubboDubbo 是阿里開源的一款高性能 RPC 框架,特性包括基於透明接口的 RPC、智能負載均衡其包含一整套開發框架與管理平臺,兼顧多語言、易用性、高性能與服務治理,理念是讓開發更聚焦業務邏輯,讓運營更高效。
  • 微服務之RPC簡述
    比如說兩臺伺服器A,B,一個應用部署在A伺服器上,想要調用B伺服器上應用提供的函數/方法,由於不在一個內存空間,不能直接調用,就需要通過網絡來表達調用的語義和傳達調用的數據,而這種方式就是rpcRPC 的主要功能目標是讓構建分布式計算(應用)更容易,在提供強大的遠程調用能力時不損失本地調用的語義簡潔性。
  • 華為開源自研AI框架MindSpore!自動微分、並行加持,一次訓練,可多...
    乾明 發自 凹非寺  量子位 報導 | 公眾號 QbitAI  華為的開源AI框架,來了!  剛剛,華為宣布正式開源自研深度學習框架MindSpore,代碼已經上線。伴隨著開源,它更多的特性,正在顯露出來。  MindSpore四大功能  華為MindSpore首席科學家、IEEE Fellow陳雷介紹,當前開源的MindSpore主要具備基於源碼轉換的通用自動微分、自動實現分布式並行訓練、數據處理、以及圖執行引擎等功能特性。  整體架構如下圖所示:
  • ...中間件首次實現自研、開源、商用「三位一體」,技術飛輪效應顯現
    阿里雲在探索中一直存在的苦惱,是內部的自研體系、商業化的產品技術與開源的項目,三方的技術路線一直沒有機會融為一體。然而,就在今年阿里雲提出了"三位一體"理念,即將"自研技術"、"開源項目"、"商業產品"形成統一的技術體系,最大化技術的價值。隨著阿里自研體系的上雲,這個機遇終於到來了。
  • 2018年阿里巴巴關於Java重要開源項目匯總
    服務框架 DubboApache Dubbo (incubating) |是阿里巴巴的一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。地址:https://github.com/alibaba/dubbo5.
  • 35 萬行代碼,曠視重磅開源天元深度學習框架 ,四大特性實現簡單開發
    全球AI開發框架又添一員,曠視開源「天元」  曠視天元開源之時,正值深度學習框架百花齊放的時代。  2016年,網際網路巨頭百度開源了飛槳(PaddlePaddle),可能是國內目前最有影響力的AI框架;2019年,通訊行業巨頭華為宣布即將在2020年一季度開源MindSpore,但目前仍無進一步消息;3月25日,曠視研發的深度學習框架天元(MegEngine)正式開源。
  • 2020年成國內深度學習框架開源元年 曠視科技開源天元加速AI落地與...
    人工智慧時代,開源作為算法創新與迭代的重要驅動力,在深度學習領域發揮著至關重要的作用。全球諮詢機構IDC《中國深度學習平臺市場份額調研》指出,在AI技術使用方面,接受調研的企業和開發者中,86.2%選擇使用開源的深度學習框架。
  • 華為自研資料庫管理系統GaussDB正式開源:2020年上線
    9月19日是上海HUAWEI CONNECT華為全連結大會召開的第二天,華為發布了一系列伺服器產品,同時華為宣布自研關係型資料庫管理系統GaussDB正式開源,開源名稱為openGauss,2020年正式上線。
  • 騰訊優圖開源深度學習推理框架TNN 助力AI開發降本增效
    騰訊優圖基於自身在深度學習方面的技術積累,並借鑑業內主流框架優點,推出了針對手機端的高性能、輕量級移動端推理框架TNN。  TNN在設計之初便將移動端高性能融入核心理念,對2017年開源的ncnn框架進行了重構升級。通過GPU深度調優、ARM SIMD深入彙編指令調優、低精度計算等技術手段,在性能上取得了進一步提升。  低精度計算的運用對TNN的性能提升發揮了重要作用。
  • 從零開始,徒手擼一個簡單的 RPC 框架,輕鬆搞定!
    所以就想著試試自己實現一個簡單的RPC框架,即鞏固了基礎的知識,也能更加深入的了解RPC原理。當然一個完整的RPC框架包含了許多的功能,例如服務的發現與治理,網關等等。本篇只是簡單的實現了一個調用的過程。傳參出參分析一個簡單請求可以抽象為兩步
  • 開發者必備:基於 Linux 生態的十大AI開源框架盤
    Deeplearning4j遵循Apache 2.0開源協議,提供了基於AWS雲服務的GPU運算支持,以及微軟伺服器框架的支持。官網: http://deeplearning4j.org/2.H2O:企業級機器學習框架H2O(即水的化學式)是一個開源、快速、可擴展的分布式機器學習框架,同時提供了大量的算法實現。
  • 開發者必備:基於Linux生態的十大AI開源框架盤點
    Deeplearning4j遵循Apache 2.0開源協議,提供了基於AWS雲服務的GPU運算支持,以及微軟伺服器框架的支持。官網:http://deeplearning4j.org/2.H2O:企業級機器學習框架H2O(即水的化學式)是一個開源、快速、可擴展的分布式機器學習框架,同時提供了大量的算法實現。
  • 騰訊優圖開源深度學習推斷框架TNN - 軟體與服務 - 中國軟體網...
    6月12日消息,騰訊優圖實驗室宣布開源新一代移動端深度學習推理框架TNN。騰訊優圖希望通過底層技術優化幫助用戶實現人工智慧在多個不同平臺的輕量部署落地。據悉,基於TNN,開發者能夠輕鬆將深度學習算法移植到手機端高效的執行,開發出人工智慧 APP,將 AI 帶到指尖。
  • 部署效率提高17倍,開源Metaflow,真正以人為本的數據科學框架
    來源:Pexels開源是軟體發展的趨勢,越來越多的人投入到開源世界中去。我們可以從開源世界中獲得很多有益的東西,本著不重複造輪子的精神,我們可以充分利用這些開源項目的成果。12月3日,Netflix和AWS開源Metaflow框架。Metaflow 框架最早是由Netflix公司(《紙牌屋》這部劇的出品方)開發的,旨在滿足從事嚴苛的現實數據科學項目的數據科學家的需求。