基于Hash-map的多点缓存装置的制作方法

文档序号:6555405阅读:406来源:国知局
专利名称:基于Hash-map的多点缓存装置的制作方法
技术领域
本发明涉及缓存技术领域,尤其涉及一种基于Hash-map的多点缓存装置。
背景技术
在统一用户认证的应用服务器(AS AccountServer)的实际应用中,有大量认证是基于同一用户,这对AS和数据库产生很大压力,而用户频繁登录、恶意认证等问题也会妨碍AS服务器认证速度。
Hash-map(哈希图)是一种数据结构,使用该数据结构存储数据,可以大大加快数据检索的速度,并可方便地实现分布式存储。
Map(图)是一种普遍使用的数据结构,其采用树状的存储形式,map由两部分组成索引key和内容value。索引用于在map中快速检索数据内容,内容则是存储在map中的实际数据。Mulitmap是map的一种特殊形式,该数据结构允许同一个key对应多个value值。

发明内容
本发明要解决的技术问题是提供一种基于Hash-map的多点缓存装置,它可为AS提供一个缓存用户认证信息的模块。
为了解决上述技术问题,本发明基于Hash-map的多点缓存装置采用的技术方案是,在应用服务器中嵌入缓存模块。
由于采用上述技术方案,本发明的基于Hash-map的多点缓存装置能有效加快AS服务器认证速度,减轻数据库压力,并解决用户频繁登录、恶意认证等问题,从而提高工作效率。


图1是本发明的Hash-map数据结构图;图2是本发明的map数据结构图;图3是本发明的数据同步机制示意图。
具体实施例方式
下面结合附图对本发明做进一步详细说明。
本发明的基于Hash-map的多点缓存装置是在应用服务器中嵌入一个缓存用户认证信息的模块。缓存模块主要由实现缓存功能的Hash-map存储容器和实现淘汰功能的map容器组成,hash-map的数据结构如图1所示,所述Hash-map存储容器包括UID(系统随机产生的64位编码,用于标识每一条缓存的记录)、使用者、组、生命期四个map存储结构,每个map存储结构包含索引和内容,所述UID map由系统生成,保证全局唯一,其记录索引由调用者传入,也可由系统生成后返回调用者,所述使用者(User)map存储需缓存的记录内容以及该条记录的其他属性,该其他属性包括所属组别、访问次数和生命期,所述组(Group)map存储所有记录对于组的信息,通过组map可快速定位某一组记录,所述生命期(Life)map用于自动将记录生命期做排序,并快速定位到已过期的记录。实际程序实现中,需同时维护这4个map存储结构,以便方便灵活的对缓存内容进行操作和访问。对于新插入的任意一条记录,均需修改4个存储结构中的相应值。
当缓存模块执行缓存功能时,索引key为用户PTID(盛大通行证,是盛大网络推出的统一账号系统,拥有该通行证就可在所有支持产品中直接登录使用,而无需再次注册),内容value为该记录的相关信息(用户静态密码,是否绑定密宝等)。使用hash-map的优点是在大数据量(10万-100万条记录)情况下,可以保证数据插入和查询的速度,但是它的缺点是,相比其它容器,更耗费内存。
缓存模块由map容器实现淘汰机制,该淘汰机制包括超时淘汰、容量满淘汰和溢出淘汰,其中,超时淘汰是在每条数据插入时,都赋予该条数据一个生存期,在到达生存期后,程序自动将其从内存中删除,容量满淘汰是在缓存达到最大容量时,自动删除一部分最先加入的记录,溢出淘汰是将缓存中任何一个失效的记录设置为钝化状态,而不是直接淘汰出缓存。当缓存模块实现淘汰功能时,索引key为每条记录的加入时间(因考虑到时间精度,采用multimap,图2所示为map的数据结构),内容value为用户PTID。这样就可避免在整个模块中,遍历查找最先插入的记录。
缓存模块能提供多个配置选项,如最大容量、策略组、超时时间以及是否更新记录访问时间等。
缓存模块能对应用服务器中缓存的用户数据进行控制并使其同步化。在缓存记录的生存周期内,该用户记录如果被更新(比如,修改了静态密码),可能导致用户数据在一段时间内不一致,此时,可发送一个消息包到所有使用缓存模块的服务器,并通知缓存模块将该用户记录删除(图3),所述的消息包通常采用UDP(User Datagram Protocol,用户数据报协议)的方式。
应用服务器中可同时嵌入多种Hash算法,根据不同应用,缓存模块自动选用一种或若干种算法。可供选用的算法包括PHP_hash、OPENSSL_hash、MYSQL_hash、SIMPLE_hash。根据实验结果,这些经典算法虽然构造字符串Hash函数的方法不同,但是它们的效率相互之间差距很小。
在应用中,对放入缓存的记录可进行分组管理,如设置不同策略的生命周期。以下为本发明部分接口示例}interface ICacheObjectIDispatch{[id(1),helpstring(″method Add″)]HRESULT Add([in]ULONG policy,[in]BSTR userkey,[[id(2),helpstring(″method Remove″)]HRESULT Remove([in]BSTR userkey,[out]BSTR* vε[id(3),helpstring(″method Get″)]HRESULT Get([in]BSTR userkey,[out]BSTR*value,[[id(4),helpstring(″method Clear″)]HRESULT Clear(void);[id(5),helpstring(″method Size″)]HRESULT Size([out,retval]LONG*ret);[id(6),helpstring(″method SetPolicy″)]HRESULT SetPolicy([in,out]ULONG*policy,[ir[id(7),helpstring(″method GetPolicy″)]HRESULT GetPolicy([in]ULONG policy,[in]ULC-};本发明的基于Hash-map的多点缓存装置对多个游戏认证的命中率可达50%以上,有效缓解了数据库的压力。下表所列为性能测试数据

AS使用本发明的装置存储用户认证信息,在一定时间段内保存用户的认证信息,以防止用户在短时间内多次重复认证,造成服务压力过大。
SDK(Software Development Kit,软件开发工具包)使用本发明的装置存储用户认证信息,包括用户名、密码、认证时间、频率等。通过分析用户认证行为,可以有效防止用户恶意认证,这既保证正常用户帐号的安全性,也在一定程度上,减轻了AS服务器的压力。
权利要求
1.一种基于Hash-map的多点缓存装置,其特征在于,在应用服务器中嵌入缓存模块。
2.如权利要求1所述的基于Hash-map的多点缓存装置,其特征在于,所述缓存模块主要由实现缓存功能的Hash-map存储容器和实现淘汰功能的map容器组成。
3.如权利要求2所述的基于Hash-map的多点缓存装置,其特征在于,所述Hash-map存储容器包括UID map、使用者map、组map和生命期map四个map存储结构,每个map存储结构包含索引和内容,所述UID map由系统生成,保证全局唯一,其记录索引由调用者传入,也可由系统生成后返回调用者,所述使用者map存储需缓存的记录内容以及该条记录的其他属性,该其他属性包括所属组别、访问次数和生命期,所述组map存储所有记录对于组的信息,通过组map可快速定位某一组记录,所述生命期map用于自动将记录生命期做排序,并快速定位到已过期的记录。
4.如权利要求3所述的基于Hash-map的多点缓存装置,其特征在于,所述索引为用户通行证,所述内容为记录的相关信息,该相关信息包括用户静态密码、是否绑定密宝以及用户认证信息。
5.如权利要求2所述的基于Hash-map的多点缓存装置,其特征在于,所述map容器为multimap容器,包含索引和内容,实现淘汰功能时,索引为每条记录的加入时间,内容为用户通行证。
6.如权利要求2或5所述的基于Hash-map的多点缓存装置,其特征在于,所述的淘汰功能包括超时淘汰、容量满淘汰和溢出淘汰,其中,超时淘汰是在每条数据插入时,都赋予该条数据一个生存期,在到达生存期后,程序自动将其从内存中删除,容量满淘汰是在缓存达到最大容量时,自动删除一部分最先加入的记录,溢出淘汰是将缓存中任何一个失效的记录设置为钝化状态,而不是直接淘汰出缓存。
7.如权利要求1所述的基于Hash-map的多点缓存装置,其特征在于,所述缓存模块还具有配置选项,该配置选项包括最大容量、策略组、超时时间及是否更新记录访问时间。
8.如权利要求1所述的基于Hash-map的多点缓存装置,其特征在于,当用户记录更新时,可发送消息包至所有具有缓存模块的服务器,并通知缓存模块将原用户记录删除。
9.如权利要求1所述的基于Hash-map的多点缓存装置,其特征在于,所述应用服务器可同时嵌入多种Hash算法,缓存模块可根据不同应用,自动选用一种或多种算法。
全文摘要
本发明公开了一种基于Hash-map的多点缓存装置,它是在应用服务器中嵌入缓存模块。本发明的装置能有效加快应用服务器认证速度,减轻数据库压力,并能解决用户频繁登录、恶意认证等问题,从而提高工作效率。
文档编号G06F17/30GK101060402SQ20061002591
公开日2007年10月24日 申请日期2006年4月21日 优先权日2006年4月21日
发明者高祯祥, 郁兵 申请人:盛趣信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1