CN104133825B - 一种匹配客户端用户的方法及装置 - Google Patents
一种匹配客户端用户的方法及装置 Download PDFInfo
- Publication number
- CN104133825B CN104133825B CN201310411026.0A CN201310411026A CN104133825B CN 104133825 B CN104133825 B CN 104133825B CN 201310411026 A CN201310411026 A CN 201310411026A CN 104133825 B CN104133825 B CN 104133825B
- Authority
- CN
- China
- Prior art keywords
- user
- class queue
- class
- queue
- mark
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明公开了一种匹配客户端用户的方法及装置,该方法包括:接收客户端发送的包含有第一用户标识的应用请求;从预设的多个等级队列中获得与第一用户标识相对应的等级队列;根据获得的等级队列获取与第一用户标识相匹配的第二用户标识;其中,多个等级队列中的每个等级队列包含用户信息,用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息。本发明避免了因逐一扫描所存储的所有用户信息来查找与第一用户标识相匹配的第二用户标识而造成的匹配效率低下、消耗较多系统资源的问题,提高了匹配速度。
Description
技术领域
本发明涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及一种匹配客户端用户的方法及装置。
背景技术
目前,各客户端上用户之间的匹配较为普遍,例如网络游戏或网页游戏客户端相同等级用户(即各个实力相当的玩家)之间的匹配。网络游戏指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。网页游戏是基于Web浏览器的网络在线多人互动游戏,在玩该游戏前无需下载客户端,只需打开浏览器网页,以浏览器作为客户端,即可进入,避免了因机器配置不够而导致游戏无法运转的问题。相较于单机游戏,网络游戏和网页游戏是一种能够实现不同地域内多人之间在线玩的游戏。其中,玩家之间的战斗是当前网络游戏和网页游戏的重要组成部分。如何能够快速、精准地为每一位玩家匹配一个或多个与自己实力相当的对手来与该玩家进行交互,是游戏运营商服务器必须要解决的问题。
在对现有技术的研究和实践过程中,发明人发现现有技术至少存在以下问题:游戏运营商服务器未对所管理的所有用户信息按等级进行划分存储,当服务器在为每一位玩家匹配与自己实力相当的对手来与该玩家进行交互时,查找速度过慢,进而使得匹配效率低下,消耗较多系统资源。
发明内容
鉴于以上理由,本发明实施例提出一种匹配客户端用户的方法及装置,来解决以上背景技术部分提到的技术问题。
一方面,本发明实施例提供了一种匹配客户端用户的方法,所述方法包括:
接收客户端发送的包含有第一用户标识的应用请求;
从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识;
其中,所述多个等级队列中的每个等级队列包含用户信息,所述用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息。
一方面,本发明实施例还提供了一种匹配客户端用户的装置,所述装置包括:
应用请求接收单元,用于接收客户端发送的包含有第一用户标识的应用请求;
等级队列获取单元,用于从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
匹配标识获取单元,用于根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识;
其中,所述多个等级队列中的每个等级队列包含用户信息,所述用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息。
相较于现有技术,本发明实施例通过接收包含有第一用户标识的应用请求,获得与第一用户标识相对应的等级队列,根据所查找到的等级队列获取与第一用户标识相匹配的第二用户标识,实现了对第一用户的快速匹配,克服了现有技术中因逐一扫描所存储的所有用户信息来查找与第一用户标识相匹配的第二用户标识而造成的匹配效率低下、消耗较多系统资源的问题。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明第一实施例提供的一种匹配客户端用户的方法的流程示意图;
图2为本发明第二实施例提供的一种匹配客户端用户的方法的流程示意图;
图3为本发明第三实施例提供的一种匹配客户端用户的方法的流程示意图;
图4为本发明第四实施例提供的一种匹配客户端用户的装置的结构示意图;
图5为本发明第五实施例提供的一种匹配客户端用户的装置的结构示意图;
图6为本发明第六实施例提供的一种匹配客户端用户的装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
图1示出了本发明的第一实施例。
图1为本发明第一实施例提供的一种匹配客户端用户的方法的流程示意图。本实施例所述的方法可以通过服务器实现,所述服务器包括但不限于游戏运营商服务器、社交分享类应用服务器。参见图1,所述方法包括:
步骤S101、接收客户端发送的包含有第一用户标识的应用请求。
在本实施中,服务器可通过有线或无线通信技术接收客户端发送的应用请求。其中,所述应用请求包含有第一用户标识,该标识为能够唯一表示第一用户的字符串,例如为第一用户在登陆时使用的帐号信息,例如游戏账号、QQ号码或手机号码等。
上述无线通信技术包括CDMA(CodeDivisionMultipleAccess,码分多址)、WCDMA(WidebandCodeDivisionMultipleAccess,宽带码分多址)、GPRS(GeneralPacketRadioService,通用分组无线服务)等中的任意一项技术。
步骤S102、从预设的多个等级队列中获得与第一用户标识相对应的等级队列。
在本实施例中,服务器可预先建立多个等级队列,每个等级队列包含有用户信息,用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息。其中,所述属性信息可以是该用户的分数信息、登陆时长信息、地域信息、游戏等级信息等。用户所属等级可由服务器根据用户信息中的属性信息来划分。
当用户信息中的属性信息包括分数信息时,服务器可根据用户分数所属的阈值范围来划分等级,即将分数在同一阈值范围的用户划分为一个等级;当用户信息中的属性信息包括地域信息时,服务器可根据用户的地域信息来划分等级,即将同一地域范围内的用户划分为一个等级。
服务器在接收到客户端发送的应用请求后,首先读取该请求中所包含的第一用户标识,然后从所建立的多个等级队列中获取用于判断与第一用户标识对应的第一用户所属等级的属性信息,根据所述属性信息判断该标识所对应哪个等级,进而获得与该标识所对应的等级队列。
步骤S103、根据获得的等级队列获取与第一用户标识相匹配的第二用户标识。
服务器在获得与第一用户标识相对应的等级队列后,可根据该等级队列获取与第一用户标识相匹配的第二用户标识,进而建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,以使得第一用户与第二用户能够进行应用交互。
在本实施例中,服务器可从获得的等级队列中获取与第一用户标识相匹配的第二用户标识。在本实施的一个优选的实施方式中,预先建立的多个等级队列所存储的用户信息还应包括交互状态信息,用于描述该用户是否正在进行交互,例如用“0”标识该用户未进行交互,用“1”标识该用户正在进行交互,初始状态下交互状态信息为“0”;服务器在获取到与第一用户标识相匹配的第二用户标识后,修改所查找到的等级队列中存储的第二用户的交互状态信息为正在进行交互状态信息,待交互结束后,再将其交互状态信息修改为未进行交互状态信息。
为了能够加快匹配速度,减轻系统负担,优选的,按存储顺序依次检测所查找到的等级队列,将该队列的前M个与第一用户标识不同且对应的交互状态信息为未进行交互状态信息的用户标识作为第二用户标识,其中M为大于等于1的整数。
为了更详细的描述本发明实施例所提出的匹配客户端用户的方法,现以游戏运营商服务器为例作进一步阐述说明。
游戏运营商服务器预先建立多个等级队列,每个等级队列存储有该等级的所有玩家信息,各条玩家信息至少包括玩家标识和用于判断与所述玩家标识对应的玩家所属等级的属性信息,优选的所述属性信息为对战分数。
当游戏运营商服务器接收到游戏客户端发送的包含有第一玩家标识的游戏对战请求时,首先从所建立的多个等级队列中获取与该标识所对应的对战分数,根据所述对战分数判断第一玩家标识对应哪个等级队列,获得与该标识相对应的等级队列;然后从获得的等级队列中获取与第一玩家标识相匹配的第二玩家标识,进而建立第一玩家标识对应的客户端与第二玩家标识对应的客户端之间的连接,以使得第一玩家与第二玩家能够进行对战。
例如,游戏运营商服务器预先建立了3个等级队列,第一等级队列存储对战分数在100-300的玩家信息,第二等级队列存储对战分数在301-700的玩家信息,第三等级队列存储对战分数在701-1000的玩家信息,各条玩家信息包括玩家标识、玩家的对战分数和玩家的对战状态信息;当游戏运营商服务器接收到游戏客户端发送的包含有第一玩家标识的游戏对战请求时,从所建立的3个等级队列中获取与该标识所对应的对战分数450,根据所述对战分数判断第一玩家标识对应第二等级队列,进而获得与该标识相对应的等级队列;然后,获取第二等级队列中首个与第一用户标识不同且对应的对战状态信息为未进行对战状态信息的用户标识作为与第一玩家标识相匹配的第二玩家标识。
本实施例提供的技术方案,通过接收包含有第一用户标识的应用请求,获得第一用户标识所对应的等级队列,根据所获得的等级队列获取与第一用户标识相匹配的第二用户标识,实现了对第一用户的快速匹配,克服了现有技术中因服务器随机存储所有用户信息而使得匹配效率低下、消耗较多系统资源的问题,加快了匹配速度,提高了系统的执行效率。
图2示出了本发明的第二实施例。
图2为本发明第二实施例提供的一种匹配客户端用户的方法的流程示意图。本实施例所述的方法可以通过服务器实现,所述服务器包括但不限于游戏运营商服务器、社交分享类应用服务器。本发明在第一实施例的基础上,对从预设的多个等级队列中获得与第一用户标识相对应的等级队列的步骤作进一步阐述。参见图2,所述方法包括:
步骤S201、接收客户端发送的包含有第一用户标识的应用请求。
本步骤与第一实施例中的步骤S101相同,这里不再赘述。
步骤S202、从预设的关系映射表中获取与第一用户标识相对应的第一用户信息的存储地址。
在本实施例中,服务器预先建立多个等级队列和一个关系映射表。其中,每个等级队列包含有用户信息,用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息,所述属性信息可以是该用户的分数信息、登陆时长信息、地域信息、游戏等级信息等;关系映射表记录有所述多个等级队列中的所有用户标识和与各用户标识相对应的用户信息的存储地址。当服务器接收到客户端发送的包含有第一用户标识的应用请求时,先从所建立的关系映射表中得到第一用户信息的存储地址。
步骤S203、根据存储地址处存储的用户信息中用于判断用户所属等级的属性信息,从预设的多个等级队列中获得与第一用户标识相对应的等级队列。
服务器在获取到第一用户信息的存储地址后,直接到所述存储地址处读取第一用户信息,根据所读取到的用于判断用户所属等级的属性信息判断第一用户标识所对应哪个等级,进而获得与该标识所对应的等级队列。
步骤S204、根据所查找到的等级队列获取与第一用户标识相匹配的第二用户标识。
本步骤与第一实施例中的步骤S103相同,这里不再赘述。
考虑到当服务器所管理的用户数量很大时,例如为千万级时,很难实现在服务器的内存中申请连续的内存来存储所有的用户信息,在本实施例的一个优选的实施方式中,各等级队列的数据结构采用双向链表的数据结构。双向链表的首元素存储有用户信息、后一个元素的存储地址,中间元素存储有用户信息、前一个元素的存储地址和后一个元素的存储地址,尾元素存储有用户信息、前一个元素的存储地址。
为了避免服务器通过逐一扫描方式来获取与第一用户标识相对应的第一用户信息,进一步提高匹配速度,在本实施例的一个优选的实施方式中,关系映射表的数据结构为哈希表数据结构。哈希表的键为预先建立的多个等级队列中各用户标识,哈希表的值为与该哈希表的键相对应的用户信息的存储地址。
在本实施例中,当各等级队列的数据结构采用双向链表的数据结构且关系映射表的数据结构采用哈希表数据结构时,服务器可根据哈希表映射算法计算得到与当前哈希表的键(第一用户标识)所对应的哈希表中的元素位置,然后读取所述元素位置处记录的哈希表的值,得到与第一用户标识相对应的双向链表中元素(第一用户信息)的存储地址。此处通过哈希表映射算法直接找到与第一用户标识相对应的双向链表中元素的存储地址,进而根据找到的存储地址来获取第一用户信息,避免了因通过逐一扫描所存储的各用户信息来查找第一用户信息时所耗费的大量的系统资源的缺点。
本实施例提供的技术方案在具备第一实施例全部的有益技术效果外,在接收到应用请求后先根据关系映射表得到第一用户信息的存储地址,然后直接读取存储地址处第一用户信息中的属性信息来判断第一用户所属等级,进而能够更加快速、精准地得到与第一用户标识相对应的等级队列,根据该队列选取与第一用户标识相匹配的第二用户标识,本实施支持基于千万级的用户信息以及细分的等级数量情况下的匹配。
图3示出了本发明的第三实施例。
图3为本发明第三实施例提供的一种匹配客户端用户的方法的流程示意图。本实施例所述的方法可以通过服务器实现,所述服务器包括但不限于游戏运营商服务器、社交分享类应用服务器。本发明在第一实施例的基础上,对根据所查找到的等级队列获取与第一用户标识相匹配的第二用户标识的步骤作进一步阐述,能够保证一定能够获取到第二用户标识,同时增加了建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接的步骤,进而实现用户之间的应用交互。参见图3,所述方法包括:
步骤S301、接收客户端发送的包含有第一用户标识的应用请求。
本步骤与第一实施例中的步骤S101相同,这里不再赘述。
步骤S302、从预设的多个等级队列中获得与第一用户标识相对应的等级队列。
本步骤与第一实施例中的步骤S102相同,这里不再赘述。
步骤S303、从获得的等级队列中选取M个用户标识作为与第一用户标识相匹配的第二用户标识,其中M为大于等于1的整数。
步骤S304、若从获得的等级队列中只选取到N个用户标识,则再从与获得的等级队列相邻的等级队列中选取L个用户标识,将所选取到的所有用户标识作为与第一用户标识相匹配的第二用户标识,其中N为大于等于0且小于M的整数,L=M-N。
步骤S305、若从与获得的等级队列相邻的等级队列中只选取到S个用户标识,则创建T个与第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为与第一用户标识相匹配的第二用户标识,其中S为大于等于0且小于L的整数,T=L-S。
步骤S306、建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,以使得第一用户与第二用户能够进行交互。
在本实施例中,与所查找到的等级队列相邻的等级队列包括比所查找到的等级队列高一级的等级队列和比所查找到的等级队列低一级的等级队列。例如,所查找的等级队列为第一等级队列时,其相邻的等级队列为第二等级队列;所查找的等级队列为第二等级队列时,其相邻的等级队列为第一等级队列和第三等级队列;所查找的等级队列为最后一个等级队列时,其相邻的等级队列为前一个等级队列。
服务器在获得第一用户标识所对应的等级队列后,先从所获得的等级队列中选取与第一用户标识相匹配的第二用户标识,具体的选取算法可按照存储顺序依次检测所查找到的等级队列,选取前M个与第一用户标识不同且对应的交互状态信息为未进行交互状态信息的用户标识作为第二用户标识;
如果从获得的等级队列中只选取到N(N<M)个用户标识,则从与所获得的等级队列相邻的等级队列中选取L(L=M-N)个用户标识作为第二用户标识,具体的选取算法与从所获得的等级队列中的选取算法相同;
如果从与获得的等级队列相邻的等级队列中只选取到S(S<L)个用户标识,则创建T(T=L-S)个与第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为第二用户标识,例如当M取3(即第二用户标识为3个用户标识),在与第一玩家标识所对应的等级队列及其相邻的等级队列中只选取到2个用户标识时,游戏运营商服务器会创建1个与第一玩家标识所属等级相同的玩家角色,将所创建的玩家角色的标识及所选取到的2个用户标识作为第二用户标识,具体的选取算法与从所获得的等级队列中的选取算法。
服务器在获取到与第一用户标识相匹配的第二用户标识之后,建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,进而实现第一用户与第二用户的应用交互。在本实施例中,优选的,所述连接为长连接,这样能够使得第一用户标识对应的客户端与第二用户标识对应的客户端进行实时通信,克服了因通讯双方每次有数据交互时重新建立一个短连接而引起的系统执行效率降低的问题。
在本实施例的一个优选的实施方式中,当第一用户与第二用户的应用交互结束后,服务器应根据交互结果更新所预设的等级队列。其中,所述更新操作包括但不限于:修改第一用户信息和第二用户信息中的属性信息(例如分数信息、交互状态信息);当交互结果使得第一用户或者第二用户的等级发生了变化时,将该用户信息从其所对应的等级队列中进行删除,并将该用户信息插入其所对应的新的等级队列中。
本实施例提供的技术方案,在具备第一实施例全部的有益技术效果外,还通过当从所获得的等级队列中选取与第一用户标识相匹配的第二用户标识未成功时,从其相邻的等级队列或者创建的虚拟用户中获取,提高了获取第二用户标识的成功率与精准率;通过建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,进而实现第一用户与第二用户之间的应用交互,并根据交互结果更新等级队列,能够准确有效的实现对服务器所存储等级队列的实时维护。
以下为本发明实施例的装置实施例,本发明的方法实施例、装置实施例属于同一构思,在装置实施例中未详尽描述的细节内容,可以参考上述方法实施例。
图4示出了本发明的第四实施例。
图4为本发明第四实施例提供的一种匹配客户端用户的装置的结构示意图。参见图4,所述装置包括:
应用请求接收单元401,用于接收客户端发送的包含有第一用户标识的应用请求;
等级队列获取单元402,用于从预设的多个等级队列中获得与第一用户标识相对应的等级队列;
匹配标识获取单元403,用于根据获得的等级队列获取与第一用户标识相匹配的第二用户标识。
在本实施中,应用请求接收单元401可通过有线或无线通信技术接收客户端发送的应用请求。其中,所述应用请求包含有第一用户标识,该标识为能够唯一表示第一用户的字符串,例如为第一用户在登陆时使用的帐号信息,例如游戏账号、QQ号码或手机号码等。
在本实施例中,等级队列获取单元402还包括数据建立子单元(未示出),可预先建立多个等级队列,每个等级队列包含有用户信息,用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息。其中,所述属性信息可以是该用户的分数信息、登陆时长信息、地域信息、游戏等级信息等。用户所属等级可由服务器根据用户信息中的属性信息来划分。
当用户信息中的属性信息包括分数信息时,数据建立子单元可根据用户分数所属的阈值范围来划分等级,即将分数在同一阈值范围的用户划分为一个等级;当用户信息中的属性信息包括地域信息时,数据建立子单元可根据用户的地域信息来划分等级,即将同一地域范围内的用户划分为一个等级。
在应用请求接收单元401接收到客户端发送的应用请求后,等级队列获取单元402首先读取该请求中所包含的第一用户标识,然后从数据建立子单元所建立的多个等级队列中获取用于判断与第一用户标识对应的第一用户所属等级的属性信息,根据所述属性信息判断该标识所对应哪个等级,进而获得与该标识所对应的等级队列。
在等级队列获取单元402获得与第一用户标识相对应的等级队列后,匹配标识获取单元403可根据该等级队列获取与第一用户标识相匹配的第二用户标识,进而可使得服务器能够建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,以使得第一用户与第二用户进行应用交互。
在本实施例中,匹配标识获取单元403可从获得的等级队列中获取与第一用户标识相匹配的第二用户标识。在本实施的一个优选的实施方式中,等级队列获取单元402中的数据建立子单元预先建立的多个等级队列所存储的用户信息还应包括交互状态信息,用于描述该用户是否正在进行交互,例如用“0”标识该用户未进行交互,用“1”标识该用户正在进行交互,初始状态下交互状态信息为“0”;匹配标识获取单元403在获取到与第一用户标识相匹配的第二用户标识后,修改所查找到的等级队列中存储的第二用户的交互状态信息为正在进行交互状态信息,待交互结束后,再将其交互状态信息修改为未进行交互状态信息。
为了能够加快匹配速度,减轻系统负担,优选的,匹配标识获取单元403按存储顺序依次检测所查找到的等级队列,将该队列的前M个与第一用户标识不同且对应的交互状态信息为未进行交互状态信息的用户标识作为第二用户标识,其中M为大于等于1的整数。
本实施例提供的技术方案,通过接收包含有第一用户标识的应用请求,获得第一用户标识所对应的等级队列,根据所获得的等级队列获取与第一用户标识相匹配的第二用户标识,实现了对第一用户的快速匹配,克服了现有技术中因服务器随机存储所有用户信息而使得匹配效率低下、消耗较多系统资源的问题,加快了匹配速度,提高了系统的执行效率。
图5示出了本发明的第五实施例。
图5为本发明第五实施例提供的一种匹配客户端用户的装置的结构示意图。参见图5,所述装置包括:
应用请求接收单元501,用于接收客户端发送的包含有第一用户标识的应用请求;
等级队列获取单元502,包括:地址获取子单元5021,用于从预设的关系映射表中获取与第一用户标识相对应的第一用户信息的存储地址;队列获取子单元5022,用于根据所述存储地址处存储的用户信息中用于判断用户所属等级的属性信息,从预设的多个等级队列中获得与第一用户标识相对应的等级队列;
匹配标识获取单元503,用于根据所获得的等级队列获取与第一用户标识相匹配的第二用户标识。
在本实施例中,等级队列获取单元502还包括数据建立子单元(未示出),用于预先建立多个等级队列和一个关系映射表。其中,每个等级队列包含有用户信息,用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息,所述属性信息可以是该用户的分数信息、登陆时长信息、地域信息、游戏等级信息等;关系映射表记录有所述多个等级队列中的所有用户标识和与各用户标识相对应的用户信息的存储地址。
当应用请求接收单元501接收到客户端发送的包含有第一用户标识的应用请求时,地址获取子单元5021先从数据建立子单元所建立的关系映射表中得到第一用户信息的存储地址。
在地址获取子单元5021获取到第一用户信息的存储地址后,队列获取子单元5022直接到所述存储地址处读取第一用户信息,根据所读取到的用于判断用户所属等级的属性信息判断第一用户标识所对应哪个等级,进而获得与该标识所对应的等级队列。
考虑到当服务器所管理的用户数量很大时,例如为千万级时,很难实现在服务器的内存中申请连续的内存来存储所有的用户信息,在本实施例的一个优选的实施方式中,各等级队列的数据结构采用双向链表的数据结构。双向链表的首元素存储有用户信息、后一个元素的存储地址,中间元素存储有用户信息、前一个元素的存储地址和后一个元素的存储地址,尾元素存储有用户信息、前一个元素的存储地址。
为了避免服务器通过逐一扫描方式来获取与第一用户标识相对应的第一用户信息,进一步提高匹配速度,在本实施例的一个优选的实施方式中,关系映射表的数据结构为哈希表数据结构。哈希表的键为预先建立的多个等级队列中各用户标识,哈希表的值为与该哈希表的键相对应的用户信息的存储地址。
在本实施例中,当各等级队列的数据结构采用双向链表的数据结构且关系映射表的数据结构采用哈希表数据结构时,地址获取子单元5021可根据哈希表映射算法计算得到与当前哈希表的键(第一用户标识)所对应的哈希表中的元素位置,然后读取所述元素位置处记录的哈希表的值,得到与第一用户标识相对应的双向链表中元素(第一用户信息)的存储地址。此处地址获取子单元5021通过哈希表映射算法直接找到与第一用户标识相对应的双向链表中元素的存储地址,进而队列获取子单元5022根据找到的存储地址来获取第一用户信息,避免了因通过逐一扫描所存储的各用户信息来查找第一用户信息时所耗费的大量的系统资源的缺点。
本实施例提供的技术方案在具备第四实施例全部的有益技术效果外,在接收到应用请求后先根据关系映射表得到第一用户信息的存储地址,然后直接读取存储地址处第一用户信息中的属性信息来判断第一用户所属等级,进而能够更加快速、精准地得到与第一用户标识相对应的等级队列,根据该队列选取与第一用户标识相匹配的第二用户标识,本实施支持基于千万级的用户信息以及细分的等级数量情况下的匹配。
图6示出了本发明的第六实施例。
图6为本发明第六实施例提供的一种匹配客户端用户的装置的结构示意图。参见图6,所述装置包括:
应用请求接收单元601,用于接收客户端发送的包含有第一用户标识的应用请求;
等级队列获取单元602,用于从预设的多个等级队列中获得与第一用户标识相对应的等级队列;
匹配标识获取单元603,包括:
第一获取子单元6031,用于从获得的等级队列中选取M个用户标识作为与第一用户标识相匹配的第二用户标识,其中M为大于等于1的整数;
第二获取子单元6032,用于当从获得的等级队列中只选取到N个用户标识时,再从与获得的等级队列相邻的等级队列中选取L个用户标识,将所选取到的所有用户标识作为与第一用户标识相匹配的第二用户标识,其中N为大于等于0且小于M的整数,L=N-M;
第三获取子单元6033,用于当从与获得的等级队列相邻的等级队列中只选取到S个用户标识时,创建T个与第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为与第一用户标识相匹配的第二用户标识,其中S为大于等于0且小于L的整数,T=L-S;
连接建立单元604,用于在匹配标识获取单元603获取到与第一用户标识相匹配的第二用户标识之后,建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,以使得第一用户与第二用户能够进行应用交互。
在本实施例中,与所查找到的等级队列相邻的等级队列包括比所查找到的等级队列高一级的等级队列和比所查找到的等级队列低一级的等级队列。
在等级队列获取单元602获得第一用户标识所对应的等级队列后,第一获取子单元6031先从所获得的等级队列中选取与第一用户标识相匹配的第二用户标识,具体的选取算法可按照存储顺序依次检测所查找到的等级队列,选取前M个与第一用户标识不同且对应的交互状态信息为未进行交互状态信息的用户标识作为第二用户标识;
如果第一获取子单元6031从获得的等级队列中只选取到N(N<M)个用户标识,则第二获取子单元6032从与所获得的等级队列相邻的等级队列中选取L(L=M-N)个用户标识作为第二用户标识,具体的选取算法与从所获得的等级队列中的选取算法相同;
如果第二获取子单元6032从与获得的等级队列相邻的等级队列中只选取到S(S<L)个用户标识,则第三获取子单元6033创建T(T=L-S)个与第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为第二用户标识。
在匹配标识获取单元603获取到与第一用户标识相匹配的第二用户标识之后,连接建立单元604建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,进而实现第一用户与第二用户的应用交互。在本实施例中,优选的,所述连接为长连接,这样能够使得第一用户标识对应的客户端与第二用户标识对应的客户端进行实时通信,克服了因通讯双方每次有数据交互时重新建立一个短连接而引起的系统执行效率降低的问题。
在本实施例的一个优选的实施方式中,当第一用户与第二用户的应用交互结束后,等级队列获取单元602应根据交互结果更新所预设的等级队列。其中,所述更新操作包括但不限于:修改第一用户信息和第二用户信息中的属性信息(例如分数信息、交互状态信息);当交互结果使得第一用户或者第二用户的等级发生了变化时,将该用户信息从其所对应的等级队列中进行删除,并将该用户信息插入其所对应的新的等级队列中。
本实施例提供的技术方案,在具备第四实施例全部的有益技术效果外,还通过当从所获得的等级队列中选取与第一用户标识相匹配的第二用户标识未成功时,从其相邻的等级队列或者创建的虚拟用户中获取,提高了获取第二用户标识的成功率与精准率;通过建立第一用户标识对应的客户端与第二用户标识对应的客户端之间的连接,进而实现第一用户与第二用户之间的应用交互,并根据交互结果更新等级队列,能够准确有效的实现对服务器所存储等级队列的实时维护。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、计算机只读存储器、光盘或软盘等。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种匹配客户端用户的方法,其特征在于,所述方法包括:
接收客户端发送的包含有第一用户标识的应用请求;
从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识;
其中,所述多个等级队列中的每个等级队列包含用户信息,所述用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息;
所述根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识,包括:从获得的等级队列中选取M个用户标识作为所述第二用户标识,其中M为大于等于1的整数;
若从获得的等级队列中只选取到N个用户标识,则再从与获得的等级队列相邻的等级队列中选取L个用户标识,将所选取到的所有用户标识作为第二用户标识;
其中,所述N为大于等于0且小于M的整数,所述L=M-N。
2.根据权利要求1所述的匹配客户端用户的方法,其特征在于,所述从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列,包括:
从预设的关系映射表中获取与所述第一用户标识相对应的第一用户信息的存储地址;
根据所述存储地址处存储的用户信息中用于判断用户所属等级的属性信息,从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
其中,所述关系映射表记录有所述多个等级队列中的所有用户标识和与各用户标识相对应的用户信息的存储地址。
3.根据权利要求2所述的匹配客户端用户的方法,其特征在于,所述关系映射表的数据结构为哈希表数据结构;
所述等级队列的数据结构为双向链表数据结构。
4.根据权利要求1所述的匹配客户端用户的方法,其特征在于,所述根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识,还包括:若从与获得的等级队列相邻的等级队列中只选取到S个用户标识,则创建T个与所述第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为所述第二用户标识;
其中,所述S为大于等于0且小于L的整数,所述T=L-S。
5.根据权利要求1-4中任一项所述的匹配客户端用户的方法,其特征在于,在所述根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识之后,还包括:建立所述第一用户标识对应的客户端和所述第二用户标识对应的客户端之间的连接,以使得所述第一用户标识对应的第一用户和所述第二用户标识对应的第二用户能够进行应用交互。
6.一种匹配客户端用户的装置,其特征在于,所述装置包括:
应用请求接收单元,用于接收客户端发送的包含有第一用户标识的应用请求;
等级队列获取单元,用于从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
匹配标识获取单元,用于根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识;
其中,所述多个等级队列中的每个等级队列包含用户信息,所述用户信息至少包括用户标识和用于判断与所述用户标识对应的用户所属等级的属性信息;
所述匹配标识获取单元,包括:第一获取子单元,用于从获得的等级队列中选取M个用户标识作为所述第二用户标识,其中M为大于等于1的整数;
第二获取子单元,用于当从获得的等级队列中只选取到N个用户标识时,再从与获得的等级队列相邻的等级队列中选取L个用户标识,将所选取到的所有用户标识作为第二用户标识;
其中,所述N为大于等于0且小于M的整数,所述L=M-N。
7.根据权利要求6所述的匹配客户端用户的装置,其特征在于,所述等级队列获取单元,包括:
地址获取子单元,用于从预设的关系映射表中获取与所述第一用户标识相对应的第一用户信息的存储地址;
队列获取子单元,用于根据所述存储地址处存储的用户信息中用于判断用户所属等级的属性信息,从预设的多个等级队列中获得与所述第一用户标识相对应的等级队列;
其中,所述关系映射表记录有所述多个等级队列中的所有用户标识和与各用户标识相对应的用户信息的存储地址。
8.根据权利要求7所述的匹配客户端用户的装置,其特征在于,所述关系映射表的数据结构为哈希表数据结构;
所述等级队列的数据结构为双向链表数据结构。
9.根据权利要求6所述的匹配客户端用户的装置,其特征在于,所述匹配标识获取单元,还包括:第三获取子单元,用于当从与获得的等级队列相邻的等级队列中只选取到S个用户标识时,创建T个与所述第一用户标识所属等级相同的虚拟用户,将所创建的所有虚拟用户的标识及所选取到的所有用户标识作为所述第二用户标识;
其中,所述S为大于等于0且小于L的整数,所述T=L-S。
10.根据权利要求6-9中任一项所述的匹配客户端用户的装置,其特征在于,所述装置还包括:连接建立单元,用于在所述匹配标识获取单元根据获得的等级队列获取与所述第一用户标识相匹配的第二用户标识之后,建立所述第一用户标识对应的客户端和所述第二用户标识对应的客户端之间的连接,以使得所述第一用户标识对应的第一用户和所述第二用户标识对应的第二用户能够进行应用交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310411026.0A CN104133825B (zh) | 2013-09-10 | 2013-09-10 | 一种匹配客户端用户的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310411026.0A CN104133825B (zh) | 2013-09-10 | 2013-09-10 | 一种匹配客户端用户的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104133825A CN104133825A (zh) | 2014-11-05 |
CN104133825B true CN104133825B (zh) | 2016-05-18 |
Family
ID=51806504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310411026.0A Active CN104133825B (zh) | 2013-09-10 | 2013-09-10 | 一种匹配客户端用户的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104133825B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033487B (zh) * | 2015-03-09 | 2019-02-05 | 腾讯科技(深圳)有限公司 | 用户匹配方法及装置 |
CN107281754B (zh) * | 2017-05-25 | 2018-10-09 | 腾讯科技(深圳)有限公司 | 一种应用标识匹配方法及其设备、存储介质、服务器 |
CN107837532B (zh) * | 2017-11-16 | 2020-11-24 | 腾讯科技(上海)有限公司 | 用户匹配方法、装置、服务器以及存储介质 |
CN108491453A (zh) * | 2018-03-01 | 2018-09-04 | 北京峰趣互联网信息服务有限公司 | 数据匹配方法及系统、服务器、介质 |
CN110225375B (zh) * | 2018-03-01 | 2022-02-22 | 武汉斗鱼网络科技有限公司 | 一种直播间连麦权限检测方法、存储介质、设备及系统 |
CN108404416A (zh) * | 2018-03-29 | 2018-08-17 | 杭州电魂网络科技股份有限公司 | 游戏匹配互动方法、装置及可读存储介质 |
CN110428273A (zh) * | 2018-04-26 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 一种金融信息投放方法、装置、系统和存储介质 |
CN108809703A (zh) * | 2018-05-28 | 2018-11-13 | 深圳远征技术有限公司 | 一种告警通知的推送方法、系统及服务器 |
CN110694278A (zh) * | 2018-07-10 | 2020-01-17 | 在线途游(北京)科技有限公司 | 一种游戏组桌方法、游戏积分计算方法、装置及智能设备 |
CN110781375B (zh) * | 2018-07-31 | 2023-07-07 | 阿里巴巴集团控股有限公司 | 一种用户状态标识确定方法及装置 |
WO2020073324A1 (zh) * | 2018-10-12 | 2020-04-16 | 深圳市欢太科技有限公司 | 游戏用户匹配方法、相关设备以及计算机可读存储介质 |
CN111260171B (zh) * | 2018-12-03 | 2022-05-24 | 北京嘀嘀无限科技发展有限公司 | 目标队列获取方法、装置及设备、计算机可读存储介质 |
CN110038303A (zh) * | 2019-03-14 | 2019-07-23 | 北京达佳互联信息技术有限公司 | Ai对象匹配方法、系统及电子设备和存储介质 |
CN113304469B (zh) * | 2020-02-26 | 2023-07-28 | 上海哔哩哔哩科技有限公司 | 游戏玩家匹配方法、装置、计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1214832A (zh) * | 1996-03-25 | 1999-04-21 | 诺基亚电信公司 | 路由器中待传送数据的优先化 |
CN1422061A (zh) * | 2002-12-27 | 2003-06-04 | 北京邮电大学 | 在多业务多用户业务平台中保证业务服务等级协议的方法 |
CN101291341A (zh) * | 2007-03-09 | 2008-10-22 | 双子星移动科技公司 | 在线环境中自动地用户匹配 |
CN102281207A (zh) * | 2010-06-11 | 2011-12-14 | 百度在线网络技术(北京)有限公司 | 社区网络中确定用户匹配度并撮合用户聊天的方法和设备 |
CN102449619A (zh) * | 2009-06-01 | 2012-05-09 | 美国索尼电脑娱乐有限责任公司 | 在多用户计算机仿真中用于匹配用户的方法和设备 |
-
2013
- 2013-09-10 CN CN201310411026.0A patent/CN104133825B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1214832A (zh) * | 1996-03-25 | 1999-04-21 | 诺基亚电信公司 | 路由器中待传送数据的优先化 |
CN1422061A (zh) * | 2002-12-27 | 2003-06-04 | 北京邮电大学 | 在多业务多用户业务平台中保证业务服务等级协议的方法 |
CN101291341A (zh) * | 2007-03-09 | 2008-10-22 | 双子星移动科技公司 | 在线环境中自动地用户匹配 |
CN102449619A (zh) * | 2009-06-01 | 2012-05-09 | 美国索尼电脑娱乐有限责任公司 | 在多用户计算机仿真中用于匹配用户的方法和设备 |
CN102281207A (zh) * | 2010-06-11 | 2011-12-14 | 百度在线网络技术(北京)有限公司 | 社区网络中确定用户匹配度并撮合用户聊天的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104133825A (zh) | 2014-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104133825B (zh) | 一种匹配客户端用户的方法及装置 | |
US7537523B2 (en) | Dynamic player groups for interest management in multi-character virtual environments | |
US9238174B2 (en) | Method and apparatus for virtual location-based services | |
CN105848743B (zh) | 信息处理装置、信息处理系统、程序、记录介质 | |
JP5462392B1 (ja) | ゲームサーバ、ゲーム制御方法、プログラム、ゲームプログラム記録媒体、及びゲームシステム | |
CN101604358B (zh) | 一种资源更新方法、装置和系统 | |
RU2007138851A (ru) | Система и способ для предоставления отзывов по участникам игры и усовершенствованной организации дружественных матчей | |
WO2014194695A1 (en) | Method and server for pvp team matching in computer games | |
CA2754086A1 (en) | Method and system for transmitting information based on social network | |
JP2005270649A5 (zh) | ||
CN105641934B (zh) | 一种同一账号内玩家角色实时切换的方法及装置 | |
US20210173879A1 (en) | Data flood checking and improved performance of gaming processes | |
CN104334237A (zh) | 游戏控制装置、游戏控制方法、程序、记录介质、游戏系统 | |
JP2020513921A (ja) | ユーザ分析システムおよび方法 | |
JP2013192722A (ja) | ゲームシステム | |
CN110580257A (zh) | 数据共享方法、服务器及介质 | |
US20140357376A1 (en) | Mobile player acquisition for computer-implemented games | |
CN111589110A (zh) | 一种游戏服务器列表的推送方法、装置及存储介质 | |
CN109603162A (zh) | 一种信息处理方法、装置及存储介质 | |
JP2013215410A (ja) | ゲーム装置、ゲーム制御方法、ゲームプログラム | |
JP6147331B2 (ja) | 持続的なパーティルーム | |
CN104253864A (zh) | 一种数据分层存储方法及系统 | |
JP5855038B2 (ja) | サービス提供システム、サービス提供制御方法及びコンピュータプログラム | |
US20170142168A1 (en) | Systems and methods for facilitating the sharing of user-generated content of a virtual space | |
US9149725B2 (en) | Method and server for PVP team matching in computer games |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |