一种基于账户服务器的会话缓存结点的标识方法及系统的制作方法

文档序号:7765864阅读:307来源:国知局
专利名称:一种基于账户服务器的会话缓存结点的标识方法及系统的制作方法
技术领域
本发明属于互联网领域,尤其涉及一种基于账户服务器的会话缓存结点的标识方法及系统。
背景技术
随着网络技术的发展,网络游戏越来越多,游戏中角色的创建也越来越多,现有的网络游戏系统的结构如图1所示,包括前端的客户接入服务器(LotusServer)和后端的脏字检查服务器(Dirt於erver)、名字检查服务器(Namekrver)、游戏世界服务器 (WorldServer)和帐号服务器(Account Server),其中,LotusServer负责客户端的接入和连接,DirtyServer负责脏字的搜索和判断;Namekrver负责名字的查找,WorldServer 负责游戏角色事务的处理;帐号服务器(Account Server)负责游戏中角色的创建、删除、 修改等功能,与AccountServer交互的有前端的客户接入服务器(LotusServer)和后端的脏字检查服务器(Dirtykrver)、名字检查服务器(NameServer)和游戏世界服务器 (WorlcKerver),这些服务器均为单线程的,一般部署在不同的物理机器上,通过网络进行消息交互。在AccountServer中,一般是在事务开始时创建会话缓存结点,该缓存结点内保存有客户端发起连接的IP地址、端口号以及连接套接字文件描述符(sockfd)等信息;在事务结束时找到这个会话缓存结点,将其保存的上述信息打包到响应消息中发送给 LotusServer,然后删除这个会话缓存结点。在事务处理的中间,如果AccountServer收到 LotusServer发送的客户端连接断开通知,则根据sockfd找到与其相应的会话缓存结点并删除。需要说明的是,在事务开始创建会话缓存结点的时候,需要为该会话缓存结点分配一个sockfd ;在后续的处理中,属于该会话的异步消息均需携带这个sockfd,以识别该消息属于哪个会话。另外,该sockfd的分配原则为,在创建会话缓存结点时,系统将未使用的最小的sockfd分配给新的会话缓存结点使用。按照现有技术所提供的技术方案,发现现有技术中存在如下技术问题现有技术提供的技术方案的方法中的sockfd是基于上述分配原则的,导致在网络异常时,不同会话缓存结点分配同一个sockfd,所以sockfd无法唯一标识会话缓存结点,影响会话缓存结点的数据保存。

发明内容
本发明实施例的目的在于提供一种基于账户服务器的会话缓存结点的标识方法, 旨在解决现有技术的方法无法唯一标识会话缓存结点,影响会话缓存结点的数据保存的问题。本发明实施例是这样实现的,本发明提供一种基于账户服务器的会话缓存结点的标识方法,所述方法包括如下步骤在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;
3
根据会话缓存结点内的文件描述符sockfd和所述辅助变量识别该会话缓存结
点ο本发明还提供一种基于账户服务器的会话缓存结点的标识系统,所述系统包括配置单元,用于在会话缓存结点内配置一辅助变量,分配变量单元,用于在创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;标识单元,用于根据会话缓存结点内的文件描述符sockfd和所述辅助变量识别该会话缓存结点。本发明实施例与现有技术相比,有益效果在于本发明的技术方案通过sockfd和辅助变量来唯一标识会话缓存结点,所以本发明提供的技术方案具有唯一标识会话缓存结点,不影响会话缓存结点的数据保存的优点。


图1是现有技术提供的游戏系统结构图;图2是本发明提供的基于账户服务器的会话结点标识方法的流程图;图3是本发明提供的字节数组的分配示意图;图4是本发明提供的基于账户服务器的会话结点标识系统的结构图;需要说明的是,上述图3中辅助变量的大小以2个字节为例,位置位于sockfd之后。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明提供一种基于账户服务器的会话结点标识方法,该方法由账户服务器完成,该方法如图2所示,具体包括如下步骤S21、在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随账户服务器创建的会话缓存结点的总个数变化;S22、根据会话缓存结点内的sockfd和上述辅助变量识别该会话缓存结点。需要说明的是,为会话缓存结点分配辅助变量的方法具体可以为下述方式中的任一种方式A、每创建一新的会话缓存结点,该辅助变量的值在上一个值的基础上增加设定数值,在辅助变量的值达到最大值时,对辅助变量清零。例如,这里设定初始值可以为0,当然也可以为其它的数值,例如1、2、3等等,这里的设定数值为1,当然也可以为其它的数值,例如2、3、4等,当创建第一个会话缓存结点时, 该辅助变量可以为1 (设定数值为1),当创建第二个会话缓存结点时,该辅助变量可以为2, 当创建第三个会话缓存结点时,该辅助变量为3。上述最大值用户可以自行设定。方式B、设定辅助变量的值与创建的会话缓存结点总个数的函数,根据该函数和总个数计算出辅助变量;
上述函数可以为任意函数,例如线性函数,也可以为二次或多次函数。当然分配辅助变量的方式还可以为其它的方式,本发明并不局限该辅助变量的分配方法。需要说明的是,上述方法在S22之后还可以包括在属于会话的异步消息的报文头配置(即定义)一个字节数组,该字节数组用于保存该辅助变量和sockfd,需要说明的是,上述字节数组的大小可以为大于4个字节的任意的大小,例如5个字节、6个字节或多个字节;该字节数组的位置也可以为不影响报文头结构的任意位置,另外报文头内的sockfd与辅助变量字节的位置可以为任意分配的,以6 个字节为例,sockfd可以为前4个字节,辅助变量可以为后2个字节(图幻,当然也可以为 sockfd为中间4个字节,辅助变量为头一个和最后一个字节,当然还可以为,sockfd为后4 个字节,辅助变量为前2个字节,当然还可以为其它任意的排列方式,本发明并不局限具体的排列方式。另外,上述会话可以为与该会话缓存结点匹配的会话。可选的,上述方法在S22之后还可以包括S23、在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务;该其它缓存结点具体可以为请求消息缓存结点,当然还可以为为该事务建立的其它缓存结
点ο上述预先设定的存活时间用户可以根据实际情况自行设定。另外,实现S23的方式具体可以为在创建每个会话缓存结点时,在结点内设定一计时器,如计时器的值超过存活时间,删除该会话缓存结点。当然在实际情况中也可以采用其它的方式,例如,根据存活时间确定扫描频率,按该扫描平频率扫描,如扫描到的会话缓存结点的sockfd和辅助变量在上次扫描也存在,删除该会话缓存结点,该扫描频率可以为存活时间的倒数。当然在实际情况中,也可以在会话缓存结点内增加时间戳的方式来获知是否超过存活时间,具体方式可以为用系统的当前时间减去结点的时间戳得到差值,如差值大于存活时间,则删除,否则保留,需要说明的是,同一个事务可能创建多种缓存结点(例如会话缓存结点或请求消息缓存结点),这些缓存结点均需要分配同一时间戳。需要说明的是,上述事务与会话的关系可以为,每有一个新的事务,肯定会建立一个新的会话,并建立一个会话的缓存结点,如果需要,该事务还会建立其它的缓存结点,例如请求消息缓存结点等。上述方法在S23之后还可以包括S24、通知客户接入服务器断开与客户端的连接,该客户端可以为S23中删除的会话缓存结点对应的客户端。下面以一个实际的例子来说明本发明提供的方法所达到的技术效果。按现有技术提供的方法,AccountServer在创建会话缓存结点时的时序可能为(I)AccountServer处理创建角色请求,sockfd = 11,创建一个会话缓存结点Si, 将该创建角色事务记为Tl ;(2)客户端连接断开,AccountServer处理客户端连接断开通知,sockfd = 11,删除会话缓存结点Sl ;
(3) AccountServer处理另一个创建角色请求,sockfd = 11,创建另一个会话缓存结点S2,将该创建角色事务记为T2,注意这里的sockfd和事务Tl中的相同;(4) AccountServer处理来自WorldServer的创建角色响应(属于事务Tl中的消息),根据sockfd查找会话缓存结点,结果找到了 S2,而S2是事务T2开始时创建的会话缓
存结点。按采用本发明提供的方法,Accoimtkrver在创建会话缓存结点时的时序可能为(I)AccountServer处理创建角色请求,sockfd = 11,创建一个会话缓存结点Si, 将该创建角色事务记为Tl,分配的辅助变量为1 ;(2)客户端连接断开,AccountServer处理客户端连接断开通知,sockfd = 11,辅助变量1,删除会话缓存结点Si ;(3) AccountServer处理另一个创建角色请求,sockfd = 11,创建另一个会话缓存结点S2,将该创建角色事务记为T2,分配的辅助变量为2 ;注意这里的sockfd和事务Tl中的相同,但辅助变量不同;(4) AccountServer处理来自WorldServer的创建角色响应(属于事务Tl中的消息),根据SOCkfd和辅助变量查找会话缓存结点,结果无法查找到sockfd和辅助变量对应的结点。很显然,现有技术提供的方法由于仅用sockfd来识别结点,所以导致事务Tl的消息会改变S2,而采用本发明提供的方法则能很好的避免这个问题,在实际应用中,由于根据 sockfd和辅助变量无法查找到Sl (已删除),所以会结束操作,而不会影响到S2存储的数据,所以本发明提供的方法能够唯一标识会话存储结点,不影响会话缓存结点的数据保存。 并且该方法还提供了会话缓存结点的清理方法,不会出现同一个会话缓存结点存活时间太长而导致的占用系统资源的问题,提高了资源利用率。并且该方法在删除该会话缓存结点后,还通知客户接入服务器断开与客户端的连接,减少了客户接入服务器的无效连接,进一步提高了网络资源利用率。本发明还提供一种基于账户服务器的会话缓存结点的标识系统,该系统如图4所示,包括配置单元41在会话缓存结点内配置一辅助变量,分配变量单元42在创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;标识单元43根据会话缓存结点内的连接套接字文件描述符sockfd和所述辅助变量识别该会话缓存结点。可选的,上述系统还包括删除单元44在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该其它缓存结点可以参见方法实施例的说明。可选的,上述系统还包括通知断开单元45,在删除单元44删除会话缓存结点后,通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
可选的,上述系统还包括字节组单元46在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd。上述会话可以为,上述会话可以为与该会话缓存结点匹配的会话。上述字节数组的大小以及位置可以参见方法实施例中的相关描述,这里不再赘述。本发明提供的方法能够唯一标识会话缓存结点,不影响会话缓存结点的数据保存。并且该方法还提供了会话缓存结点的清理方法,不会出现同一个会话缓存结点存活时间太长而导致的占用系统资源的问题,提高了资源利用率。并且该方法在删除该会话缓存结点后,还通知客户接入服务器断开与客户端的连接,减少了客户接入服务器的无效连接, 进一步提高了网络资源利用率。值得注意的是,上述实施例中的系统,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。综上所述,本发明提供的技术方案具有唯一标识会话缓存结点,资源利用率高的优点。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于账户服务器的会话缓存结点的标识方法,其特征在于,所述方法包括如下步骤在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;根据会话缓存结点内的文件描述符SOCkfd和所述辅助变量识别该会话缓存结点。
2.根据权利要求1所述的方法,其特征在于,所述方法在根据sockfd和所述辅助变量识别该会话缓存结点的步骤之后,还包括在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务。
3.根据权利要求2所述的方法,其特征在于,所述方法在删除该会话缓存结点之后还包括通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
4.根据权利要求1所述的方法,其特征在于,所述在根据sockfd和所述辅助变量识别该会话缓存结点的步骤之后还包括在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd ;所述会话具体为与该会话缓存结点匹配的会话。
5.一种基于账户服务器的会话缓存结点的标识系统,其特征在于,所述系统包括配置单元,用于在会话缓存结点内配置一辅助变量,分配变量单元,用于在创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;标识单元,用于根据会话缓存结点内的文件描述符sockfd和所述辅助变量识别该会话缓存结点。
6.根据权利要求5所述的系统,其特征在于,所述系统还包括删除单元,用于在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括通知断开单元,用于在所述删除单元删除会话缓存结点后通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
8.根据权利要求5所述的系统,其特征在于,所述系统还包括字节组单元,用于在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd ;所述会话具体为与该会话缓存结点匹配的会话。
全文摘要
本发明适用于互联网领域,本发明提供了一种基于账户服务器的会话缓存结点的标识方法及系统,该方法包括在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;根据会话缓存结点内的连接套接字文件描述符sockfd和所述辅助变量识别该会话缓存结点。本发明提供的技术方案具有唯一标识会话缓存结点,资源利用率高的优点。
文档编号H04L29/06GK102469095SQ20101055188
公开日2012年5月23日 申请日期2010年11月19日 优先权日2010年11月19日
发明者黄光成 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1