SPServer : 一个基于线程池(包括HAHS和LF)的高并发 server 框架

该博客介绍了一个名为SPServer的高并发服务器框架,它基于线程池实现,支持HAHS和LF策略。示例中展示了如何创建一个简单的回显处理器SP_EchoHandler,该处理器接收并返回用户输入的行消息,直到用户输入'quit'来终止会话。服务器通过SP_Server类运行,并使用SP_HandlerFactory创建处理请求的实例。
摘要由CSDN通过智能技术生成
spserver 是一个实现了半同步/半异步(Half-Sync/Half-Async)和领导者/追随者(Leader/Follower) 模式的服务器框架,能够简化 TCP server 的开发工作。 
spserver 使用 c++ 实现,目前实现了以下功能: 
1.封装了 TCP server 中接受连接的功能; 
2.使用非阻塞型I/O和事件驱动模型,由主线程负责处理所有 TCP 连接上的数据读取和发送,因此连接数不受线程数的限制; 
3.主线程读取到的数据放入队列,由一个线程池处理实际的业务。 
4.一个 http 服务器框架,即嵌入式 web 服务器(请参考: SPWebServer:一个基于 SPServer 的 web 服务器框架
 

0.6 版本之前只包含 Half-Sync/Half-Async 模式的实现,0.6 版本开始包含 Leader/Follower 模式的实现  
0.7 版本开始支持 ssl 。把 socket 相关的操作抽象为一个 IOChannel 层,关于 openssl 的部分单独实现为一个 plugin 的形式,对于不使用 ssl 功能的用户,不需要引入 ssl 相关的头文件和库。  
0.7.5 增加了一个 sptunnel 程序,是一个通用的 ssl proxy 。类似 stunnel 。  
0.9.0 移植 spserver 到 windows 平台,需要在 windows 下编译 libevent 和 pthread 。  
0.9.1 在 windows 平台,去掉了对 libevent 和 pthread 依赖,完全使用 iocp 和 windows 的线程机制实现了半同步半异步的框架。  
0.9.2 移植了所有的功能到 windows 平台,同时新增加了 xyssl 的插件。  

主页: 
http://code.google.com/p/spserver/  

源代码下载: 
http://spserver.googlecode.com/files/spserver-0.6.src.tar.gz  
http://code.google.com/p/spserver/downloads/list  


在实现并发处理多事件的应用程序方面,有如下两种常见的编程模型: 
ThreadPerConnection的多线程模型和事件驱动的单线程模型。 

ThreadPerConnection的多线程模型  
优点: 简单易用,效率也不错。在这种模型中,开发者使用同步操作来编写程序,比如使用阻塞型I/O。使用同步操作的程序能够隐式地在线程的运行堆栈中维护应用程序的状态信息和执行历史,方便程序的开发。 
缺点: 没有足够的扩展性。如果应用程序只需处理少量的并发连接,那么对应地创建相应数量的线程,一般的机器都还能胜任;但如果应用程序需要处理成千上万个连接,那么为每个连接创建一个线程也许是不可行的。 

事件驱动的单线程模型  
优点: 扩展性高,通常性能也比较好。在这种模型中,把会导致阻塞的操作转化为一个异步操作,主线程负责发起这个异步操作,并处理这个异步操作的结果。由于所有阻塞的操作都转化为异步操作,理论上主线程的大部分时间都是在处理实际的计算任务,少了多线程的调度时间,所以这种模型的性能通常会比较好。 
缺点: 要把所有会导致阻塞的操作转化为异步操作。一个是带来编程上的复杂度,异步操作需要由开发者来显示地管理应用程序的状态信息和执行历史。第二个是目前很多广泛使用的函数库都很难转为用异步操作来实现,即是可以用异步操作来实现,也将进一步增加编程的复杂度。 

并发系统通常既包含异步处理服务,又包含同步处理服务。系统程序员有充分的理由使用异步特性改善性能。相反,应用程序员也有充分的理由使用同步处理简化他们的编程强度。  

针对这种情况,ACE 的作者提出了 半同步/半异步 (Half-Sync/Half-Async) 模式。  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值