saf application framework

高并发C++应用程序框架
授权协议 MIT
开发语言 Java C/C++
所属分类 开发工具、 C/C++开发工具
软件类型 开源软件
地区 国产
投 递 者 阴雪风
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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


  • 7.01原生支持SAF ,原來在6.X開發的項目只能升級到7.01。 7.1開始不支持SAF,設計頁面打不開。 7.2安装不含SAF,但官方网站已提供插件下载,只支持7.2,所以7.1直接跳过。 http://plugins.netbeans.org/plugin/43836/swing-application-framework-support

  • Sun已经决定在Java 7中放弃JSR 296:Swing Application Framework(SAF)。规范的领导者Alexander Potochkin在其博客中写到:\ 在多次讨论后,大家并没有就Swing Application Framework API达成共识,我们觉得还需要进一步设计才行。 \我们已经将SAF API提交至JDK 7 M5了,进度就在那摆着呢,时间太紧了,所

  • SAF 中抽象工厂的实现 引言 本文是《Developing Application Frameworks in .NET》的读书笔记。SAF 是书中的一个范例框架,意为 Simple Application Framework(简单应用程序框架)。这篇文章主要向大家说明了SAF中抽象工厂模式的实现方式。 设计思想概述 抽象工厂是很常用的一种创建型模式,它的主要作用在于向程序员屏蔽了创建对象的复杂

  • 本文是《Developing Application Frameworks in .NET》的读书笔记。SAF 是书中的一个范例框架,意为 Simple Application Framework(简单应用程序框架)。这篇文章主要向大家说明了SAF中抽象工厂模式的实现方式。 设计思想概述 抽象工厂是很常用的一种创建型模式,它的主要作用在于向程序员屏蔽了创建对象的复杂细节,在获取对象时,只需要在工厂

  • SAF是4.4(API 19)开始使用的数据访问机制。包含以下几个部分: 1. Document Provider:是DocumentsProvider的字类,用来让存储设备显示内容,Android自带Downloads,Images,Videos等这几种。 2. 客户端app:使用ACTION_OPEN_DOCUMENT和ACTION_CREATE_DOCUMENT的intent以及获取返回内容

 相关资料
  • 主要内容:1.Disruptor介绍,2.Disruptor 的核心概念,3.demo1.Disruptor介绍 Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 其实Disruptor与其说是一个框架,不

  • 一个应用程序开发框架。作者实现了很多控件效果,方便其他开发者各取所需。所实现的效果包括:打分星星、响应点击动作、旋转按钮效果、根据文字多少改变大小的UILabel等等效果。 [Code4App.com]

  • 2.5.应用程序框架 应用程序框架是Android程序的执行环境,也是开发者的强大工具箱。另外,它也拥有Android平台中最全面最完善的文档。良好的文档可以激发广大开发人员的创意,也可以为他们构建优秀的应用程序提供有力的支持。 在应用程序框架中,你可以发现很多为Android设计的Java库。除此之外,也有系统服务的支持,比位置、传感器、WiFi、电话等等。 在后面的学习与实践中,将把我们的主要

  • 我使用Hadoop构建了一个在分布式环境中搜索类似图像存储的应用程序。但是Hadoop不支持实时处理,这就是响应时间长的原因。我知道Storm是另一个大数据分析应用程序的框架。但是我很困惑我们是否可以使用Storm来实现这种应用程序。 有没有人建议什么样的应用程序可以有效地使用Storm框架。

  • 为啥最后打印类似100475,100425之类的值? 我看写这个的人说会打印200000.

  • 问题内容: 我正在设计和构建桌面应用程序。我正在考虑使用eclipse或netbeans作为此应用程序的基础。但是,我从未在这两个平台上构建过。我个人倾向于使用netbeans,因为它像该平台一样容易学习。但是,我想问一下实际上已经在这些平台上构建的人员,在此之前哪个更易于使用? 我对easyr的个人定义如下: 易于上手 一致的逻辑API 好的文档 易于构建和部署 非常感谢, 乔希 问题答案: 关

  • 作为对《C++ Concurrency in Action》的中文翻译。

  • 我想知道这种情况下的最佳实践是什么: 我正在模拟一个电梯系统,该系统目前正在将所有输出转储到控制台。这不容易追踪,而且很难想象每层楼的问题状态以及当前算法的效率。设置如下: 一对人-生产者/消费者创建随机的人,并将他们放置在每个楼层的特定目的地。每一层都有供人们上下活动的问讯处。电梯与每层楼和一个调度器交互,以决定下一步去哪里以及接谁。 将此设置表示为gui时,将每个线程/对象的当前状态转换为gu