高并發C++應用程序框架:saf application framework

jopen 10年前發布 | 26K 次閱讀 C/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來查看統計信息:

高并發C++應用程序框架:saf application framework


項目主頁:
http://www.baiduhome.net/lib/view/home/1414816252887

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!