随笔分类 -  Herm游戏服务器引擎

Herm游戏服务器引擎程序员开发指导 第1章 概述
摘要:http://blog.csdn.net/herm_lib daemon.huang # gmail # com1.1 什么是Herm Herm是一套快速开发高性能的网络应用的C++库,主要针对网络游戏服务器提供全套解决方案,包括接入、网游逻辑、数据缓存和持久化组件。但同时 Herm也适合可以用于即时通信、流媒体、文件下载、P2P(Socket组件实现的细节已经考虑到对TCP穿透的支持)等基于TCP/IP的网络应用。 Herm包括的组件: (1)base 最基础的组件,提供线程、一读一写线程不加锁的ring buffer、二进制消息解析器、支持多态的对象管理器和可支持多线程写入的完整的日志模块 阅读全文

posted @ 2012-11-24 21:38 daemonh 阅读(1619) 评论(4) 推荐(0)

游戏服务器数据缓存和持久化中间件设计总结
摘要:http://blog.csdn.net/herm_lib/article/details/8171196本文就介绍游戏服务器的数据缓存和持久化的设计策略。基本上各种类型的游戏服务器都适用,包括全区全服、分区分服的SNS类、ACG或者RPG。数据的缓存和持久化从技术角度来讲是比较容易实现?做过几个类似的功能模块后,渐渐地会有一种模块重用的想法,有一个公共的中间件可以容易支持我们游戏服务器各种缓存和持久化需求。目前有类似开源的项目,我们以前的公司有类似的项目。项目组如果利用可靠的中间件,还是可以提高开发效率的。本文缓存和持久化中间件的设计目标限定游戏服务器领域,但基本上满足所有类型的游戏需求。我 阅读全文

posted @ 2012-11-11 15:35 daemonh 阅读(1767) 评论(0) 推荐(0)

Herm的Allocator介绍
摘要:Allocator可以理解特定对象池。Herm目前有两种Allocator,LiteAllocator和LargeAllocator,前者支持小于120bytes的小对象;后者支持大对象,建议大于120byte以上的对象使用LargeAllocator,小对象当然也支持,但会浪费内存,每个对象将附加8bytes的内存空间。STL也可以直接用Herm的Allocator作为Allocator。LiteAllocator 在Linux其实就是__gnu_cxx::pool_alloc, Windows上直接弄成std::allocator,因为Herm的定位是开发Linux&FreeBSD 阅读全文

posted @ 2011-09-08 16:58 daemonh 阅读(192) 评论(0) 推荐(0)

Herm Timer Heap和Timer Wheel介绍
摘要:Herm实现了自己的两种类型的Timer,Heap和Wheel。Timer主要有三种操作,AddTimer, CheckTimout和RemoveTimer。Timer Heap性能是O(log2n) O(1) O(log2n)Timer Wheel全是O(1), 首选。Timer Heap大致实现方法是基于最小堆。1. 检查堆的root节点,如果没超时,结束;有超时,加入pending execute list,重新调整堆; 重复。。。;2. 如果timer是重复执行的,就修改pending execute list中的timer超时时间点,加入堆中;3. 执行pending execute 阅读全文

posted @ 2011-05-19 22:42 daemonh 阅读(287) 评论(0) 推荐(0)

Herm统一分发框架的分发各种对象的流程
摘要:分发框架管理一个树状的Handlers,Handler分为通用的(general)和专有的(specific)。通用的Handler是为所有的对象服务;专有的Handler是为某个对象服务(常见的是Role)。框架结构描述如下: cmd1----->handlers cmd2----->handlers cmdN----->handlers +------->cmd1------>handlers | oid1--------------+-------->cmd2------>handlers | +--------->cmd3-----> 阅读全文

posted @ 2011-04-24 21:32 daemonh 阅读(340) 评论(0) 推荐(0)

协议消息与应用程序事件的统一分发框架
摘要:Herm实现了一个Dispatcher来分发协议消息和程序中的自动事件。Dispatcher管理一个泛型的处理器Handler,不同的需求可以实现不通的Handler。Herm从通用性的角度,实现了支持IMsgHandler&IEvtHandler,分别支持协议消息和应用事件的分发处理器。 struct IMsgHandler { virtual void Handle(const char* buf, int len, const void* param) = 0; };MsgDispatcher根据消息ID(Herm里将ID设成Type&Code),定位到Handler,将 阅读全文

posted @ 2011-04-23 14:33 daemonh 阅读(252) 评论(0) 推荐(0)

嵌套协议的消息分发处理
摘要:现在herm framework,只支持1层协议的分发。对于嵌套的协议目前无法分发。嵌套协议在实际开发中,很有可能遇到,有必要对这类需求提供支持。嵌套协议像下面的样子:protocol1 |--- type1---code1----| protocol 2|protocol2 |--- type2---code2----| ----data----|目前,Session里维护一个HandlerMgr,记为HMgr1; 考虑再加一个HandlerMgr,叫做HMgr2吧。Framework怎么知道要用二级的HMgr2去分发消息呢? 加须要嵌套的协议的type1&code1到HMgr2中, 阅读全文

posted @ 2011-04-02 14:18 daemonh 阅读(181) 评论(0) 推荐(0)

【Herm程序员开发指导】第2章 Herm Framework和网络通信组件
摘要:http://blog.csdn.net/herm_lib daemon.huang # gmail # com2.1 概述本章从网络通信组件的结构开始,简单地介绍一种较常用的通信组件结构。接着结合通信组件的结构来说明Framework的实现,描述Framework的对象模型,Network、Peer和Session。最后,分析Framework实现的时候采用了哪些措施保证性能,以及哪些地方还可以继续提高性能。最后给出安全措施。2.2 网络通信组件一个网络应用程序很多情况下简单地分成两层:逻辑层和网络层,其关系如下: +---------------+ | 逻辑层 | ------------ 阅读全文

posted @ 2010-11-01 22:52 daemonh 阅读(391) 评论(0) 推荐(0)

【Herm程序员开发指导】目录
摘要:http://blog.csdn.net/herm_lib daemon.huang # gmail # com第1章 概述第2章 Herm Framework和网络通信组件第3章 Herm Framework实例第4章 Herm Socket第4章 Herm Utils 阅读全文

posted @ 2010-10-14 19:42 daemonh 阅读(174) 评论(0) 推荐(0)

导航