自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

高性能、低開(kāi)發(fā)門(mén)檻,搜狗開(kāi)源輕量級(jí)RPC框架srpc

新聞 前端
srpc 接口簡(jiǎn)潔易上手,直接打通了 workflow 的任務(wù)流、計(jì)算調(diào)度、服務(wù)治理等功能, 可以快速提升開(kāi)發(fā)效率,對(duì)于現(xiàn)有的 pb / thrift 描述文件的項(xiàng)目,也可以做到一鍵遷移。

 不久之前,搜狗開(kāi)源了一個(gè)輕量級(jí)的 RPC 框架——srpc。這是一個(gè)基于 Sogou C ++ Workflow 的 RPC 項(xiàng)目,通過(guò)解析部分 IDL(接口描述文件) 和進(jìn)行代碼生成,實(shí)現(xiàn)了與 workflow 底層通信框架的對(duì)接和非常簡(jiǎn)潔的用戶接口。

srpc 整個(gè)項(xiàng)目的代碼量約有一萬(wàn)行,目前已經(jīng)在搜狗搜索和搜狐集團(tuán)團(tuán)隊(duì)的多個(gè)線上業(yè)務(wù)中穩(wěn)定應(yīng)用。srpc 接口簡(jiǎn)潔易上手,直接打通了 workflow 的任務(wù)流、計(jì)算調(diào)度、服務(wù)治理等功能, 可以快速提升開(kāi)發(fā)效率,對(duì)于現(xiàn)有的 pb / thrift 描述文件的項(xiàng)目,也可以做到一鍵遷移。

1. srpc 項(xiàng)目的架構(gòu)

srpc 項(xiàng)目支持多個(gè)層級(jí)的縱向拆解和橫向解耦,其中主要包括的層級(jí)有用戶代碼、IDL 序列化、數(shù)據(jù)組織、壓縮、協(xié)議和通信。

這些層級(jí)之間可以相互拼裝,如果想要實(shí)現(xiàn)一套代碼的高度復(fù)用也有多種方式,例如函數(shù)重載、派生子類實(shí)現(xiàn)父類接口和模版特化等。之后,如果想要進(jìn)行架構(gòu)升級(jí),也可以在中間再加一層,或是在某層內(nèi)橫向添加一些內(nèi)容。

對(duì)于用戶來(lái)說(shuō),可能更關(guān)心的是 method,request,response。對(duì)應(yīng)到 srpc 項(xiàng)目中就是接口描述文件層、RPC 協(xié)議層、網(wǎng)絡(luò)通信層。

其中,接口描述文件層支持多種 IDL 格式,包括 Protobuf 和 Thrift;RPC 協(xié)議層支持 Thrift-binary、BRPC-std 和 SogouRPC-std;網(wǎng)絡(luò)通信層支持 TCP、TPC_SSL、HTTP、HTTPS、HTTP2。

基礎(chǔ)功能對(duì)比圖

2. srpc 項(xiàng)目的性能

前文提到 srpc 的接口描述文件層支持 protobuf 和 thrift,這意味著用戶不僅可以一鍵遷移基于 protobuf 或 thrift 作為 IDL 的項(xiàng)目,還可以用 srpc 作為一個(gè)性能更優(yōu)的 thrift 框架或者 brpc 框架。

與 thrift 相比,srpc 所實(shí)現(xiàn)的 thrift framed 協(xié)議在吞吐和長(zhǎng)尾方面性能都遠(yuǎn)超 thrift 原生框架。srpc 對(duì)于 thrift 接口描述文件實(shí)現(xiàn)了解析和代碼生成,用戶在 srpc 上使用 thrift IDL 時(shí)無(wú)需依賴 thrift 庫(kù)。

而在 baidu-std 協(xié)議的實(shí)現(xiàn)上,吞吐和長(zhǎng)尾在大部分場(chǎng)景下依然是 srpc 更優(yōu)。由于 workflow 支持 Windows(同機(jī)性能比 linux 快 20%),所以用戶得以在 Windows 下使用 brpc。另外,同樣是支持 protobuf 的 RPC 框架,由于 srpc 實(shí)現(xiàn)了部分 IDL 解析和代碼生成,接口形式無(wú)需受 protobuf 原始限制,因而所提供的接口比 brpc 更為簡(jiǎn)潔。

在易用性和可擴(kuò)展性方面,用戶可以通過(guò) http+json 實(shí)現(xiàn)跨語(yǔ)言,如果是 server 提供方,用任何語(yǔ)言的 http server 接受 post 請(qǐng)求,解析若干 http header 即可;如果是 client 調(diào)用方,用任何語(yǔ)言的 http client 發(fā)送 post 請(qǐng)求,添加若干 http header 即可。

3. 與 workflow 的協(xié)作

srpc 是一個(gè)基于 Sogou C ++ Workflow 的 RPC 項(xiàng)目,所以天然就兼容 workflow 的使用方式,例如提供創(chuàng)建任務(wù)的接口來(lái)創(chuàng)建一個(gè) rpc 任務(wù)、可以把 rpc 任務(wù)放到任務(wù)流圖中,回調(diào)函數(shù)里也可以拿到當(dāng)前的任務(wù)流、支持 workflow 所支持的其他功能,包括 upstream、計(jì)算調(diào)度、異步文件 IO 等。

同時(shí),srpc 與 workflow 一起協(xié)作還可以完成很多其它事情:

  • srpc 提供了同步、半同步、異步的接口,異步接口可以用來(lái)打通 workflow 任務(wù)流;
  • 服務(wù)治理:workflow 的 upstream 是本進(jìn)程內(nèi)把一批機(jī)器綁定到一個(gè)域名下的 upstream 管理,自帶多種方式的負(fù)載均衡和熔斷恢復(fù)等機(jī)制,srpc 的 client 都可以直接拿來(lái)用,一個(gè) client 創(chuàng)建出來(lái)對(duì)應(yīng)的是一個(gè) ip 或者帶本地服務(wù)治理的集群;
  • Client 和 task 其他層級(jí)的配置,比如 workflow 的各種超時(shí)都可以用上,workflow 的網(wǎng)絡(luò)請(qǐng)求本身有重試次數(shù),rpc 默認(rèn)配為 0,有需要的話用戶可以自行配置;
  • 其他系統(tǒng)資源,rpc 只是網(wǎng)絡(luò)相關(guān),而 workflow 包含了如計(jì)算和異步文件 IO 等資源,這些在打通了任務(wù)流之后,都可以為 srpc 所用。

srpc 項(xiàng)目開(kāi)源地址:

https://github.com/sogou/srpc

 

責(zé)任編輯:張燕妮 來(lái)源: 架構(gòu)頭條
相關(guān)推薦

2020-10-20 17:35:42

srpcRPC語(yǔ)言

2020-09-04 09:27:40

開(kāi)源C++搜狗

2017-09-22 16:37:31

互聯(lián)網(wǎng)

2025-01-26 15:44:29

2021-10-27 11:29:32

框架Web開(kāi)發(fā)

2022-08-15 08:01:35

微服務(wù)框架RPC

2020-11-11 12:13:59

JS

2024-06-07 10:34:28

Rust開(kāi)發(fā)工具

2024-01-03 07:42:49

分割模型高性能

2018-02-28 10:11:50

騰訊框架開(kāi)源

2012-05-21 21:34:51

iOS

2021-06-26 10:03:35

Python框架Flask

2021-07-01 09:08:03

Python網(wǎng)頁(yè)開(kāi)發(fā)Flask

2022-08-10 12:21:07

PythonWebBottle

2024-07-02 10:40:35

2022-07-27 22:36:16

ThriftRPC開(kāi)源

2023-06-27 16:42:18

Tinygrad深度學(xué)習(xí)工具

2017-10-11 16:12:19

內(nèi)存

2023-12-12 13:50:00

代碼業(yè)務(wù)狀態(tài)

2019-03-10 20:55:11

瀏覽器Midori開(kāi)源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)