CN102469095A - 一种基于账户服务器的会话缓存结点的标识方法及系统 - Google Patents

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

Info

Publication number
CN102469095A
CN102469095A CN2010105518822A CN201010551882A CN102469095A CN 102469095 A CN102469095 A CN 102469095A CN 2010105518822 A CN2010105518822 A CN 2010105518822A CN 201010551882 A CN201010551882 A CN 201010551882A CN 102469095 A CN102469095 A CN 102469095A
Authority
CN
China
Prior art keywords
buffer memory
memory node
session
session buffer
auxiliary variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010105518822A
Other languages
English (en)
Inventor
黄光成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN2010105518822A priority Critical patent/CN102469095A/zh
Publication of CN102469095A publication Critical patent/CN102469095A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明适用于互联网领域,本发明提供了一种基于账户服务器的会话缓存结点的标识方法及系统,该方法包括:在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;根据会话缓存结点内的连接套接字文件描述符sockfd和所述辅助变量识别该会话缓存结点。本发明提供的技术方案具有唯一标识会话缓存结点,资源利用率高的优点。

Description

一种基于账户服务器的会话缓存结点的标识方法及系统
技术领域
本发明属于互联网领域,尤其涉及一种基于账户服务器的会话缓存结点的标识方法及系统。
背景技术
随着网络技术的发展,网络游戏越来越多,游戏中角色的创建也越来越多,现有的网络游戏系统的结构如图1所示,包括:前端的客户接入服务器(LotusServer)和后端的脏字检查服务器(DirtyServer)、名字检查服务器(NameServer)、游戏世界服务器(WorldServer)和帐号服务器(Account Server),其中,LotusServer负责客户端的接入和连接,DirtyServer负责脏字的搜索和判断;NameServer负责名字的查找,WorldServer负责游戏角色事务的处理;帐号服务器(Account Server)负责游戏中角色的创建、删除、修改等功能,与AccountServer交互的有前端的客户接入服务器(LotusServer)和后端的脏字检查服务器(DirtyServer)、名字检查服务器(NameServer)和游戏世界服务器(WorldServer),这些服务器均为单线程的,一般部署在不同的物理机器上,通过网络进行消息交互。在AccountServer中,一般是在事务开始时创建会话缓存结点,该缓存结点内保存有:客户端发起连接的IP地址、端口号以及连接套接字文件描述符(sockfd)等信息;在事务结束时找到这个会话缓存结点,将其保存的上述信息打包到响应消息中发送给LotusServer,然后删除这个会话缓存结点。在事务处理的中间,如果AccountServer收到LotusServer发送的客户端连接断开通知,则根据sockfd找到与其相应的会话缓存结点并删除。需要说明的是,在事务开始创建会话缓存结点的时候,需要为该会话缓存结点分配一个sockfd;在后续的处理中,属于该会话的异步消息均需携带这个sockfd,以识别该消息属于哪个会话。另外,该sockfd的分配原则为,在创建会话缓存结点时,系统将未使用的最小的sockfd分配给新的会话缓存结点使用。
按照现有技术所提供的技术方案,发现现有技术中存在如下技术问题:
现有技术提供的技术方案的方法中的sockfd是基于上述分配原则的,导致在网络异常时,不同会话缓存结点分配同一个sockfd,所以sockfd无法唯一标识会话缓存结点,影响会话缓存结点的数据保存。
发明内容
本发明实施例的目的在于提供一种基于账户服务器的会话缓存结点的标识方法,旨在解决现有技术的方法无法唯一标识会话缓存结点,影响会话缓存结点的数据保存的问题。
本发明实施例是这样实现的,本发明提供一种基于账户服务器的会话缓存结点的标识方法,所述方法包括如下步骤:
在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;
根据会话缓存结点内的文件描述符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个字节(图3),当然也可以为sockfd为中间4个字节,辅助变量为头一个和最后一个字节,当然还可以为,sockfd为后4个字节,辅助变量为前2个字节,当然还可以为其它任意的排列方式,本发明并不局限具体的排列方式。另外,上述会话可以为:与该会话缓存结点匹配的会话。
可选的,上述方法在S22之后还可以包括:
S23、在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务;该其它缓存结点具体可以为:请求消息缓存结点,当然还可以为:为该事务建立的其它缓存结点。
上述预先设定的存活时间用户可以根据实际情况自行设定。另外,实现S23的方式具体可以为:
在创建每个会话缓存结点时,在结点内设定一计时器,如计时器的值超过存活时间,删除该会话缓存结点。当然在实际情况中也可以采用其它的方式,例如,根据存活时间确定扫描频率,按该扫描平频率扫描,如扫描到的会话缓存结点的sockfd和辅助变量在上次扫描也存在,删除该会话缓存结点,该扫描频率可以为存活时间的倒数。当然在实际情况中,也可以在会话缓存结点内增加时间戳的方式来获知是否超过存活时间,具体方式可以为:用系统的当前时间减去结点的时间戳得到差值,如差值大于存活时间,则删除,否则保留,需要说明的是,同一个事务可能创建多种缓存结点(例如会话缓存结点或请求消息缓存结点),这些缓存结点均需要分配同一时间戳。
需要说明的是,上述事务与会话的关系可以为,每有一个新的事务,肯定会建立一个新的会话,并建立一个会话的缓存结点,如果需要,该事务还会建立其它的缓存结点,例如请求消息缓存结点等。
上述方法在S23之后还可以包括:
S24、通知客户接入服务器断开与客户端的连接,该客户端可以为S23中删除的会话缓存结点对应的客户端。
下面以一个实际的例子来说明本发明提供的方法所达到的技术效果。
按现有技术提供的方法,AccountServer在创建会话缓存结点时的时序可能为:
(1)AccountServer处理创建角色请求,sockfd=11,创建一个会话缓存结点S1,将该创建角色事务记为T1;
(2)客户端连接断开,AccountServer处理客户端连接断开通知,sockfd=11,删除会话缓存结点S1;
(3)AccountServer处理另一个创建角色请求,sockfd=11,创建另一个会话缓存结点S2,将该创建角色事务记为T2,注意这里的sockfd和事务T1中的相同;
(4)AccountServer处理来自WorldServer的创建角色响应(属于事务T1中的消息),根据sockfd查找会话缓存结点,结果找到了S2,而S2是事务T2开始时创建的会话缓存结点。
按采用本发明提供的方法,AccountServer在创建会话缓存结点时的时序可能为:
(1)AccountServer处理创建角色请求,sockfd=11,创建一个会话缓存结点S1,将该创建角色事务记为T1,分配的辅助变量为:1;
(2)客户端连接断开,AccountServer处理客户端连接断开通知,sockfd=11,辅助变量1,删除会话缓存结点S1;
(3)AccountServer处理另一个创建角色请求,sockfd=11,创建另一个会话缓存结点S2,将该创建角色事务记为T2,分配的辅助变量为2;注意这里的sockfd和事务T1中的相同,但辅助变量不同;
(4)AccountServer处理来自WorldServer的创建角色响应(属于事务T1中的消息),根据sockfd和辅助变量查找会话缓存结点,结果无法查找到sockfd和辅助变量对应的结点。
很显然,现有技术提供的方法由于仅用sockfd来识别结点,所以导致事务T1的消息会改变S2,而采用本发明提供的方法则能很好的避免这个问题,在实际应用中,由于根据sockfd和辅助变量无法查找到S1(已删除),所以会结束操作,而不会影响到S2存储的数据,所以本发明提供的方法能够唯一标识会话存储结点,不影响会话缓存结点的数据保存。并且该方法还提供了会话缓存结点的清理方法,不会出现同一个会话缓存结点存活时间太长而导致的占用系统资源的问题,提高了资源利用率。并且该方法在删除该会话缓存结点后,还通知客户接入服务器断开与客户端的连接,减少了客户接入服务器的无效连接,进一步提高了网络资源利用率。
本发明还提供一种基于账户服务器的会话缓存结点的标识系统,该系统如图4所示,包括:
配置单元41在会话缓存结点内配置一辅助变量,
分配变量单元42在创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;
标识单元43根据会话缓存结点内的连接套接字文件描述符sockfd和所述辅助变量识别该会话缓存结点。
可选的,上述系统还包括:
删除单元44在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该其它缓存结点可以参见方法实施例的说明。
可选的,上述系统还包括:
通知断开单元45,在删除单元44删除会话缓存结点后,通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
可选的,上述系统还包括:
字节组单元46在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd。上述会话可以为,上述会话可以为与该会话缓存结点匹配的会话。
上述字节数组的大小以及位置可以参见方法实施例中的相关描述,这里不再赘述。
本发明提供的方法能够唯一标识会话缓存结点,不影响会话缓存结点的数据保存。并且该方法还提供了会话缓存结点的清理方法,不会出现同一个会话缓存结点存活时间太长而导致的占用系统资源的问题,提高了资源利用率。并且该方法在删除该会话缓存结点后,还通知客户接入服务器断开与客户端的连接,减少了客户接入服务器的无效连接,进一步提高了网络资源利用率。
值得注意的是,上述实施例中的系统,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
综上所述,本发明提供的技术方案具有唯一标识会话缓存结点,资源利用率高的优点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于账户服务器的会话缓存结点的标识方法,其特征在于,所述方法包括如下步骤:
在会话缓存结点内配置一辅助变量,当创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;
根据会话缓存结点内的文件描述符sockfd和所述辅助变量识别该会话缓存结点。
2.根据权利要求1所述的方法,其特征在于,所述方法在根据sockfd和所述辅助变量识别该会话缓存结点的步骤之后,还包括:
在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务。
3.根据权利要求2所述的方法,其特征在于,所述方法在删除该会话缓存结点之后还包括:
通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
4.根据权利要求1所述的方法,其特征在于,所述在根据sockfd和所述辅助变量识别该会话缓存结点的步骤之后还包括:
在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd;所述会话具体为:与该会话缓存结点匹配的会话。
5.一种基于账户服务器的会话缓存结点的标识系统,其特征在于,所述系统包括:
配置单元,用于在会话缓存结点内配置一辅助变量,
分配变量单元,用于在创建会话缓存结点时,为会话缓存结点分配辅助变量,该辅助变量的值随创建的会话缓存结点的总个数变化;
标识单元,用于根据会话缓存结点内的文件描述符sockfd和所述辅助变量识别该会话缓存结点。
6.根据权利要求5所述的系统,其特征在于,所述系统还包括:
删除单元,用于在会话缓存结点在账户服务器内保存的时间超过预先设定的存活时间时,删除该会话缓存结点和事务的其它缓存结点,该事务为与该会话缓存结点匹配的事务。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
通知断开单元,用于在所述删除单元删除会话缓存结点后通知客户接入服务器断开与客户端的连接,该客户端为删除的会话缓存结点对应的客户端。
8.根据权利要求5所述的系统,其特征在于,所述系统还包括:
字节组单元,用于在属于会话的异步消息的报文头配置一个字节数组,该字节数组用于保存该辅助变量和sockfd;所述会话具体为:与该会话缓存结点匹配的会话。
CN2010105518822A 2010-11-19 2010-11-19 一种基于账户服务器的会话缓存结点的标识方法及系统 Pending CN102469095A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105518822A CN102469095A (zh) 2010-11-19 2010-11-19 一种基于账户服务器的会话缓存结点的标识方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105518822A CN102469095A (zh) 2010-11-19 2010-11-19 一种基于账户服务器的会话缓存结点的标识方法及系统

Publications (1)

Publication Number Publication Date
CN102469095A true CN102469095A (zh) 2012-05-23

Family

ID=46072269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105518822A Pending CN102469095A (zh) 2010-11-19 2010-11-19 一种基于账户服务器的会话缓存结点的标识方法及系统

Country Status (1)

Country Link
CN (1) CN102469095A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1863061A (zh) * 2005-09-28 2006-11-15 华为技术有限公司 移动终端在联网游戏中断时自动恢复的方法及其系统
US20060271784A1 (en) * 2005-05-27 2006-11-30 Microsoft Corporation Efficient processing of time-bounded messages
CN101335916A (zh) * 2008-07-22 2008-12-31 中山大学 一种通用的手机角色扮演(rpg)网络游戏引擎

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271784A1 (en) * 2005-05-27 2006-11-30 Microsoft Corporation Efficient processing of time-bounded messages
CN1863061A (zh) * 2005-09-28 2006-11-15 华为技术有限公司 移动终端在联网游戏中断时自动恢复的方法及其系统
CN101335916A (zh) * 2008-07-22 2008-12-31 中山大学 一种通用的手机角色扮演(rpg)网络游戏引擎

Similar Documents

Publication Publication Date Title
CN103780679B (zh) 基于http协议的长延时远程调用方法
CN102739720B (zh) 分布式缓存服务器系统及其应用方法、缓存客户端
CN104115472A (zh) 用于内容导向网络中可扩展路由的方法
CN109936513A (zh) 基于fpga的数据报文处理方法、智能网卡和cdn服务器
US20100241757A1 (en) System and Method for Storing Streaming Media File
CN101442558B (zh) 一种为p2sp网络提供索引服务的方法和系统
CN102971732A (zh) 键/值存储器的集成分级查询处理的系统结构
CN103095732A (zh) 信息推送系统和信息推送方法
CN105472002A (zh) 基于集群节点间即时拷贝的会话同步方法
CN103475566A (zh) 一种实时消息交换平台及分布式集群组建方法
CN110191428A (zh) 一种基于智能云平台的数据分配方法
CN104660643A (zh) 请求响应方法、装置及分布式文件系统
CN104734962B (zh) 一种非结构化p2p网络的资源搜索方法
CN105357322A (zh) 一种基于拓扑划分的虚拟机分配方法
WO2024093064A1 (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
CN104468805A (zh) 消息路由装置和方法
CN102394948A (zh) Dhcp地址分配方法及dhcp服务器
CN103414641B (zh) 邻居表项释放方法、装置和网络设备
CN101344882B (zh) 数据查询方法、插入方法及删除方法
CN102891797A (zh) 支持消息持久化的发布订阅方法
KR100757338B1 (ko) 동일한 리플리케이션 그룹에 속하는 구성원 서버의 상태를동기화하는 방법 및 시스템
CN106899621A (zh) 一种调度系统及方法
CN105893429A (zh) 用于优化web缓存的方法及系统
CN102737131A (zh) 一种针对数据库重做日志的处理方法及系统
CN102710790A (zh) 一种基于元数据管理的分布式缓存实现方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120523