CN111327719B - 业务处理方法、装置、业务服务器及介质 - Google Patents
业务处理方法、装置、业务服务器及介质 Download PDFInfo
- Publication number
- CN111327719B CN111327719B CN202010086238.6A CN202010086238A CN111327719B CN 111327719 B CN111327719 B CN 111327719B CN 202010086238 A CN202010086238 A CN 202010086238A CN 111327719 B CN111327719 B CN 111327719B
- Authority
- CN
- China
- Prior art keywords
- target
- service
- attribute value
- user identifier
- identifier
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3005—Mechanisms for avoiding name conflicts
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种业务处理方法、装置、业务服务器及介质,其中,业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务;业务处理方法包括:接收目标客户端发送的业务请求,该业务请求指示目标客户端请求使用目标用户标识;调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值;在目标服务进程中,根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则将目标用户标识分配给目标客户端进行使用。采用本发明实施例,可以更好地分配用户标识,保证用户标识的唯一性。
Description
技术领域
本发明涉及互联网技术领域,具体涉及计算机技术领域,尤其涉及一种业务处理方法、一种业务处理装置、一种业务服务器及一种计算机存储介质。
背景技术
随着互联网技术的发展,用户可通过客户端向服务器进行用户标识的注册;其中,用户标识是一种用于在互联网中对用户身份进行标识的身份信息;其可以包括但不限于:游戏角色名称、社交网络昵称(如微博名称、微信名称),等等。相应的,服务器可响应注册请求为用户分配相应的用户标识,以便于用户后续可凭借该用户标识在互联网中进行一系列的娱乐操作;如游戏操作、社交操作、信息浏览操作,等等。目前,如何更好地分配用户标识成为了研究热点。
发明内容
本发明实施例提供了一种业务处理方法、装置、业务服务器及介质,可以更好地分配用户标识,保证用户标识的唯一性。
一方面,本发明实施例提供了一种业务处理方法,所述方法由业务服务器执行,所述业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务;所述方法包括:
接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测;
若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
另一方面,本发明实施例提供了一种业务处理装置,所述装置运行于业务服务器中,所述业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务;所述装置包括:
接收单元,用于接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
处理单元,用于调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
所述处理单元,还用于根据所述目标使用属性值对所述目标用户标识进行使用冲突检测;
所述处理单元,还用于若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
再一方面,本发明实施例提供了一种业务服务器,所述业务服务器包括输入接口和输出接口,所述业务服务器还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测;
若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
再一方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如下步骤:
接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测;
若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
本发明实施例中的业务服务器可运行至少两个服务进程,以并发地提供标识分配服务,提高用户标识的分配效率。当接收到目标客户端发送的业务请求时,业务服务器可调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值。由于目标使用属性值可反映目标用户标识的使用情况,因此可在目标服务进程中,先根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则可将目标用户标识分配给目标客户端进行使用,从而保证目标用户标识的唯一性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种业务处理系统的架构示意图;
图1b是本发明实施例提供的一种业务处理系统的架构示意图;
图1c是本发明实施例提供的一种业务处理方案的原理架构图;
图1d是本发明实施例提供的一种已用标识集的示意图;
图2是本发明实施例提供的一种业务处理方法的流程示意图;
图3a是本发明实施例提供的一种原子自增的示意图;
图3b是本发明实施例提供的另一种原子自增的示意图;
图3c是本发明实施例提供的另一种原子自增的示意图;
图3d是本发明实施例提供的另一种原子自增的示意图;
图4是本发明另一实施例提供的一种业务处理方法的流程示意图;
图5a是本发明实施例提供的一种整型数组的示意图;
图5b是本发明实施例提供的一种获取剩余可用标识集的示意图;
图6a是本发明实施例提供的一种目标游戏的游戏架构图;
图6b是本发明实施例提供的一种业务处理方法的应用场景图;
图6c是本发明实施例提供的一种执行标识分配服务的流程图;
图6d是本发明实施例提供的一种业务处理方法的应用场景图;
图7是本发明实施例提供的一种业务处理装置的结构示意图;
图8是本发明实施例提供的一种业务服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提出了一种业务处理方案以及相应的业务处理系统,以更好地为客户端提供标识分配服务;此处的标识分配服务是指为客户端(或使用该客户端的用户)分配用户标识的服务。具体的,业务处理系统可包括:至少一个客户端11、业务服务器12以及远端服务器13。其中,客户端11可以包括但不限于:智能手机、平板电脑、膝上计算机以及台式电脑等终端设备,或者运行于终端设备中的娱乐APP(application,应用程序),端游APP、手游APP、社交APP,等等。此处的端游APP是指运行于PC(Personal Computer,个人计算机)端中的游戏APP,手游是指运行于移动终端中的游戏APP。业务服务器12是指用于执行该业务处理方案,从而为各个客户端提供标识分配服务的服务器,其可以包括但不限于:游戏服务器、社交应用服务器、Web服务器、数据处理服务器,等等。远端服务器13是指用于存储已用标识集的服务器;具体的,在存储已用标识集时,可通过存储系统的存储组件将已用标识集存储在远端服务器13中的存储系统中,例如Tcaplus(一种分布式存储系统)中。此处的已用标识集是指包含已用的用户标识的集合,其可包括以下至少一项:已用的系统用户标识以及已用的自定义用户标识。其中,所谓的系统用户标识是指业务服务器所提供的用户标识,自定义用户标识是指用户通过客户端自己创建的用户标识。
在物理部署上述业务处理系统时,可将该业务服务器12部署为一台独立的服务器;在此情况下,业务处理系统的架构图可参见图1a所示。或者,也可将该业务服务器12部署为由多台服务器所构成的集群设备;在此情况下,业务处理系统的架构图可参见图1b所示。即在此情况下,业务服务器可包括多台服务器;每台服务器可称为该集群设备(业务服务器)中的一个节点,且每台服务器可提供相同的服务,从而提升整个业务服务器的并发处理能力。应理解的是,本发明实施例对业务处理系统的具体结构不作限定。例如,在其他实施例中,也可将已用标识集存储在业务服务器12的本地空间中;此情况下,业务处理系统也可不包括远端服务器13。为便于阐述,除非特别指明,后续均以业务处理系统包含远端服务器13,且已用标识集存储于远端服务器为例进行说明。
参见图1c所示,该业务处理方案的具体原理如下:业务服务器12中可启动并运行至少两个服务进程,此处的服务进程是指可用于提供无状态化的标识分配服务的进程。其中,无状态化的标识分配服务是指服务进程的内存中不保存状态数据,根据业务请求中携带的信息确定服务结果的标识分配服务;进程是指服务器中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配和调度的基本单位。上述所提及的状态数据可包括但不限于:业务上下文信息、已用标识集,等等。由于业务服务器内可多实例部署多个服务进程,每个服务进程均可用于提供标识分配服务。那么,多个服务进程之间可能存在标识争用问题;例如,当业务服务器同时接收到两个或两个以上的客户端发送的关于使用同一个用户标识的业务请求时,则可并发地调度两个或两个以上的服务进程同时为不同的客户端提供标识分配服务,一个服务进程对应一个客户端,此时便存在两个或两个以上的服务进程同时争用一个用户标识的问题。为了保证标识分配操作的原子性,所谓的原子性是指一个服务进程所涉及的标识分配操作要么全部成功,要么全部失败的特性;本发明实施例还可在已用标识集中,为个已用的用户标识新增一个使用属性字段(或称为版本号字段)。参见图1d所示,使用属性字段中可记录相应的用户标识的使用属性值(或称为版本号);例如,已用的系统用户标识a对应的使用属性字段可记录已用的系统用户标识a的使用属性值为1,已用的系统用户标识b对应的使用属性字段可记录已用的系统用户标识b的使用属性值为1,等等。其中,使用属性值可用于反映用户标识的使用情况;该使用情况可包括但不限于:用户标识是否被使用的情况,用户标识被使用的次数的情况,等等。
在具体应用中,当检测到任一客户端存在关于目标用户标识的使用需求时,业务服务器12可调度任一服务进程为该任一客户端提供标识分配服务。具体的,被调度的服务进程可先在存储系统中所存储的已用标识集中,对该用户标识所对应的使用属性字段中所记录的使用属性值进行原子自增或原子自减;然后,可根据原子自增或原子自减后的使用属性值来检测该目标用户标识是否已经被其他客户端注册使用。若检测到该目标用户标识未被其他客户端使用,则可将该目标用户标识分配给该任一客户端使用;否则,就禁止该任一客户端使用该目标用户标识。本发明实施例所提出的业务处理方案,通过原子自增或原子自减后所得到的目标使用属性值检测目标用户标识是否已被注册使用,并根据检测结果确定是否分配目标用户标识,可有效保证目标用户标识的唯一性。并且,采用独立于服务进程的存储系统来存储已用标识集,可保证服务进程在出现运行故障(如宕机)时,不会造成已用标识集的数据丢失;从而可有效避免因丢失已用标识集而无法检测目标用户标识是否已被注册使用,导致出现后续可能将目标用户标识分配给不同的客户端的情况。由此可见,通过服务进程所提供的无状态化的标识分配服务,可进一步保证目标用户标识的唯一性。
基于上述的描述,本发明实施例提出一种业务处理方法,该业务处理方法可以由上述所提及的业务服务器执行。请参见图2,该业务处理方法可包括以下步骤S201-S204:
S201,接收目标客户端发送的业务请求。
业务服务器可与一个或多个客户端保持通信连接,而目标客户端则可以是与业务服务器保持通信连接的任一客户端。当目标客户端存在使用目标用户标识的需求时,可向业务服务器发送业务请求;该业务请求中可携带目标用户标识,且该业务请求可指示业务服务器:目标客户端请求使用目标用户标识。相应的,业务服务器可接收目标客户端发送的业务请求。业务服务器还可解析该业务请求,得到目标用户标识。
其中,目标用户标识是指一种用于在互联网中对使用目标客户端的目标用户的用户身份进行标识的身份信息;其可包括但不限于:游戏角色名称、社交网络昵称,等等。所谓的游戏角色名称是指目标用户在网络游戏中所使用的角色名称,社交网络昵称是指目标用户在网络社交中所使用的名称,如微信名称、微博名称,等等。在本发明实施例中,业务请求所携带的目标用户标识可以是由目标用户通过目标客户端所创建的自定义用户标识(即自创用户标识);也可以是由目标用户从业务服务器所提供的系统用户标识中所选择的系统用户标识。
S202,调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值;该目标使用属性值可用于反映目标用户标识的使用情况。
业务服务器可响应该业务请求,从至少两个服务进程中任意选取一个服务进程作为目标服务进程,并调度该目标服务进程为目标客户端提供目标用户标识的标识分配操作。由于可能存在该目标用户标识已被其他客户端使用的情况,或者存在其他服务进程和目标服务进程同时争用目标用户标识,且该目标用户标识被其他服务进程抢先分配给其他客户端使用的情况。因此,业务服务器在调度目标服务进程为目标客户端提供目标用户标识的标识分配操作时,可先调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值;以便于后续可根据目标用户属性值确定目标用户标识的使用情况。
在步骤S202的一种具体实现中,业务服务器可调度目标服务进程在已用标识集中,对目标用户标识的当前使用属性值进行原子自增,得到目标用户标识的目标使用属性值。由前述可知,已用标识集可存储于业务服务器的本地空间中,也可存储于远端服务器的存储系统中。那么,当已用标识集存储于业务服务器的本地空间中时,业务服务器可直接调度目标服务进程在本地空间所存储的已用标识集中,对目标用户标识的当前使用属性值进行原子自增,得到目标用户标识的目标使用属性值。当已用标识集存储于远端服务器中,业务服务器可先调度目标服务进程生成携带目标用户标识的自增请求,并向远端服务器发送自增请求。具体的,可在目标服务进程中,调用远端服务器中的存储系统的访问接口(如Tcaplus的原子自增接口)向远端服务器发送自增请求,以请求远端服务器在已用标识集中对目标用户标识的当前使用属性值进行原子自增,并返回原子自增所得到的目标使用属性值。相应的,远端服务器在接收到业务服务器通过目标服务进程发送的自增请求后,可在已用标识集中对目标用户标识的当前使用属性值进行原子自增,并将原子自增所得到的目标使用属性值返回给业务服务器;而业务服务器则可接收远端服务器返回的目标使用属性值。为便于阐述,后续均以由远端服务器执行原子自增的操作为例进行说明。
其中,原子自增包括:若已用标识集中包括目标用户标识,则可获取目标用户标识的历史使用属性值作为当前使用属性值,并对当前使用属性值进行加一处理。若已用标识集中不包括目标用户标识,则可先在已用标识集中添加目标用户标识,并为目标用户标识新增一个第一数值的使用属性值作为当前使用属性值,以及对当前使用属性值进行加一处理。其中,第一数值可根据经验值或者业务需求设置,例如可将第一数值设置为0。应理解的是,在已用标识集不包括目标用户标识的情况下,若存在服务器并发地调度目标服务进程和其他服务进程同时向远端服务器发送自增请求,则远端服务器可根据排序机制将各个自增请求依次添加至队列中,并按照自增请求在队列中的排列顺序依序响应各个自增请求,在已用标识集中对目标用户标识的当前使用属性值进行原子自增。其中,排序机制可包括:按照接收到自增请求的时间先后顺序,优先将先接收到的自增请求添加至队列中;对于同时接收到的多个自增请求,则可按照随机地将同时接收的各个自增请求依次添加至队列中。
下面,以由远端服务器执行原子自增的操作为例进行举例说明。设已用标识集中包括目标用户标识,且目标用户标识为已用的用户标识a:由于已用的用户标识a的历史使用属性值为1,因此目标用户标识的当前使用属性值便为1;对其进行加一处理,可得到目标用户标识的目标使用属性值为1+1=2,如图3a所示。或者,设目标用户标识为用户标识q,且已用标识集中不包括目标用户标识:若业务服务器只调度了目标服务进程向远端服务器发送自增请求,即不存在其他服务进程和目标服务进程同时争用目标用户标识;则远端服务器可直接响应业务服务器通过目标服务进程发送的自增请求,在已用标识集中添加用户标识q以及为该用户标识q添加第一数值(0)作为当前使用属性值;并对0进行加一处理,得到目标用户标识的目标使用属性值为0+1=1,如图3b所示。若业务服务器并发地调度了目标服务进程和其他服务进程同时向远端服务器发送自增请求,即存在其他服务进程和目标服务进程同时争用目标用户标识,则远端服务器可将目标服务进程的自增请求和其他服务进程的自增请求添加至队列中。若目标服务进程的自增请求排列在其他服务进程的自增请求之前,则远端服务器可先响应该目标服务进程的自增请求,在已用标识集中添加用户标识q以及为该用户标识q添加第一数值(0)作为当前使用属性值;并对0进行加一处理,得到目标用户标识的目标使用属性值为0+1=1。然后再响应其他服务进程的自增请求,此时已用标识集中已包括目标用户标识,且目标用户标识的当前使用属性值从0更新为1,那么响应其他服务进程的自增请求而进行原子自增所得到的目标使用属性值便为1+1=2。由此可见,此情况下的目标服务进程所接收到的远端服务器返回的目标使用属性值为1,而其他服务进程所接收到的远端服务器返回的的目标使用属性值为2,如图3c所示。同理,若目标服务进程的自增请求排列在其他服务进程的自增请求之后,则远端服务器可先响应其他服务进程的自增请求进行原子自增,然后再响应目标服务进程的自增请求进行原子自增处理;此情况下的其他服务进程所接收到的远端服务器返回的目标使用属性值为1,而目标服务进程所接收到的远端服务器返回的目标使用属性值为2,如图3d所示。
在步骤S202的一种具体实现中,业务服务器可调度目标服务进程在已用标识集中,对目标用户标识的当前使用属性值进行原子自减,得到目标用户标识的目标使用属性值。由前述可知,已用标识集可存储于业务服务器的本地空间中,也可存储于远端服务器的存储系统中。那么,当已用标识集存储于业务服务器的本地空间中时,业务服务器可直接调度目标服务进程在本地空间所存储的已用标识集中,对目标用户标识的当前使用属性值进行原子自减,得到目标用户标识的目标使用属性值。当已用标识集存储于远端服务器中,业务服务器可先调度目标服务进程生成携带目标用户标识的自减请求,并向远端服务器发送自减请求,以请求远端服务器在已用标识集中对目标用户标识的当前使用属性值进行原子自减,并返回原子自减所得到的目标使用属性值。相应的,远端服务器在接收到业务服务器通过目标服务进程发送的自减请求后,可在已用标识集中对目标用户标识的当前使用属性值进行原子自减,并将原子自减所得到的目标使用属性值返回给业务服务器;而业务服务器则可接收远端服务器返回的目标使用属性值。为便于阐述,后续均以由远端服务器执行原子自减的操作为例进行说明。
其中,原子自减包括:若已用标识集中包括目标用户标识,则可获取目标用户标识的历史使用属性值作为当前使用属性值,并对当前使用属性值进行减一处理。若已用标识集中不包括目标用户标识,则可先在已用标识集中添加目标用户标识,并为目标用户标识新增一个第二数值的使用属性值作为当前使用属性值,以及对当前使用属性值进行减一处理。其中,第一数值可根据经验值或者业务需求设置,例如可将第一数值设置为1。应理解的是,由于原子自减和原子自增的具体实施方式类似,因此原子自减的具体实现可参见上述原子自增的相关描述,本发明实施例对原子自减的具体实现便不再展开地作进一步阐述。
S203,在目标服务进程中,根据目标使用属性值对目标用户标识的使用进行冲突检测。
在具体实施过程中,业务服务器可在目标服务进程中,将目标使用属性值和目标数值进行比较。在一种实施方式中,目标数值可根据经验值设置,例如可设置目标数值为1。再一种实施方式中,若目标属性值是通过原子自增所得到的,则目标数值可根据上述原子自增的相关内容中所提及的第一数值设置,目标数值可等于第一数值加1;例如,若第一数值为0,则可设置目标数值为1。再一种实施方式中,若目标属性值是通过原子自减所得到的,则目标数值可根据上述原子自减的相关内容中所提及的第二数值设置,目标数值可等于第二数值减1;例如,若第二数值为1,则可设置目标数值为0。若目标使用属性值等于目标数值,则可表明目标用户标识为未被使用的用户标识;此情况下,可确定检测到目标用户标识未存在使用冲突。若目标使用属性值大于目标数值,则可表明目标用户标识为已被使用的用户标识;此情况下,可确定检测到目标用户标识存在使用冲突。
本发明实施例通过步骤S202-S203对目标用户标识的当前使用属性值进行原子性操作,并根据目标服务进程所接收到的原子性操作后的目标使用属性值对目标用户标识的使用进行冲突检测,从而可根据检测结果确定是否将目标用户标识分配给目标客户端使用。可使得即使存在其他服务进程和目标服务进程同时争用目标用户标识的情况时,也可保证只有一个服务进程可成功抢占该目标用户标识的分配权。具体的,若目标服务进程的排列顺序在其他服务进程之前,则目标服务进程接收到的目标使用属性值等于目标数值;此时目标服务进程可成功抢占目标用户标识的分配权,可将目标用户标识分配给目标客户端。若目标服务进程的排列顺序在其他服务进程之后,则其他服务进程接收到的目标使用属性值等于目标数值,而目标服务进程接收到的目标使用属性值则大于目标数值;此时其他服务进程可成功抢占目标用户标识的分配权,可将目标用户标识分配给其他客户端。由此可见,本发明实施例通过步骤S202-S203,可保证在多个服务进程同时争用一个目标用户标识时,目标用户标识也只会被分配给一个客户端,可有效保证目标用户标识的唯一性。
S204,若检测到目标用户标识未存在使用冲突,则将目标用户标识分配给目标客户端进行使用。
由前述可知,若检测到目标用户标识未存在使用冲突,则表明目标用户标识未被其他客户端使用,或者目标服务进程成功抢占了目标用户标识的分配权。因此,可将目标用户标识分配给目标客户端进行使用。在一种实施方式中,业务服务器还根据目标用户标识生成成功使用通知,并将该成功使用通知下发至目标客户端,以通知目标客户端可使用该目标用户标识。再一种实施方式中,若检测到目标用户标识存在使用冲突,则表明目标用户标识已被其他客户端使用,或者目标服务进程未成功抢占目标用户标识的分配权。因此,可生成错误提示,并将该错误提示反馈至目标客户端。其中,该错误提示可用于提示目标用户标识存在冲突错误。
本发明实施例中的业务服务器可运行至少两个服务进程,以并发地提供标识分配服务,提高用户标识的分配效率。当接收到目标客户端发送的业务请求时,业务服务器可调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值。由于目标使用属性值可反映目标用户标识的使用情况,因此可在目标服务进程中,先根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则可将目标用户标识分配给目标客户端进行使用,从而保证目标用户标识的唯一性。
请参见图4,是本发明实施例提供的另一种业务处理方法的流程示意图。该业务处理方法可以由上述所提及的业务服务器执行。在本发明实施例中,主要以已用标识集存储于远端服务器中为例进行说明;当已用标识集存储于业务服务器的本地空间时,各个步骤的具体实施方式可参见本发明实施例。请参见图4,该业务处理方法可包括以下步骤S401-S409:
S401,在启动目标服务进程的过程中,调度目标服务进程从业务服务器的本地空间中读取系统标识集。
在本发明实施例中,业务服务器内可启动并运行至少两个服务进程,每个服务进程均可用于提供标识分配服务和标识推荐服务。所谓的标识分配服务是指为客户端(或使用该客户端的用户)分配用户标识的服务,标识推荐服务是指向客户端(或使用该客户端的用户)推荐至少一个未被使用的系统用户标识的服务。由于每个服务进程对应的内存中均不存储已用标识集,因此在启动每个服务进程的过程中,均可调度每个服务进程获取剩余可用标识集,并将剩余可用标识集存储在各个服务进程对应的内存中,以便于后续提供标识推荐服务。由于每个服务进程存储剩余可用标识集的具体实施方式相同,因此本发明实施例以目标服务进程存储剩余可用标识集为例,对各服务进程存储剩余可用标识集的具体实施方式进行阐述。其中,目标服务进程为任一服务进程;其相应的具体实施方式可参见步骤S401-S403的相关描述。
在具体实现中,业务服务器可先通过步骤S401在启动目标服务进程的过程中,调度目标服务进程从业务服务器的本地空间中读取系统标识集。在一种实施方式中,系统标识集中可包括本地空间中的所有系统用户标识。在此实施方式下,步骤S401的具体实施方式可以是:在启动目标服务进程的过程中,直接调度目标服务进程从业务服务器的本地空间中所存储的标识配置表中读取所有系统用户标识,并将读取到的所有系统用户标识添加至系统标识集中。再一种实施方式中,也可对各个服务进程进行标识分段;即将所有系统用户标识划分成多个标识范围的系统用户标识,每个服务进程可负责不同标识范围的系统用户标识。那么,调度目标服务进程所读取到的系统标识集包括与目标服务进程对应的系统用户标识。在此实施方式下,步骤S401的具体实施方式可以是:在启动目标服务进程的过程中,获取目标服务进程所对应的目标标识范围;调度目标服务进程从业务服务器的本地空间中所存储的标识配置表中读取属于目标标识范围内的系统用户标识,并将读取到的系统用户标识添加至系统标识集中。采用表上分段的方式可保证各个服务进程所负责的系统用户标识是不相同的,从而可初步保证各个服务进程向客户端所推荐的系统用户标识是不重复的。
S402,将系统标识集存储至目标服务进程对应的内存中。
S403,从远端服务器处获取已用的系统用户标识,并从系统标识集中剔除已用的系统用户标识,得到剩余可用标识集。
在一种实施方式中,业务服务器可在目标服务进程中生成标识同步请求,标识同步请求用于请求远端服务器同步已用的系统用户标识;然后,可将该标识同步请求发送至远端服务器。由前述可知,已用标识集中可包括已用的系统用户标识和已用的自定义用户标识;那么远端服务器可响应该标识同步请求,从已用标识集中获取已用的系统用户标识,并将该已用的系统用户标识返回给业务服务器。相应的,业务服务器可以接收远端服务器返回的已用的系统用户标识。
再一种实施方式中,为了降低业务服务器和远端服务器之间同步的数据量;本发明实施例还可为每个用户标识增加一个标识编号(即标识ID),以便于后续可从远端服务器处直接同步关于已用的系统用户标识的标识编号或者编号位图(Mask)。在一种具体实现中,每个标识编号可直接采用阿拉伯数字进行表示;在此具体实现中,业务服务器可从远端服务器处同步已用的系统用户标识的标识编号。再一种具体实现中,每个标识编号可采用M字节的整型数组中的一个比特(位)进行表示;在此具体实现中,业务服务器可从远端服务器处同步已用的系统用户标识的编号位图。其中,比特中的数值可表示该标识编号所对应的用户标识是否已被使用;具体的,若比特中的数值为已用标志值(如1),则表明该比特所表示的标识编号对应的用户标识已被使用;若比特中的数值为未用标志值(如0),则表明该比特所表示的标识编号对应的用户标识未被使用。在采用整型数组中的比特表示标识编号时,可设整型数组可包括K个元素,每个元素包括8M个比特;那么,每个标识编号可表示为:k*8N+m;其中,K和M均为正整数,k∈[1,K],m∈[1,8M]。应理解的是,K和M的取值均可根据经验值或者业务需求设置,例如可设置M=4或M=8;为便于阐述,后续以M=8为例进行说明,此时的整型数组中的每个元素可包括64个比特,其具体结构可参见图5a所示。
在此实施方式下,步骤S403的具体实施方式可以一并参见图5b所示:业务服务器可先在目标服务进程中生成编号位图请求。其次,可向远端服务器发送编号位图请求,以请求远端服务器返回关于已用的系统用户标识的编号位图。其中,编号位图(Mask)是由远端服务器将已用的系统用户标识的标识编号在整型数组中所对应的比特的数值设置为已用标志值生成的。以已用标志值为1为例,设存在已用的系统用户标识a,其标识编号为1;那么,根据已用的系统用户标识a的标识编号可计算得到其在整型数组中所对应的比特为第1个元素中的第1个比特,因此可将整型数组中的第1个元素中的第1个比特的数值设置为1。同理,可采用上述方法在整型数组中,将各个已用的系统用户标识的标识编号在整型数组中所对应的比特的数值均设置为已用标志值,从而得到编号位图。远端服务器在接收到编号位图请求后,可响应该编号位图请求,将编号位图返回给业务服务器;相应的,业务服务器可接收远端服务器处返回的编号位图。然后,业务服务器可从编号位图中查找比特的数值为已用标志值的目标比特,并将目标比特所表示的标识编号所对应的系统用户标识作为已用的系统用户标识。经研究表明,相较于同步已用的用户标识的方式,采用同步编号位图的方式可将业务服务器和远端服务器之间同步的数据量大小从6GB降低至12.5MB,可有效减少目标服务进程在启动过程中所需的数据准备时间,提高进程启动效率。
本发明实施例通过步骤S401-S403实现将剩余可用标识集存储至服务进程对应的内存中,可具有如下有益效果:当服务进程出现宕机的情况,需再次重启服务进程时,只需从业务服务器的本地空间中重新读取系统标识集至内存中,同时与远端服务器建立连接以从远端服务器处同步已用的系统用户标识,便可根据系统标识集合和已用的系统用户标识得到剩余可用标识集;无需考虑数据的一致性和数据丢失问题,可有效简化进程重启的操作。并且,在高并发场景下,可以灵活地横向部署多个服务进程,且多个服务进程之间可以保持数据一致性和数据透明性。
S404,响应目标客户端发送的标识获取请求,调度目标服务进程从对应的内存中获取剩余可用标识集。
S405,从剩余可用标识集中选取任一个系统用户标识作为目标用户标识,并将目标用户标识下发至目标客户端。
在步骤S404-S405中,目标客户端若想要请求业务服务器推荐系统用户标识,则可向业务服务器发送标识获取请求。相应的,业务服务器可响应目标客户端发送的标识获取请求,调度目标服务进程从对应的内存中获取剩余可用标识集;其中,剩余可用标识集中可包括至少一个未被使用的系统用户标识。然后,业务服务器可从剩余可用标识集中选取任一个系统用户标识作为目标用户标识,并将目标用户标识下发至目标客户端,以将目标用户标识推荐给目标客户端。需要说明的是,若目标客户端不想要使用该目标用户标识,则可重新发送一个标识获取请求至业务服务器;而业务服务器则可响应该新的标识获取请求,再次执行步骤S404-S405。若目标客户端想要使用该目标用户标识,则可向业务服务器发送业务请求;该业务请求指示业务服务器:目标客户端请求使用目标用户标识。而业务服务器则可通过步骤S406接收该业务请求,并执行步骤S407-S409。
S406,接收目标客户端发送的业务请求。
S407,调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值;目标使用属性值用于反映目标用户标识的使用情况。
S408,在目标服务进程中,根据目标使用属性值对目标用户标识的使用进行冲突检测。
S409,若检测到目标用户标识未存在使用冲突,则将目标用户标识分配给目标客户端进行使用。
本发明实施例中的业务服务器可运行至少两个服务进程,以并发地提供标识分配服务,提高用户标识的分配效率。当接收到目标客户端发送的业务请求时,业务服务器可调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值。由于目标使用属性值可反映目标用户标识的使用情况,因此可在目标服务进程中,先根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则可将目标用户标识分配给目标客户端进行使用,从而保证目标用户标识的唯一性。
在实际应用中,本发明实施例可将上述所提及的业务处理方法运用到不同的应用场景中,如针对目标游戏的角色取名场景中、针对社交应用的昵称取名场景中,等等。此处的目标游戏是指涉及角色名称分配的游戏,其可以包括但不限于:MMORPG(MultiplayerOnline Role-PlayingGame,大型多人在线角色扮演游戏)、CSC(一种小型的由多人参加的角色扮演游戏),等等。其中,MMORPG为网络游戏的一种,是电子角色扮演游戏按电子游戏人数分类出来的一种网络游戏;在所有的MMORPG中,玩家用户都可扮演一个或多个虚拟角色,并控制该角色在游戏的虚拟世界中的活动和行为。下面以将该业务处理方法运用到针对目标游戏的角色取名场景中,目标用户标识为目标角色名称为例,对该业务处理方法的具体应用过程进行阐述:
首先,本发明实施例针对目标游戏可搭建一种如图6a所示的全区全服的游戏架构;所谓的全区全服是指:采用至少两个服务进程统一为目标游戏所涉及的多个游戏分区内的客户端提供标识分配服务。通过设计全区全服的游戏架构,可使得各个服务进程中的数据不再相互隔离,保证全区全服内的各个角色名称具有唯一性。这样可在目标游戏的后续运营中,在因不同游戏分区内存在相同的角色名称而导致在响应合服需求执行合服操作时,无需对冲突的角色名称进行特殊修饰处理(如在重复的角色名称后增加数字以区分的处理),提高游戏玩家的用户体验。其中,合服操作是指让不同游戏分区内的玩家用户在同一个游戏分区内进行游戏的操作。本发明实施例采用全区全服的游戏架构,可方便日后运营的合服需求。
其次,在针对目标游戏的角色取名场景中,可采用游戏服务器作为业务服务器,即业务服务器可为游戏服务器。业务服务器(即游戏服务器)中可运行至少两个服务进程,且每个服务进程均用于为各个游戏分区内的客户端提供标识分配服务。由于面对开服时高并发的角色名称创建请求,标识分配服务的并发能力的高低,直接影响玩家用户进入目标游戏的等待时间。因此,水平扩容、多实例部署取名服务是重要需求。基于此,本发明实施例可将各个服务进程所提供的标识分配服务设置为无状态化的服务。为实现无状态化的服务,业务服务器中的各个服务进程可将数据进行动静分离,将数据分为两部分:系统标识集和已用标识集。其中,系统标识集可为无状态化数据,其可存储于服务进程的内存中;已用标识集为频繁变换的数据,其可存储于远端服务器中。在各个服务进程的启动过程中,可从远端服务器处获取已用的系统用户标识,并在系统标识集中剔除已用的系统服务标识,得到剩余标识集。无状态之后,在高并发的场景中新增服务进程时,无需从现有的服务进程中同步数据,避免扩容时影响正在运行的服务进程的性能,从而提高水平扩容和多实例部署服务进程的灵活性和隔离性。由此可见,本发明实施例实现无状态化的服务的方式,具有高可用、弹性扩容和数据安全的特性。
在本发明实施例中,可设剩余标识集包含10000个姓,10000个名,那么组合可得到共1亿个系统用户标识供玩家用户进行随机选择。当玩家用户A需要创建角色名称时,可通过目标客户端向业务服务器发送标识获取请求;此处的目标客户端可为任一游戏分区内的任一客户端。例如,玩家用户A可通过点击用户界面中的“创建角色”的角色创建按钮,以触发目标客户端向业务服务器发送标识获取请求,如图6b所示。业务服务器在接收到该标识获取请求后,可按照图6c所示的标识分配服务的流程,先调度目标服务进程从剩余标识集随机选取一个角色名称作为目标用户标识,并将该目标用户标识返回给目标客户端;相应的,目标客户端在接收到目标用户标识后,可将目标用户标识显示在用户界面中,如图6d所示。若该目标用户标识是玩家用户A所心仪的角色名称,则玩家用户A可通过目标客户端向业务服务器发送业务请求,以请求使用该目标用户标识;例如,玩家用户A可通过点击用户界面中的“使用”的确认按钮,以触发目标客户端向业务服务器发送业务请求,如图6d所示。若该目标用户标识不是玩家用户A所心仪的角色名称,则玩家用户A可通过目标客户端再次向业务服务器发送标识获取请求,以请求业务服务器重新返回一个目标用户标识,直至选择到心仪的角色名称并通过目标客户端向业务服务器发送业务请求。或者,玩家用户A也可自己创建一个目标用户标识,并通过目标客户端向业务服务器发送携带自己创建的目标用户标识的业务请求。
由于可能存在有多个玩家用户同时申请使用该目标用户标识的情况,因此业务服务器在接收到该业务请求后,可调度目标服务进程在已用标识集中再次校验该目标用户标识是否被其他玩家用户使用。具体的,业务服务器可先调度目标服务进程生成携带目标用户标识的自增请求,并向远端服务器发送自增请求,以请求远端服务器在已用标识集中对目标用户标识的当前使用属性值进行原子自增,并返回原子自增所得到的目标使用属性值。其次,可接收远端服务器返回的目标使用属性值。然后,可在目标服务进程中,将目标使用属性值和目标数值(例如“1”)进行比较。若目标使用属性值等于目标数值,则可确定目标用户标识为未使用过的角色名称;若目标使用属性值大于目标数值,则可确定目标用户标识为已被使用过的角色名称。业务服务器在确定目标用户标识未被其他玩家用户使用的情况下,可调度目标服务进程将该目标用户标识分配给目标客户端,以便于玩家用户A使用该目标用户标识。分配成功后,还可将目标用户标识添加至已用标识集中。通过原子自增的原子性操作,可有效保证在多个服务进程同时向远端服务器发送业务请求时,也只会有一个服务进程抢占到目标用户标识分分配权,从而保证只会将目标用户标识分配给一个客户端,确保了目标用户标识的唯一性。
基于上述业务处理方法实施例的描述,本发明实施例还公开了一种业务处理装置,所述业务处理装置可以是运行于业务服务器中的一个计算机程序(包括程序代码)。其中,该业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务。该业务处理装置可以执行图2或图4所示的方法。请参见图7,所述业务处理装置可以运行如下单元:
接收单元701,用于接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
处理单元702,用于调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
所述处理单元702,还用于根据所述目标使用属性值对所述目标用户标识进行使用冲突检测;
所述处理单元702,还用于若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
在一种实施方式中,处理单元702在用于调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值时,具体用于:调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值;或者,调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值。
再一种实施方式中,所述已用标识集存储于远端服务器中;相应的,处理单元702在用于调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值时,具体用于:调度目标服务进程生成携带所述目标用户标识的自增请求,并向所述远端服务器发送自增请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自增,并返回原子自增所得到的目标使用属性值;接收所述远端服务器返回的所述目标使用属性值。
再一种实施方式中,所述原子自增包括:若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行加一处理;若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第一数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行加一处理。
再一种实施方式中,所述已用标识集存储于远端服务器中;相应的,处理单元702在用于调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值时,具体用于:调度目标服务进程生成携带所述目标用户标识的自减请求,并向所述远端服务器发送自减请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自减,并返回原子自减所得到的目标使用属性值;接收所述远端服务器返回的所述目标使用属性值。
再一种实施方式中,所述原子自减包括:若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行减一处理;若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第二数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行减一处理。
再一种实施方式中,处理单元702在用于在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测时,具体用于:在所述目标服务进程中,将所述目标使用属性值和目标数值进行比较;若所述目标使用属性值等于所述目标数值,则确定检测到所述目标用户标识未存在使用冲突;若所述目标使用属性值大于所述目标数值,则确定检测到所述目标用户标识存在使用冲突。
再一种实施方式中,处理单元702还可用于:若检测到所述目标用户标识存在使用冲突,则生成错误提示,所述错误提示用于提示所述目标用户标识存在冲突错误;将所述错误提示反馈至所述目标客户端。
再一种实施方式中,处理单元702还可用于:响应所述目标客户端发送的标识获取请求,调度所述目标服务进程从对应的内存中获取剩余可用标识集;所述剩余可用标识集中包括所述至少一个未被使用的系统用户标识;从所述剩余可用标识集中选取任一个系统用户标识作为目标用户标识,并将所述目标用户标识下发至所述目标客户端。
再一种实施方式中,所述已用标识集存储于远端服务器中,且所述已用标识集中包括已用的系统用户标识和已用的自定义用户标识;相应的,处理单元702还可用于:在启动所述目标服务进程的过程中,调度所述目标服务进程从所述业务服务器的本地空间中读取系统标识集;所述系统标识集中包括所述本地空间中的所有系统用户标识,或者与所述目标服务进程对应的系统用户标识;将所述系统标识集存储至所述目标服务进程对应的内存中;从所述远端服务器处获取所述已用的系统用户标识,并从所述系统标识集中剔除所述已用的系统用户标识,得到剩余可用标识集。
再一种实施方式中,所述本地空间中的每个系统用户标识均具有一个标识编号,所述每个标识编号采用M字节的整型数组中的一个比特进行表示;所述整型数组包括K个元素,每个元素包括8M个比特;每个标识编号表示为:k*8N+m;其中,K和M均为正整数,k∈[1,K],m∈[1,8M];相应的,处理单元702在用于从所述远端服务器处获取所述已用的系统用户标识时,具体用于:向所述远端服务器发送编号位图请求,以请求所述远端服务器返回关于所述已用的系统用户标识的编号位图,所述编号位图是由所述远端服务器将所述已用的系统用户标识的标识编号在所述整型数组中所对应的比特的数值设置为已用标志值生成的;接收所述远端服务器处返回的编号位图;从所述编号位图中查找比特的数值为所述已用标志值的目标比特,并将所述目标比特所表示的标识编号所对应的系统用户标识作为已用的系统用户标识。
再一种实施方式中,所述业务服务器为游戏服务器,所述每个服务进程均用于为各个游戏分区内的客户端提供标识分配服务;所述目标客户端为任一游戏分区内的任一客户端,所述目标用户标识为目标角色名称。
根据本发明的一个实施例,图2或图4所示的方法所涉及的各个步骤均可以是由图7所示的业务处理装置中的各个单元来执行的。例如,图2中所示的步骤S201可由图7中所示的接收单元701来执行,步骤S202-S204可由图7中所示的处理单元702来执行;又如,图4中所示的步骤S406可由图7中所示的接收单元701来执行,步骤S401-S405以及步骤S407-S409均可由图7中所示的处理单元702来执行。
根据本发明的另一个实施例,图7所示的业务处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于业务处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的业务处理装置设备,以及来实现本发明实施例的业务处理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本发明实施例中的业务服务器可运行至少两个服务进程,以并发地提供标识分配服务,提高用户标识的分配效率。当接收到目标客户端发送的业务请求时,业务服务器可调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值。由于目标使用属性值可反映目标用户标识的使用情况,因此可在目标服务进程中,先根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则可将目标用户标识分配给目标客户端进行使用,从而保证目标用户标识的唯一性。
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种业务服务器。请参见图8,该业务服务器至少包括处理器801、输入接口802、输出接口803以及计算机存储介质804。其中,业务服务器内的处理器801、输入接口802、输出接口803以及计算机存储介质804可通过总线或其他方式连接。在具体实现中,所述业务服务器内还可运行有至少两个服务进程,每个服务进程均用于提供标识分配服务。
计算机存储介质804可以存储在业务服务器的存储器中,所述计算机存储介质804用于存储计算机程序,所述计算机程序包括程序指令,所述处理器801用于执行所述计算机存储介质804存储的程序指令。处理器801(或称CPU(Central Processing Unit,中央处理器))是业务服务器的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,本发明实施例所述的处理器801可以用于进行一系列的业务处理,包括:接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测;若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用,等等。
本发明实施例还提供一种计算机存储介质(Memory),所述计算机存储介质是业务服务器中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括业务服务器中的内置存储介质,当然也可以包括业务服务器所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了业务服务器的操作系统。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器801加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关业务处理实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器801加载并执行如下步骤:
接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
根据所述目标使用属性值对所述目标用户标识进行使用冲突检测;
若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
在一种实施方式中,在调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值时,所述一条或多条指令由处理器801加载并具体执行:调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值;或者,调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值。
再一种实施方式中,所述已用标识集存储于远端服务器中;相应的,在调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值时,所述一条或多条指令由处理器801加载并具体执行:调度目标服务进程生成携带所述目标用户标识的自增请求,并向所述远端服务器发送自增请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自增,并返回原子自增所得到的目标使用属性值;接收所述远端服务器返回的所述目标使用属性值。
再一种实施方式中,所述原子自增包括:若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行加一处理;若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第一数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行加一处理。
再一种实施方式中,所述已用标识集存储于远端服务器中;相应的,在调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值时,所述一条或多条指令由处理器801加载并具体执行:调度目标服务进程生成携带所述目标用户标识的自减请求,并向所述远端服务器发送自减请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自减,并返回原子自减所得到的目标使用属性值;接收所述远端服务器返回的所述目标使用属性值。
再一种实施方式中,所述原子自减包括:若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行减一处理;若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第二数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行减一处理。
再一种实施方式中,在在所述目标服务进程中,根据所述目标使用属性值对所述目标用户标识的使用进行冲突检测时,所述一条或多条指令由处理器801加载并具体执行:在所述目标服务进程中,将所述目标使用属性值和目标数值进行比较;若所述目标使用属性值等于所述目标数值,则确定检测到所述目标用户标识未存在使用冲突;若所述目标使用属性值大于所述目标数值,则确定检测到所述目标用户标识存在使用冲突。
再一种实施方式中,所述一条或多条指令还可由处理器801加载并具体执行:若检测到所述目标用户标识存在使用冲突,则生成错误提示,所述错误提示用于提示所述目标用户标识存在冲突错误;将所述错误提示反馈至所述目标客户端。
再一种实施方式中,所述一条或多条指令还可由处理器801加载并具体执行:响应所述目标客户端发送的标识获取请求,调度所述目标服务进程从对应的内存中获取剩余可用标识集;所述剩余可用标识集中包括所述至少一个未被使用的系统用户标识;从所述剩余可用标识集中选取任一个系统用户标识作为目标用户标识,并将所述目标用户标识下发至所述目标客户端。
再一种实施方式中,所述已用标识集存储于远端服务器中,且所述已用标识集中包括已用的系统用户标识和已用的自定义用户标识;相应的,所述一条或多条指令还可由处理器801加载并具体执行:在启动所述目标服务进程的过程中,调度所述目标服务进程从所述业务服务器的本地空间中读取系统标识集;所述系统标识集中包括所述本地空间中的所有系统用户标识,或者与所述目标服务进程对应的系统用户标识;将所述系统标识集存储至所述目标服务进程对应的内存中;从所述远端服务器处获取所述已用的系统用户标识,并从所述系统标识集中剔除所述已用的系统用户标识,得到剩余可用标识集。
再一种实施方式中,所述本地空间中的每个系统用户标识均具有一个标识编号,所述每个标识编号采用M字节的整型数组中的一个比特进行表示;所述整型数组包括K个元素,每个元素包括8M个比特;每个标识编号表示为:k*8N+m;其中,K和M均为正整数,k∈[1,K],m∈[1,8M];相应的,在从所述远端服务器处获取所述已用的系统用户标识时,所述一条或多条指令由处理器801加载并具体执行:向所述远端服务器发送编号位图请求,以请求所述远端服务器返回关于所述已用的系统用户标识的编号位图,所述编号位图是由所述远端服务器将所述已用的系统用户标识的标识编号在所述整型数组中所对应的比特的数值设置为已用标志值生成的;接收所述远端服务器处返回的编号位图;从所述编号位图中查找比特的数值为所述已用标志值的目标比特,并将所述目标比特所表示的标识编号所对应的系统用户标识作为已用的系统用户标识。
再一种实施方式中,所述业务服务器为游戏服务器,所述每个服务进程均用于为各个游戏分区内的客户端提供标识分配服务;所述目标客户端为任一游戏分区内的任一客户端,所述目标用户标识为目标角色名称。
本发明实施例中的业务服务器可运行至少两个服务进程,以并发地提供标识分配服务,提高用户标识的分配效率。当接收到目标客户端发送的业务请求时,业务服务器可调度目标服务进程从已用标识集中,获取目标用户标识的目标使用属性值。由于目标使用属性值可反映目标用户标识的使用情况,因此可在目标服务进程中,先根据目标使用属性值对目标用户标识的使用进行冲突检测;若检测到目标用户标识未存在使用冲突,则可将目标用户标识分配给目标客户端进行使用,从而保证目标用户标识的唯一性。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种业务处理方法,其特征在于,所述方法由业务服务器执行,所述业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务;所述方法包括:
接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
在所述目标服务进程中,将所述目标使用属性值和目标数值进行比较;
若所述目标使用属性值等于所述目标数值,则确定检测到所述目标用户标识未存在使用冲突;
若所述目标使用属性值大于所述目标数值,则确定检测到所述目标用户标识存在使用冲突;
若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
2.如权利要求1所述的方法,其特征在于,所述调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值,包括:
调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值;或者,
调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值。
3.如权利要求2所述的方法,其特征在于,所述已用标识集存储于远端服务器中;所述调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自增,得到所述目标用户标识的目标使用属性值,包括:
调度目标服务进程生成携带所述目标用户标识的自增请求,并向所述远端服务器发送自增请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自增,并返回原子自增所得到的目标使用属性值;
接收所述远端服务器返回的所述目标使用属性值。
4.如权利要求2或3所述的方法,其特征在于,所述原子自增包括:
若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行加一处理;
若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第一数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行加一处理。
5.如权利要求2所述的方法,其特征在于,所述已用标识集存储于远端服务器中;所述调度目标服务进程在已用标识集中,对所述目标用户标识的当前使用属性值进行原子自减,得到所述目标用户标识的目标使用属性值,包括:
调度目标服务进程生成携带所述目标用户标识的自减请求,并向所述远端服务器发送自减请求,以请求所述远端服务器在所述已用标识集中对所述目标用户标识的当前使用属性值进行原子自减,并返回原子自减所得到的目标使用属性值;
接收所述远端服务器返回的所述目标使用属性值。
6.如权利要求2或5所述的方法,其特征在于,所述原子自减包括:
若所述已用标识集中包括所述目标用户标识,则获取所述目标用户标识的历史使用属性值作为当前使用属性值,并对所述当前使用属性值进行减一处理;
若所述已用标识集中不包括所述目标用户标识,则在所述已用标识集中添加所述目标用户标识,并为所述目标用户标识新增一个第二数值的使用属性值作为当前使用属性值,以及对所述当前使用属性值进行减一处理。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
若检测到所述目标用户标识存在使用冲突,则生成错误提示,所述错误提示用于提示所述目标用户标识存在冲突错误;
将所述错误提示反馈至所述目标客户端。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
响应所述目标客户端发送的标识获取请求,调度所述目标服务进程从对应的内存中获取剩余可用标识集;所述剩余可用标识集中包括所述至少一个未被使用的系统用户标识;
从所述剩余可用标识集中选取任一个系统用户标识作为目标用户标识,并将所述目标用户标识下发至所述目标客户端。
9.如权利要求8所述的方法,其特征在于,所述已用标识集存储于远端服务器中,且所述已用标识集中包括已用的系统用户标识和已用的自定义用户标识;所述方法还包括:
在启动所述目标服务进程的过程中,调度所述目标服务进程从所述业务服务器的本地空间中读取系统标识集;所述系统标识集中包括所述本地空间中的所有系统用户标识,或者与所述目标服务进程对应的系统用户标识;
将所述系统标识集存储至所述目标服务进程对应的内存中;
从所述远端服务器处获取所述已用的系统用户标识,并从所述系统标识集中剔除所述已用的系统用户标识,得到剩余可用标识集。
10.如权利要求9所述的方法,其特征在于,所述本地空间中的每个系统用户标识均具有一个标识编号,所述每个标识编号采用M字节的整型数组中的一个比特进行表示;所述整型数组包括K个元素,每个元素包括8M个比特;每个标识编号表示为:k*8N+m;其中,K和M均为正整数,k∈[1,K],m∈[1,8M];
所述从所述远端服务器处获取所述已用的系统用户标识,包括:
向所述远端服务器发送编号位图请求,以请求所述远端服务器返回关于所述已用的系统用户标识的编号位图,所述编号位图是由所述远端服务器将所述已用的系统用户标识的标识编号在所述整型数组中所对应的比特的数值设置为已用标志值生成的;
接收所述远端服务器处返回的编号位图;
从所述编号位图中查找比特的数值为所述已用标志值的目标比特,并将所述目标比特所表示的标识编号所对应的系统用户标识作为已用的系统用户标识。
11.如权利要求1所述的方法,其特征在于,所述业务服务器为游戏服务器,所述每个服务进程均用于为各个游戏分区内的客户端提供标识分配服务;
所述目标客户端为任一游戏分区内的任一客户端,所述目标用户标识为目标角色名称。
12.一种业务处理装置,其特征在于,所述装置运行于业务服务器中,所述业务服务器内运行有至少两个服务进程,每个服务进程均用于提供标识分配服务;所述装置包括:
接收单元,用于接收目标客户端发送的业务请求,所述业务请求指示所述业务服务器:所述目标客户端请求使用目标用户标识;
处理单元,用于调度目标服务进程从已用标识集中,获取所述目标用户标识的目标使用属性值;所述目标使用属性值用于反映所述目标用户标识的使用情况,所述目标服务进程为任一服务进程;
所述处理单元,还用于在所述目标服务进程中,将所述目标使用属性值和目标数值进行比较;若所述目标使用属性值等于所述目标数值,则确定检测到所述目标用户标识未存在使用冲突;若所述目标使用属性值大于所述目标数值,则确定检测到所述目标用户标识存在使用冲突;
所述处理单元,还用于若检测到所述目标用户标识未存在使用冲突,则将所述目标用户标识分配给所述目标客户端进行使用。
13.一种业务服务器,包括输入接口和输出接口,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-11任一项所述的业务处理方法。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-11任一项所述的业务处理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010086238.6A CN111327719B (zh) | 2020-02-11 | 2020-02-11 | 业务处理方法、装置、业务服务器及介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010086238.6A CN111327719B (zh) | 2020-02-11 | 2020-02-11 | 业务处理方法、装置、业务服务器及介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111327719A CN111327719A (zh) | 2020-06-23 |
| CN111327719B true CN111327719B (zh) | 2021-03-26 |
Family
ID=71171252
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202010086238.6A Active CN111327719B (zh) | 2020-02-11 | 2020-02-11 | 业务处理方法、装置、业务服务器及介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111327719B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114338600B (zh) * | 2021-12-28 | 2023-09-05 | 深信服科技股份有限公司 | 一种设备指纹的推选方法、装置、电子设备和介质 |
| CN114416149B (zh) * | 2022-01-04 | 2025-05-23 | 北京金山云网络技术有限公司 | 一种服务的处理方法、装置及设备 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101799847A (zh) * | 2010-01-22 | 2010-08-11 | 深圳市新飞扬数码技术有限公司 | 一种网页游戏角色的换装方法及系统 |
| CN110609970A (zh) * | 2019-08-29 | 2019-12-24 | 北京大米科技有限公司 | 用户身份识别方法、装置、存储介质及电子设备 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101072386B (zh) * | 2007-06-22 | 2010-06-23 | 腾讯科技(深圳)有限公司 | 业务服务器、系统消息服务器和消息广播方法 |
| CN103188668B (zh) * | 2011-12-27 | 2017-02-08 | 方正国际软件(北京)有限公司 | 一种移动终端应用的安全保护方法及系统 |
| CN104378330B (zh) * | 2013-08-13 | 2019-02-12 | 北京奇虎科技有限公司 | 一种账户注册的方法及相应的装置和服务器 |
| CN105577612B (zh) * | 2014-10-11 | 2020-04-17 | 中兴通讯股份有限公司 | 身份认证方法、第三方服务器、商家服务器及用户终端 |
| GB2538773A (en) * | 2015-05-28 | 2016-11-30 | Vodafone Ip Licensing Ltd | Device key security |
| CN105391695B (zh) * | 2015-10-20 | 2018-12-14 | 山东泰信电子股份有限公司 | 一种终端注册方法及校验方法 |
| CN108696557B (zh) * | 2017-04-11 | 2021-08-10 | 北京京东尚科信息技术有限公司 | 信息处理系统、方法和装置 |
-
2020
- 2020-02-11 CN CN202010086238.6A patent/CN111327719B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101799847A (zh) * | 2010-01-22 | 2010-08-11 | 深圳市新飞扬数码技术有限公司 | 一种网页游戏角色的换装方法及系统 |
| CN110609970A (zh) * | 2019-08-29 | 2019-12-24 | 北京大米科技有限公司 | 用户身份识别方法、装置、存储介质及电子设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111327719A (zh) | 2020-06-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110069346B (zh) | 多进程间资源共享方法、装置、电子设备 | |
| CN112988377B (zh) | 用于云服务的资源分配方法、系统和介质 | |
| CN110888858B (zh) | 数据库的操作方法和装置、存储介质、电子装置 | |
| CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
| CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
| WO2014194695A1 (en) | Method and server for pvp team matching in computer games | |
| CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
| CN111327719B (zh) | 业务处理方法、装置、业务服务器及介质 | |
| CN118502965B (zh) | 加速卡分配方法、装置和人工智能平台 | |
| CN112138372A (zh) | 分布式系统中的数据同步方法及相关设备 | |
| CN111282262A (zh) | 游戏服务器通信的方法及装置 | |
| WO2024066828A1 (zh) | 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品 | |
| CN113760446B (zh) | 资源调度方法、装置、设备及介质 | |
| CN110354504B (zh) | 获取匹配组的方法、装置、服务器和存储介质 | |
| HK40024773B (zh) | 业务处理方法、装置、业务服务器及介质 | |
| HK40024773A (zh) | 业务处理方法、装置、业务服务器及介质 | |
| CN114138472A (zh) | 业务数据处理方法、装置和系统 | |
| CN109343959B (zh) | 多用户计算和IO密集型SaaS系统及应用方法 | |
| CN110879748A (zh) | 一种共享资源分配方法、装置和设备 | |
| CN110113217B (zh) | 微服务管理方法、装置、管理平台及存储介质 | |
| CN109005071B (zh) | 一种决策部署方法和调度设备 | |
| CN118605959A (zh) | 资源加载方法、装置、设备及存储介质 | |
| CN112337092B (zh) | 一种云游戏处理方法、装置、设备及存储介质 | |
| CN114047918A (zh) | 任务处理方法、装置、设备、存储介质及产品 | |
| CN113656181A (zh) | 一种实时应用集群实例资源的发放方法及装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024773 Country of ref document: HK |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant |