搜狗又有兩大開源力作!你一個也不知道?
前不久,搜狗正式宣布開源了一個C++服務器引擎——workflow。
搜狗公司C++服務器引擎,支撐搜狗幾乎所有后端C++在線服務,包括所有搜索服務,云輸入法,在線廣告等,每日處理超百億請求。這是一個設計輕盈優雅的企業級程序引擎,可以滿足大多數C++后端開發需求。
目前,Workflow在Github上標星2.8K,累計分支560(Github地址:https://github.com/sogou/workflow)
Sogou C++ Workflow在設計之初,就秉持著高性能與輕量級兩個核心理念。長久以來,業界中優化服務器性能都主要專注于如何跑滿cpu、如何單獨地讓網絡請求極速響應等方面。而此次上線的搜狗Workflow則更專注于如何讓各種網絡資源被具體的調度器管理,使其盡可能地全部調度起來。
另一方面,對多通信計算資源融為一體的解決方案,進一步提升了Workflow引擎的性能。
此項目最大的亮點可能是創新性引入了任務流的概念,Sogou C++ Workflow將資源高度封裝,用戶再也接觸不到連接池、線程池,包括想要做 aio 時的文件 fd與各種異步通知機制。這就意味著,在開發階段開發人員僅僅需要了解業務關系而不用關心內部細節,幫助開發者們實現自己復雜的業務邏輯。
功能特性
你可以將Workflow用于快速搭建http服務器:
- #include <stdio.h>
- #include "workflow/WFHttpServer.h"
- int main()
- {
- WFHttpServer server([](WFHttpTask *task) {
- task->get_resp()->append_output_body("<html>Hello World!</html>");
- });
- if (server.start(8888) == 0) { // start server on port 8888
- getchar(); // press "Enter" to end.
- server.stop();
- }
- return 0;
- }
- 作為萬能異步客戶端。目前支持http,redis,mysql和kafka協議。
- 實現自定義協議client/server,構建自己的RPC系統。srpc就是以它為基礎,作為獨立項目開源。支持srpc,brpc和thrift等協議。
- 構建異步任務流,支持常用的串并聯,也支持更加復雜的DAG結構。
- 作為并行編程工具使用。除了網絡任務,我們也包含計算任務的調度。所有類型的任務都可以放入同一個流中。
- 在Linux系統下作為文件異步IO工具使用,性能超過任何標準調用。磁盤IO也是一種任務。
- 實現任何計算與通訊關系非常復雜的高性能高并發的后端服務。
- 構建服務網格(service mesh)系統。項目內置服務治理與負載均衡等功能。
在Github上,搜狗還貼心給出了大量的workflow示例,具體如下:
此外,開源workflow幾個月后,,搜狗又宣布開源workflow的生態項目——srpc,這是一個基于workflow 打造的輕量級RPC框架。
srpc內部實現層次精巧,非常注重縱向層次拆分和橫向解耦。其中壓縮層、序列化層、協議層是互相解耦的,利用函數重載、派生子類實現父類接口和模版特化等多種多態方式,來實現內部使用同一套代碼的高度復用。后續架構升級或者用戶進行二次開發,無論是中間再加一層、還是某層內橫向添加一種內容,都不需要改動現有的代碼,十分方便。(Github地址:https://github.com/sogou/srpc)
搜狗方面表示,目前,srpc已在搜狗搜索和搜狐集團團隊中多個線上業務中穩定使用了一段時間。由于接口簡介易上手,且直接打通workflow的任務流、計算調度、服務治理等功能,其對開發效率有了非常大的提升。
不知道你對搜狗這兩大開源神器感興趣么?