[发明专利]一种基于共享内存的对象管理与恢复方法及系统无效
申请号: | 201110252490.0 | 申请日: | 2011-08-30 |
公开(公告)号: | CN102955817A | 公开(公告)日: | 2013-03-06 |
发明(设计)人: | 伍洋;韩勇;胡健 | 申请(专利权)人: | 腾讯数码(深圳)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 张颖玲;王黎延 |
地址: | 518118 广东省深圳市龙岗*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 共享 内存 对象 管理 恢复 方法 系统 | ||
技术领域
本发明涉及对象管理技术,尤其涉及一种基于共享内存的对象管理与恢复方法及系统。
背景技术
随着网络游戏应用越来越广泛,用于管理游戏数据的游戏服务器逐渐要承载数以千计甚至更多的用户游戏数据。以一个采用面向对象程序设计的游戏服务进程为例,一个游戏服务进程需要支持最大3000个在线游戏用户、2000个游戏房间、以及2000个游戏逻辑对象等。由于游戏服务器需要长时间、连续地提供游戏服务,因此,当游戏服务进程因为简单逻辑改动、或运行出错(Crash)时,游戏服务进程的内存数据会全部丢失,此时就需要重启进程,才能继续提供服务。
目前,在较短时间间隔内游戏服务进程再次启动时,有两种恢复内存数据的方法:
一种是,需要所有游戏用户离线并重新登录,通过数据库(DB)或数据文件(File)重建游戏用户对象,并继续提供游戏服务。但是,这种方式由于所有游戏用户均会被踢下线并需要重新登录,且游戏服务进程会停机或Crash时刻的所有游戏内容上下文会丢失,因此会严重影响用户的使用体验。
另一种是,通过操作系统内核提供的共享内存机制,游戏用户不需要离线并重新登录,而直接恢复游戏用户的游戏数据和对象,并继续游戏服务。这种方式能应对游戏服务程序对高可用、高可靠的要求以及7(天)*24(小时)的运营需求,因此,业界普遍采用共享内存的方式支持游戏数据的迅速恢复。但是,如何基于共享内存实现对象的管理与自动恢复,目前还没有完整、安全和高效的解决方案。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于共享内存的对象管理与恢复方法及系统,能够实现共享内存上对象的高效管理与自动恢复。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种基于共享内存的对象管理与恢复方法,包括:
注册托管到MTO系统的类型和类型组,并建立类型与类型组之间的关联关系;根据所有注册类型组信息分配/找回一块连续的共享内存区域;初始化/恢复所分配的共享内存区域,并为每个类型组在共享内存区域映射内存池;由内存池完成托管类型的管理与恢复。
上述方案中,所述建立类型组与其对应的共享内存区域的映射关系包括:
a1、计算支持所有托管到MTO系统的类型和类型组所需要的共享内存总大小(TotalSize);
a2、根据当前应用进程传入的共享内存关键值ShmKey和计算的TotalSize大小,创建或重新获得共享内存对象,并调用shmat()将获得的共享内存段连接到应用进程;
a3、在共享内存首部创建CSharedMem对象,并记录共享内存元数据;
a4、遍历每个类型组,逐一为每个类型组在共享内存区域映射固定大小内存池,保存映射关系并完成内存池上对象的初始化或恢复。
上述方案中,所述对共享内存的管理为:通过对象创建接口完成的对象创建;所述对象创建包括:查找类型组映射的内存池的头部CObjMng;从空闲列表FreeList找到空闲索引块CIdx[i],根据类型Type在对应空闲数据块CObj[i]的首地址执行placement new创建对象,对应的索引块CIdx[i]从FreeList删除,并加入使用列表UsedList中。
上述方案中,所述对共享内存的管理为:通过对象获取接口完成的对象获取;所述对象获取包括:查找类型组映射的内存池的头部CObjMng;根据请求下标i直接查找对应索引块CIdx[i];检查CIdx[i]使用状态并返回对应的数据块CObj[i]。
上述方案中,所述对共享内存的管理为:通过对象释放接口完成的对象释放;所述对象释放包括:查找类型组映射的内存池的头部CObjMng;根据请求下标i直接查找对应索引块CIdx[i];检查CIdx[i]使用状态,并将CIdx[i]从UsedList删除,重新加入FreeList。
该方法进一步包括:引入MTO系统抽象基类CObj,所有托管到MTO系统的类型均必须直接或间接派生自CObj,支持单继承或多继承方式。
上述方案中,为每个注册类型组分配的共享内存区域包括管理头、索引域和数据域。
本发明还提供了一种基于共享内存的对象管理与恢复系统,包括:MTO托管类型/类型组注册模块、MTO接口层、以及MTO共享内存管理模块;其中,
所述MTO托管类型/类型组注册模块,用于记录所有托管到MTO系统的类型和类型组的元数据信息,并建立类型和类型组之间的关联关系;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯数码(深圳)有限公司,未经腾讯数码(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110252490.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高温浮充耐久性镍氢电池
- 下一篇:人机互动系统和方法