spserver 开源服务器框架研究与分析
2010-05-19 11:47
399 查看
网上开源的C/C++服务器框架 还是比较少的。 最近研究了 spserver , 里面用了较多的设计模式,使用设计模式的目的是把不变的东西和可变的东西分离并且封装起来,避免以后修改代码, 应用设计模式的书里面讲的就是 “对修改关闭,对扩展开放”,但是滥用设计模式会把简单的问题复杂话了。
spserver代码量比较少,比较容易看懂,如果只是做一个简单的echo服务器的话,spserver 可以给新手一个快速搭建服务器的框架。
用vld测试后, 发现spserver有很多内存泄露的地方。并且 msgqueue_destroy 函数会造成线程阻塞,程序无法正常结束。
spserver 里面的半同步半异步模式相当于 主线程负责所有的数据收发, 工作者线程负责逻辑。 主线程与工作者线程之间通过消息队列进行通信。主线程收到数据后,通知工作者线程,有数据,工作者线程进行报文解析与处理, 把要发送的数据放入队列,然后通知主线程,有数据了, 你去发送把。
这种模型可以应对逻辑复杂, 处理时间长, 需要发送和接收的数据比较少的情况比较合适。但是如果是需要处理类似文件服务器这样,IO的数据很多,但是逻辑很简单的服务器,则不合适, 主线程会成为瓶颈,也即是说IO会成为瓶颈。
另外是spserver 没有实现 作为客户端连接其他服务器的代码,需要用户自己实现连接到其他服务器的情况。
我现在正在封装一个开源的服务器框架,这个框架会比spserver更通用,范围更广,会根据游戏服务器的系统架构封装一套比较完整的实现, 从数据库代理服务器,登录服务器,大厅服务器,游戏服务器, 网关服务器等进行框架的处理。
spserver代码量比较少,比较容易看懂,如果只是做一个简单的echo服务器的话,spserver 可以给新手一个快速搭建服务器的框架。
用vld测试后, 发现spserver有很多内存泄露的地方。并且 msgqueue_destroy 函数会造成线程阻塞,程序无法正常结束。
spserver 里面的半同步半异步模式相当于 主线程负责所有的数据收发, 工作者线程负责逻辑。 主线程与工作者线程之间通过消息队列进行通信。主线程收到数据后,通知工作者线程,有数据,工作者线程进行报文解析与处理, 把要发送的数据放入队列,然后通知主线程,有数据了, 你去发送把。
这种模型可以应对逻辑复杂, 处理时间长, 需要发送和接收的数据比较少的情况比较合适。但是如果是需要处理类似文件服务器这样,IO的数据很多,但是逻辑很简单的服务器,则不合适, 主线程会成为瓶颈,也即是说IO会成为瓶颈。
另外是spserver 没有实现 作为客户端连接其他服务器的代码,需要用户自己实现连接到其他服务器的情况。
我现在正在封装一个开源的服务器框架,这个框架会比spserver更通用,范围更广,会根据游戏服务器的系统架构封装一套比较完整的实现, 从数据库代理服务器,登录服务器,大厅服务器,游戏服务器, 网关服务器等进行框架的处理。
相关文章推荐
- spserver 开源服务器框架研究与分析
- spserver 开源服务器框架研究与分析
- 网络服务器开发框架spserver源码分析 (一)
- 网络服务器开发框架spserver源码分析 (二)
- spserver 开源服务器框架研究与分析
- 优秀的轻量级网络开发框架spserver源码分析(一)
- SPServer源码分析(三): 简单的ECHO服务器
- HMX-Server-分步式服务器框架(开源+源码)
- 终于凑出点时间,将偷懒很久的bas服务器框架实现了,有点类似于spserver
- DDPush开源推送框架源码分析之APPServer到DDPush
- 优秀的轻量级网络开发框架spserver源码分析(二)
- Web端服务器推送技术原理分析及dwr框架简单的使用 转载
- 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源代码分析
- Silverlight 开源项目分析Live Geometry CTP 2(2)项目框架分析
- 【经典必学】常用开源框架中设计模式使用分析
- 服务器推送技术原理分析及dwr框架简单的使用
- 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- Mangos服务器框架设计分析(一)
- 开源框架之Bonita BPM的使用(五):bonita-server-5.5后台引擎代码学习笔记(1)
- 用sp_addlinkedserver建立链接服务器(sql server2008中通过测试)