高并發C++應用程序框架:saf application framework
saf (saf application framework) 是一個高并發的c++應用程序框架,它以RPC為基礎,提供了動態載入模塊的特性,為服務端開發人員只用關注于程序的業務邏輯,就可以實現遠程方法調用,而不會關心底層的通信細節,另外,它還內置了一個簡單的http server,用來查看服務器的運行狀態。
特點
1:基于 google protobuf 的 RPC 框架
2:內置簡單的http server用于查看系統狀態
3:模塊化的管理,只用在lib中增加動態庫就可以達到增加rpc service的目的
結構
+--------------+ +-----------+ +------------+ /| | | | | | / | Handle Thread| --->- |Net Thread \----->| Decode |\ / +--------------+ | +-----------+\ +------------+ \ +-----------------+ / +--------------+ | \ \>| |/ | | | \ />|Dispacher Thread +-----+ Handle Thread+---->+ +-----------+ \ +------------+ / +-----------------+\ +--------------+ | | | \ | |/ \ +--------------+ | |Net Thread +----+>+ Decode / \ | | | +-----------+ \+------------+ \ | Handle Thread| | \ \ +---------+----+ | \ \ | | \ \ | | \ +--\---------+ | | \ | |<-------------------------------------+ | \ | Encode | | \ +------------+ | \ +------------+ | \| | | \ Encode +<------------------------------------------------+ +------------+
編譯例子
1:下載源碼,它依賴與sails公共庫:
git clone --recursive https://github.com/sails/saf.git
2:執行編輯腳本:
./build.sh
3:編譯測試樣例:
cd example ./build_test.sh
4:運行測試,比如運行echo_sync:
./src/server ./example/echo_sync/client
5:增加子模塊,配置conf/sails.json: 在modules里增加一行,name是子模塊名,path是子模塊動態庫的路徑
性能
測試一
筆記本: T6400 @ 2.00GHz, cpu num:1, cpu cores:2 服務端和客戶端都運行在這臺電腦上
| server handle threads | client call threads | earch threads call num | run time | |-----------------------+---------------------+------------------------+-----------| | 1 | 1 | 100000 | 0m14.674s | | 1 | 5 | 100000 | 0m30.896s | | 1 | 10 | 100000 | 1m0.848s | | 2 | 1 | 100000 | 0m14.409s | | 2 | 5 | 100000 | 0m27.911s | | 2 | 10 | 100000 | 0m50.760s |
2w tps.因為客戶端和服務器在同一臺電腦上,所以測試結果會比實際更低.
統計
內置http服務器的默認綁定在端口8001上,所以可以通過輸入localhost:8001/stat來查看統計信息:
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!