高并发C++应用程序框架 saf application framework

MIT
Java C/C++
跨平台
2014-10-31
sailsxu

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来查看统计信息:

stat


加载中

评论(0)

暂无评论

暂无资讯

暂无问答

转一篇很不错的介绍NetBeans的文章

NetBeans 6.0 提高生产力之Swing Application Framework (JSR 296) 一篇博客介绍了NetBeans Java代码编辑器,这一篇将介绍用NetBeans 开发基于Swing Application Framework (JSR 296) 的程序...

2010/05/13 21:11
444
0
CSSOM视图模式(CSSOM View Module)相关整理

2011年8月份,W3C出炉了CSSOM视图模块(CSS Object Model View)草案。CSSOM视图模块(CSSOM View Module)定义了一些 API,Web 开发人员使用这些 API 可以进行检查,也可以以编程方式更改文档及...

2012/09/08 13:48
163
0
NetBeans和iReport的教程。

NetBeans和iReport的教程。 在iReport使用表组件。 在iReport中使用JPA查询更容易比经典SQL查询。 SAF教程:查找表。 如何使用iReport插件在NetBeans中。 NetBeans的计算列SAF。 NetBeans 6...

2012/11/12 02:44
479
0
pinterest怎样发帖u

pinterest怎样发帖u2016-03-10 12:53:15【32575160】   欢迎找我们定制、购买网络营销软件、网络推广软件,6年SEO、网络推广经验,让您的网络营销效率攀升。 上位机软件PLC程序触摸屏程序自...

2016/03/10 12:53
30
1
linux bash shell 关于减号-的作用

管道命令在bash的连续处理程序中是相当重要的,尤其在使用到前一个命令的studout(标准输出)作为这次的stdin(标准输入)时,就显得太重要了,某些命令需要用到文件名,例如上篇文档的的切割...

2016/11/26 22:00
350
0
#Sora#peewee query 笔记

这部分是query相关的笔记: peewee————查询 1.创建单条记录(有多种方法): 准备: >>> from peewee import * >>> db = MySQLDatabase('vmrecord',host='localhost',port=3306,user='ro...

2015/07/05 16:12
384
0
Pinterest群发G

Pinterest群发G2016-03-10 12:53:04【32575160】   欢迎找我们定制、购买网络营销软件、网络推广软件,6年SEO、网络推广经验,让您的网络营销效率攀升。 晚会记分牌比赛计分器活动积分记录...

2016/03/10 12:53
6
1
Imgur群发工具k

Imgur群发工具k2016-03-10 12:53:09【32575160】   欢迎找我们定制、购买网络营销软件、网络推广软件,6年SEO、网络推广经验,让您的网络营销效率攀升。 专业计算机软件开发定制定做程序易...

2016/03/10 12:53
4
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部