高并发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.open-open.com/lib/view/home/1414816252887

昵    称:
验证码:

相关文档:

  • C++操作SQLite数据库
    在使用C++操作SQLite之前,需要获得sqlite3.h,sqlite3.lib,sqlite3.dll,大家可以在这里下载。并将这3个文件导入VC++工程中。其中sqlite3.dll文件...
  • C语言的BASE64处理 b64
    b64 是很很小型的、简单而且搞笑的 Base64 编码和解码的 C 语言库,无需依赖其他第三方的程序库,支持各种操作系统。同时也包含一个灵...
  • CMake Tools for Visual Studio
    这是一个 Visual Studio 的扩展为 CMake 语言提供了语法高亮和 IntelliSense 支持。...
  • 非常精简的开源 C 协程库:Protothreads
    开源 C 协程库 protothreads。这是一个全部用 ANSI C 写成的库,之所以称为“蝇量级”的,就是说,实现已经不能再精简了,几乎就是原语级...
  • C++加密/解密库:libsodium
    libsodium 是一个流行、易于使用的软件库。主要用于加密、解密、签名和生成密码哈希等等。这是一个可移植的、跨编译器支持、可安装...
  • C语言的SPDY开发包 libspdy
    libspdy 是 C 语言实现对 SPDY 协议支持的库。只需依赖 zlib 包...
  • Qt Eclipse Integration for C++
    Qt Eclipse Integration for C++ 是 Eclipse 用来开发C++ 版本的 Qt 应用的插件。...
  • C++格式化输出库 FastFormat
    FastFormat 是一个C/C++格式化输出的库,输入的参数是类型安全的/范型的/可扩展的。...
  • C语言实现base64编码,base64解码
    C语言实现base64编码,base64解码。...
  • Boost库 对时间和日期的处理 date_timer库
    /*Boost 对时间和日期的处理 提供了timer和data_time 库*/ //有关timer库提供了简易的度量时间和进度显示的功能可以用于性能测试等需要计时...
  • 异步串口库函数 libcssl
    Columbo Simple Serial Library (libcssl) 是一个易用的事件驱动的串口通讯库,用于 Linux。...
  • 面向对象的C语言开发框架:Nesty
    Nesty是跨平台的,面向对象的C语言开发框架。Nesty旨在为从事系统开发的编程人员提供一套统一的、高效的、易于使用的编程接口。...
  • 微软开源 C++ REST SDK
    C++ REST SDK 包含在 Casablanca 项目中。 Casablanca 是一个 C++ 本地库,旨在帮助开发者的 C++ 应用程序访问云服务。如果你想编写一个响应式的...
  • 数值解开发库 FLENS
    FLENS是灵活高效的数值解开发库。这个C++可以作为实施其他(高级)数字库或数字应用的一个builing块。...
  • 跨平台C++库 CrissCross
    CrissCross是一种小型的跨平台C++库,用于处理控制台和文件I / O , CPU的识别( CPUID ) ,散列( MD2 , MD4 , MD5编码,了SHA - 1 ,SHA- 256 ,S...
  • MySQL进行CC++开发基础
    本文针对:CC++开发,选用MySQL作数据库,基础。...
  • C++ STL set集合容器常用用法
    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每...
  • 使用C语言实现的mysql数据库接口:c-mysql-dao
    使用C语言实现的mysql数据库接口,包括了如何连接数据库,关闭数据库以及增删查改等操作的函数封装话。...
  • Platinum UPnP SDK - 跨平台的C++库
    Platinum UPnP SDK 是一个跨平台的C++库,利用该库,你可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP设备(DLNA/UPnP Device)....
  • Qt集成开发环境IDE Monkey Studio
    Monkey Studio (MkS) 是一个采用 C++ 和 Qt 库开发的跨平台集成开发环境,旨在开发基于 Qt 的应用程序。...