Skip to content
/ PSS Public
forked from freeeyes/PSS

易于开发基于插件的跨平台网络服务器框架

Notifications You must be signed in to change notification settings

asianhawk/PSS

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PSS

这是一个服务器框架。支持开发者使用插件(so或者dll)的方式,开发相关TCP和UDP的逻辑服务。 本服务框架基于ACE,可以在windows和linux下自适应编译运行。 本服务框架的宗旨是尽量剥离网络IO和逻辑开发者之间的关系,让逻辑开发者更专注于自己的业务,而网络IO部分完全由配置文件去实现。 运维管理者可以通过辅助的管理工具,获得框架运行状态,工作线程,数据流状态,连接状态等信息。辅助运维管理,问题排查。 另外,开发者还可以在完全脱离框架的基础上,利用框架周边工具,压力测试自己的逻辑模块,这样尽量减少上线前所可能出现的问题。 在使用框架前,你可以使用框架提供的小工具,压力测试当前框架的性能指标,作为是否采用的依据。 example下有专门的测试用例,可以提供开发者参考。 设计这个框架的目标不仅仅是一个网络IO的插件接口,而是一整套开发流程,尽量做到减少开发者的付出,规范开发过程(目前SVN上提供整套的框架测试工具,具体功能请参考先读我.txt) 希望能和大家一步步完善这个体系,真正做到有价值的框架。 我的目标是,你用的爽,就是成功。也希望大家越来越喜欢它。 另外最新代码会发布在SVN上,如果你有SVN,最好从SVN上直接下载,我会定时打版本包放在download里面提供下载。

从0.91起,开始提供版本更新日志 重要提示,由于googlecode取消了上传下载服务,所以,如果你想获得当前代码的最新版本,请从SVN直接提取,downloads不会再提供更新。SVN下载地址为https://purenessscopeserver.googlecode.com/svn/trunk/ 0.92改进

  1. 优化ConnectHander的代码结构
  2. 添加发送超时配置文件
  3. 添加了新用例,ftp用例,实现相关了目录浏览,下载和上传(PSS插件以及测试客户端)。
  4. 添加如果二级缓冲用例,实现共享内存和数据库的同步(PSS插件以及测试客户端)。
  5. 添加了插件间相互调用用例,实现了插件间的通讯((PSS插件以及测试客户端)。
  6. 添加Linux下自动设置当前工作目录的功能。
  7. 添加了PSS自测插件功能,实现PSS数据包自测用例(PSS插件以及测试客户端)。
  8. 更新了PassTCP工具,可以支持二进制和文本的数据包发送。
  9. 重写了PSS日志接口,支持输出到屏幕和文件的选择,并支持文本和二进制的记录。 10.添加了Proxy代理服务器数据包转发插件,实现了PSS网关功能(PSS插件以及测试客户端)。 11.添加了新的API,允许插件可以获得工作线程的数量以及当前工作线程的ID。 12.添加了uint64位数据的网络字序和主机字序的转换函数。 13.添加了再Linux下自检当前文件并发数的功能,如果文件并发数小于配置文件设置则框架会自动尝试提升当前文件并发数,如果失败则提示框架启动失败。 14.添加了对core文件的设置,开发者可以通过配置core文件大小来启动当前PSS。 15.添加了发送缓冲区自检功能,当发送字节和对端收到字节不成正比时,按照配置文件的规则回收当前连接。 16.添加了对BACKLOG的设置,可以提升在大并发连接下的连接效率。

0.91改进

  1. 修改了dev_poll下设置并行最大连接数配置文件对应关系。
  2. 再次更新PacketParse接口,优化了接口结构,使得开发者更清晰的看到自己要实现代码的地方。
  3. 更新插件压力测试工具。支持TCP和UDP压力测试,并会生成测试报告。
  4. 更新MakePacket回应包添加CommandID参数,你可以根据不同的连接ID决定处理你的发送组包逻辑(比如加解密的随机算法)
  5. 服务器添加了对UDP recv超时的设置
  6. 更新了UDP Proactor模式下的UDP设置参数。
  7. 添加对IPv4和IPv6的支持。服务器可以使用IPV6的地址,但是前提是OS必须支持IPV6
  8. 添加类视图文档,以PDF文档形式提供。
  9. 更新插件压测工具,提供多线程压测插件功能。
  10. 修改了TCP和TCP服务器间测试用例,实现了透传数据的压测用例。
  11. 添加了Linux下结束进程的脚本
  12. 添加了时间成本宏,你可以用于你的逻辑中,测试函数执行效能
  13. 添加三个Try catch宏用于程序调控。你可以用于你的逻辑中,套在函数里。
  14. 添加了服务器发送数据水位标,如果服务器发快客户端收慢,那么会有一个阀值保证正常的连接不受影响。
  15. 修改了若干测试出的BUG,具体可以浏览SVN更新日志。
  16. 添加了DEBUG模式,在debug下支持输出所有的数据包文件。这些数据包可以变为压测的回放的依据。

提供几个压测数据(TcpPass工具,可从PSS开源工具包中获得)

压测IP:172.21.1.200, 压测端口:10002.(Linux ContOS6 DEBUG) 压测类型:TCP 压测开始时间为: 2013-09-18 11:07:42 压测结束时间为: 2013-09-18 12:06:00 压测线程数:10 创建成功连接数:10 成功发送数据包数:11675202 成功接收数据包数:11675202 连接失败数:0 发送失败数据包数:0 接收失败数据包数:0 连接成功百分比:100.000000% 发送数据包成功百分比:100.000000% 接收数据包成功百分比:100.000000%

============================================= (中间故意拔断服务器的网线,测试服务器性能,所以有些失败的包和链接,这是正常的) 压测IP:172.21.1.68, 压测端口:10002.(Windows7 DEBUG) 压测类型:TCP 压测开始时间为: 2013-09-16 09:55:58 压测结束时间为: 2013-09-16 10:38:09 压测线程数:10 创建成功连接数:13244 成功发送数据包数:11514132 成功接收数据包数:11500889 连接失败数:3125 发送失败数据包数:0 接收失败数据包数:13241 连接成功百分比:80.909038% 发送数据包成功百分比:100.000000% 接收数据包成功百分比:99.885005%

作者: freeeyes

框架贡献者: 凹凸man,w1w,乔戈,Bobo

QQ框架技术讨论群: 260862613

如需编译帮助,请阅读doc文件夹下的先读我.txt

About

易于开发基于插件的跨平台网络服务器框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published