CN111949393A - 资源分配、获取方法、装置、存储介质和设备 - Google Patents
资源分配、获取方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN111949393A CN111949393A CN201910407198.8A CN201910407198A CN111949393A CN 111949393 A CN111949393 A CN 111949393A CN 201910407198 A CN201910407198 A CN 201910407198A CN 111949393 A CN111949393 A CN 111949393A
- Authority
- CN
- China
- Prior art keywords
- resource
- queue
- resource allocation
- user
- allocation request
- 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.)
- Granted
Links
- 238000013468 resource allocation Methods 0.000 title claims abstract description 469
- 238000000034 method Methods 0.000 title claims abstract description 143
- 230000008569 process Effects 0.000 claims abstract description 73
- 230000005055 memory storage Effects 0.000 claims description 33
- 238000012216 screening Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 15
- 238000001914 filtration Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000011273 social behavior Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种资源分配、获取方法、装置、存储介质和设备,所述资源分配方法包括:获取资源分配请求;将所述资源分配请求相应的用户标识加入存储于内存的用户队列;获取所述用户标识加入所述用户队列后所处的队列位置;在存储于所述内存的资源队列中,确定所述队列位置处的资源数额;所述资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户。本申请提供的方案可以提高资源分配消息。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种资源分配、获取方法、装置、存储介质和设备。
背景技术
随着计算机技术的发展,人们在分配资源时不仅可以通过线下的方式,还可以在网络中进行线上的资源分配。分配的资源包括但不限于虚拟红包、电子券、积分券、积分、电子代金券、游戏币以及虚拟物品等。
然而,传统的线上资源分配的过程中,通常是在接收到资源分配请求后,响应于资源分配请求来分配资源。这样,在大量资源分配请求同时发起时,受数据吞吐量的影响,会导致资源分配效率低下的问题。
发明内容
基于此,有必要针对资源分配效率低下的技术问题,提供一种资源分配、获取方法、装置、存储介质和设备。
一种资源分配方法,包括:
获取资源分配请求;
将所述资源分配请求相应的用户标识加入存储于内存的用户队列;
获取所述用户标识加入所述用户队列后所处的队列位置;
在存储于所述内存的资源队列中,确定所述队列位置处的资源数额;所述资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;
将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户。
一种资源分配装置,包括:
请求获取模块,用于获取资源分配请求;
标识入队模块,用于将所述资源分配请求相应的用户标识加入存储于内存的用户队列;
位置获取模块,用于获取所述用户标识加入所述用户队列后所处的队列位置;
数额确定模块,用于在存储于所述内存的资源队列中,确定所述队列位置处的资源数额;所述资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;
资源分配模块,用于将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述资源分配方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述资源分配方法的步骤。
上述资源分配方法、装置、计算机可读存储介质和计算机设备,在获取资源分配请求后,即自动将资源分配请求相应的用户标识加入存储于内存的用户队列,然后获取用户标识加入用户队列后所处的队列位置,这样即可快速地在同样存储于内存的资源队列中确定获取的队列位置处的资源数额,以将确定的资源数额相应的资源分配至用户标识相应的资源账户,完成资源分配。其中,资源队列是先配置好的、且资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成资源分配,提高了资源分配效率;而且,用户队列和资源队列都是存储在内存中,通过将资源分配过程转移至内存中进行,进一步提高了资源分配效率。
一种资源获取方法,包括:
在社交页面中播放资源分享媒体数据;
在播放所述资源分享媒体数据时,展示资源分享入口;
通过对应所述资源分享入口的操作,触发携带用户标识的资源分配请求;所述资源分配请求用于触发将所述用户标识加入用户队列,并确定所述用户标识在所述用户队列中的目标位置,以及按照资源队列中所述目标位置处的资源数额,将相应的资源分配予所述用户标识对应的资源账户;
在所述社交页面中展示所述资源数额。
一种资源获取装置,包括:
播放模块,用于在社交页面中播放资源分享媒体数据;
入口展示模块,用于在播放所述资源分享媒体数据时,展示资源分享入口;
触发模块,用于通过对应所述资源分享入口的操作,触发携带用户标识的资源分配请求;所述资源分配请求用于触发将所述用户标识加入用户队列,并确定所述用户标识在所述用户队列中的目标位置,以及按照资源队列中所述目标位置处的资源数额,将相应的资源分配予所述用户标识对应的资源账户;
结果展示模块,用于在所述社交页面中展示所述资源数额。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述资源获取方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述资源获取方法的步骤。
上述资源获取方法、装置、计算机可读存储介质和计算机设备,在社交页面中播放资源分享媒体数据时,便可展示资源分享入口,这样本地可直接通过该快速入口来请求进行资源分配,提高了资源获取效率。而且,资源分配过程通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成,且资源队列是先配置好的、资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,响应资源分配请求的效率更快,进一步提高了资源获取效率。
附图说明
图1为一个实施例中资源分配方法的应用环境图;
图2为一个实施例中资源分配方法的流程示意图;
图3为一个实施例中资源分配任务所指定的资源总数额和分配份数与资源队列的关系示意图;
图4为一个实施例中通过用户队列和资源队列联合进行资源分配的示意图;
图5为一个实施例中根据成员数量对直播房间进行差异性处理的示意图;
图6为一个实施例中资源获取方法的流程示意图;
图7为一个实施例中在社交页面中播放资源分享媒体数据的示意图;
图8为一个实施例中在社交页面展示资源数额的界面示意图;
图9为一个实施例中在社交页面展示资源分配结束消息的界面示意图;
图10为一个实施例中资源处理方法的流程示意图;
图11为一个实施例中直播场景下抢红包的具体流程图;
图12为一个实施例中资源分配装置的结构框图;
图13为另一个实施例中资源分配装置的结构框图;
图14为一个实施例中资源获取装置的结构框图;
图15为一个实施例中计算机设备的结构框图;
图16为另一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中资源分配方法的应用环境图。参照图1,该应用环境包括用户终端110和服务器120。用户终端110和服务器120通过网络连接。其中,用户终端110可包括多于一个的用户终端111和用户终端112。服务器120可包括业务服务器121和数据库服务器122。该应用环境还可包括网关设备130。用户终端110具体可以是台式用户终端或移动用户终端,移动用户终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。执行该资源分配方法的硬件设备为服务器120,具体可以为数据库服务器122。
另外,资源获取方法也可以用于图1所示的应用环境。具体地,用户终端110用于执行该资源获取方法。用户终端110也可通过运行于用户终端110上的应用程序执行该资源获取方法,该应用程序可以具体可以是社交应用程序,如直播应用等。
如图2所示,在一个实施例中,提供了一种资源分配方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该资源分配方法具体包括如下步骤:
S202,获取资源分配请求。
其中,资源分配请求用于请求进行资源分配。资源是指可通过网络获取所有权的物品。该物品包括虚拟物品或实体物品。虚拟物品包括账户数值、虚拟形象产品、虚拟充值卡、游戏装备或虚拟货币等。实体物品则可以是任意可被用户拥有的具有实际形态的物品,比如电子产品、玩具、工艺品或签名照片等。
具体地,服务器可以接收用户终端发送的资源分配请求,该资源分配请求可以是在社交会话中发起,也可以是在社交页面中发起,等等。其中,在社交会话中发起的资源分配请求,比如是在微信会话或者QQ会话中发起的抢红包请求等;在社交页面中发起的资源分配请求,比如是在直播页面中发起的抢红包请求,或者是在朋友圈页面或者QQ空间页面中发起的抢红包请求,或者时在游戏界面发起的游戏装备分配请求等。
在另外的实施例中,服务器也可以获取由用户终端发起传递、并由其他计算机设备中转传递至服务器的资源分配请求。这里的其他计算机设备具体可以是网关设备。其中,网关设备可以对由用户终端发起传递的资源分配请求分流。
S204,将资源分配请求相应的用户标识加入存储于内存的用户队列。
其中,用户标识用于唯一标识一个用户。用户标识比如用户社交账号或者计算机设备为用户分配的唯一编号等。用户队列是用于对用户进行排队的队列。
队列是一种特殊的线性表,其仅允许在表的一端进行删除操作,而在表的另一端进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头,又称为先进先出(FIFO,First In First Out)线性表。队列中存储的数据为队列元素。用户队列的队列元素即为用户标识。
具体地,服务器在接收到资源分配请求后,可获取该资源分配请求相应的用户标识,然后将该用户标识从用户队列的队尾插入用户队列中。
可以理解的是,该用户队列存储于内存中,即可通过内存高速的读写速度来提高数据处理效率,从而提高资源分配效率。资源分配请求相应的用户标识,是发起资源分配请求所通过的用户标识。比如,用户通过用户账号登录直播应用观看直播时,在当前的观看的直播页面中发起抢红包请求,那么该抢红包请求相应的用户标识即为当前登录的用户账号。
在一个实施例中,服务器每在执行一个资源分配任务的过程中,当接收到与当前资源分配任务对应的首个资源分配请求时,服务器可响应该首个资源分配请求在内存中创建新的用户队列,该新用户队列的队列元素为空。服务器可将该新的用户队列与当前资源分配任务相关联,并将该首个资源分配请求相应的用户标识加入该新的用户队列。其中,将资源分配任务与用户队列相关联,可以是建立任务标识与队列标识的对应关系。另外,当服务器接收到与当前资源分配任务对应的非首个资源分配请求时,已存在与当前资源分配任务相关联的用户队列,服务器则可直接查询与当前资源分配任务相关联的用户队列,然后将该资源分配请求相应的用户标识加入查询到的该用户队列中。
举例说明,假设用户1在A直播间观看直播时,在A直播间中发起抢红包请求a;用户2在B直播间观看直播时,在B直播间中发起抢红包请求b;明显可以看出这两个抢红包请求分别属于不同的资源分配任务,那么服务器在接收到这两个抢红包请求后,将各自相应的用户标识加入的用户队列也不相同。具体地,服务器将用户1的用户标识加入A直播间相应资源分配任务相关联的用户队列,将用户2的用户标识加入B直播间相应资源分配任务相关联的用户队列。其中,若用户队列不存在则创建新的用户队列。
S206,获取用户标识加入用户队列后所处的队列位置。
其中,队列位置为用于标识队列中的队列元素在队列中的位置。队列位置具体可以是队列元素在队列中的排序位置。比如,队列中的第一个队列元素的位置为1,队列中的第二个队列元素的位置为2,依此类推。队列位置具体也可以是队列元素的队列下标。具体地,服务器在将用户标识插入用户队列后,即可读取该用户标识插入用户队列后所处的队列位置。
S208,在存储于内存的资源队列中,确定队列位置处的资源数额;资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额。
其中,资源队列是用于对资源数额进行排队的队列。资源数额即为资源队列的队列元素。一个资源队列中包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额。也就是说,在一轮资源分配过程中所分配的资源的总数额,按照需要分配的份数被划分成多于一份,得到多于一份的资源数额,然后这些资源数额被作为资源队列的队列元素插入资源队列中。
在一个实施例中,该资源分配方法还包括:获取资源分配任务;每个资源分配任务对应一轮资源分配过程;确定资源分配任务所指定的资源总数额和分配份数;按照分配份数对资源总数额进行划分,得到多于一份资源数额;将多于一份资源数额依次加入存储于内存的资源队列中。
其中,资源分配任务是指进行资源分配的任务。资源分配任务指定了一轮资源分配过程中需要分配的资源的总数额和分配份数。一轮资源分配过程是指将一定数额的资源经过一次或多于一次的分配直至分配结束的过程。可以理解,执行一次资源分配任务即是完成一轮资源分配过程。
举例说明,资源分配任务比如社交会话中发起的随机红包、直播页面中发起的虚拟礼物发放或者游戏中发起的虚拟装备发放等等。
具体地,服务器获取资源分配任务,确定该资源分配任务所指定的资源总数额和分配份数,按照该资源分配任务所指定的分配份数对该资源分配任务所指定的资源总数额进行划分,得到多于一份资源数额。服务器可并行地在内存中创建新的资源队列,将新创建的资源队列与该资源分配任务相关联,再将划分得到的多于一份的资源数额依次加入该资源队列。其中,对资源总数额进行划分具体可以是随机划分。资源队列中的资源数额可以相同也可以不相同。
举例说明,图3示出了一个实施例中资源分配任务所指定的资源总数额和分配份数与资源队列的关系示意图。参考图3可以看出,资源分配任务所指定的资源总数额被划分为该资源分配任务所指定分配份数的资源数额后,依次加入该资源分配任务相关联的资源队列中;也就是说,资源队列中队列元素的数量为资源分配任务所指定的分配份数,资源队列中所有队列元素之和资源分配任务所指定的资源总数额。
在一个实施例中,资源分配任务可通过用户终端发起,也可由服务器发起,发起资源分配任务的用户终端也可发起对应该资源分配任务的资源分配请求。
上述实施例中,将资源分配过程的资源数额划分过程提前到资源分配之前进行,这样在资源分配过程中确定对应每个资源分配请求需要分配的资源数额时,可以直接将用户标识加入用户队列,再根据用户队列与资源队列的位置对应关系即可直接读取预划分的资源数额,极大地提高了资源分配效率。
可以理解,由于资源队列中队列元素的数量即为一轮资源分配过程中的分配份数,也就是一轮资源分配过程中可以分配到资源的用户的数量。那么,服务器在获取到资源分配请求后,可先比较用户队列与资源队列的队列长度。如果用户队列的队列长度小于资源队列的队列长度,则表示资源还未分配完,可以继续进行分配;如果用户队列的队列长度等于资源队列的队列长度,则表示资源已经分配完,无需进行后续的分配操作。
在一个实施例中,该资源分配方法还包括:当用户队列的队列长度小于资源队列的队列长度时,则执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤;当用户队列的队列长度等于资源队列的队列长度时,则响应于资源分配请求反馈资源分配结束消息。
具体地,服务器在获取到资源分配请求后,可以确定该资源分配请求所属的资源分配过程,也就是该资源分配请求所对应的资源分配任务。然后确定该资源分配任务所关联的用户队列和资源队列,分别获取这两个队列各自的队列长度。当用户队列的队列长度小于资源队列的队列长度时,则执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤;当用户队列的队列长度等于资源队列的队列长度时,则响应于资源分配请求反馈资源分配结束消息。
其中,资源分配结束消息是用于表示一轮资源分配过程中需要被分配的资源已被分配完的消息。
在本实施例中,以用户队列与资源队列的队列长度差异为依据,判断一轮资源分配是否结束,继而根据判断结果执行相应的操作,提高了资源分配效率。
具体地,服务器在获取用户标识加入用户队列后所处的队列位置,即可在同样存储于内存的资源队列中,确定队列位置处的资源数额。也就是要分配给当前发起资源分配请求的用户的资源的数额。
在一个实施例中,服务器为对应同一个用户标识重复进行资源分配,可在将资源分配请求相应的用户标识与用户队列中已有的用户标识进行对比。当资源分配请求相应的用户标识与用户队列中任一已有的用户标识均不相同时,则表示尚未对应该资源分配请求相应的用户标识进行资源分配,即将该资源分配请求相应的用户标识加入用户队列以进行资源分配。当资源分配请求相应的用户标识与用户队列中其中一个已有的用户标识相同时,则表示已对应该资源分配请求相应的用户标识进行资源分配,无需再对应该资源分配请求相应的用户标识重复进行资源分配。其中,用户队列中的用户标识各不相同。
在一个实施例中,该资源分配方法还包括:获取资源分配请求相应的用户标识;查询与用户标识对应存储的资源分配标识;当资源分配标识表示尚未分配资源至用户标识相应的资源账户时,则比较用户队列与资源队列的队列长度。
具体地,服务器每在对应一个用户标识进行资源分配后,即可将该用户标识对应存储的资源分配标识,由为表示尚未分配资源至用户标识相应的资源账户的数据,修改为已分配资源至用户标识相应的资源账户的数据。这样,服务器在接收资源分配请求后,可获取该资源分配请求相应的用户标识,查询与该用户标识对应存储的资源分配标识。当该资源分配标识表示尚未分配资源至用户标识相应的资源账户时,则表示尚未对应该用户表示进行资源分配,进而比较用户队列与资源队列的队列长度。当该资源分配标识表示已分配资源至用户标识相应的资源账户时,则表示已对应该用户表示进行资源分配,进而反馈已分配资源已分配消息。
上述实施例中,通过为用户标识设置对应的资源分配标识,来反映是否对应该用户标识进行资源分配,从而避免了对应同一个用户标识重复进行资源分配的情形,提升了资源分配的合理性。
S210,将确定的资源数额相应的资源分配至用户标识相应的资源账户。
具体地,服务器在资源队列中确定队列位置处的资源数额,也就是用户标识在用户队列中的队列位置在资源队列相应位置处的队列元素。该资源数额即为对应该用户标识进行资源分配的数额。服务器即可以将该资源数额相应的资源分配至用户标识相应的资源账户,也就是,在用户标识相应的资源账户中在原有的资源数额上增加该资源数额。
举例说明,图4示出了一个实施例中通过用户队列和资源队列联合进行资源分配的示意图。参考图4,可以看到,服务器事先将一轮资源分配过程中需要分配资源的总数额进行划分后加入资源队列,那么后续的资源分配过程就简化成了用户占位的问题,占位成功就获取对应位置的资源。
可以理解,在本申请实施例中,一轮资源分配过程对应一个资源分配任务、一个用户队列和一个资源队列。服务器在获取到一个资源分配任务后执行该资源分配任务,即根据该资源分配任务所指定的资源总数额和分配份数构建一个相关联的资源队列;然后在接收到首个与该资源分配任务对应的资源分配请求时,创建用户队列,将该用户标识加入用户队列以进行资源分配;再继续接收到与该资源分配任务对应的资源分配请求时,对用户标识去重以及比较资源队列和用户队列的队列长度后,进行资源分配或者反馈资源分配结束消息或者反馈资源已分配消息。
上述资源分配方法,在获取资源分配请求后,即自动将资源分配请求相应的用户标识加入存储于内存的用户队列,然后获取用户标识加入用户队列后所处的队列位置,这样即可快速地在同样存储于内存的资源队列中确定获取的队列位置处的资源数额,以将确定的资源数额相应的资源分配至用户标识相应的资源账户,完成资源分配。其中,资源队列是先配置好的、且资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成资源分配,提高了资源分配效率;而且,用户队列和资源队列都是存储在内存中,通过将资源分配过程转移至内存中进行,进一步提高了资源分配效率。
在一个实施例中,获取资源分配请求包括:通过内存存储型数据库的线程获取资源分配请求;继续通过线程执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤,在存储于内存的资源队列中,确定队列位置处的资源数额的步骤,以及将确定的资源数额相应的资源分配至用户标识相应的资源账户的步骤。
其中,内存存储型数据库是指数据缓存在内存中的数据库。内存存储型数据库具体比如Redis数据库等。线程是计算机设备中进行数据处理的单元。可以理解,内存存储型数据库的线程在内存中进行数据处理,而内存的读写速度高(可以达到8GB/s),相较于磁盘存储型数据库(固态硬盘的读写速度较低,通常在500MB/s)读写速度要高很多,从而极大地提升了数据处理效率。
具体地,服务器可以通过其上配置的内存存储型数据库的线程获取资源分配请求,继而继续通过该线程执行后续步骤,保证资源分配过程均在内存中进行,极大地提高资源分配的效率。
在一个实施例中,线程为一个内存存储型数据库实例的单线程;该资源分配方法还包括:当单线程执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤,获取用户标识加入用户队列后所处的队列位置的步骤,在存储于内存的资源队列中,确定队列位置处的资源数额的步骤,以及将确定的资源数额相应的资源分配至用户标识相应的资源账户的步骤的其中一个步骤失败时,则将内存存储型数据库实例的数据状态,恢复至执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤之前的状态。
可以理解,数据库是指按照一定方式储存在一起、供用户共享、具有尽可能小的冗余度、且与应用程序彼此独立的数据集合。数据库实例是用户和数据库之间的一层数据管理程序,用户对数据库中的数据做任何的操作,包括数据定义、数据查询、数据维护以及数据库运行控制等都是在数据库实例下进行的。
需要说明的是,结合前述的实施例,资源分配过程包括了多步操作,一旦其中有一个步骤失败,都会造成整个资源分配的失败;并且不清理数据还会造成脏数据,可能会出现加入了用户队列,但没有反馈资源给用户的场景。因此,使得资源分配过程具有类似数据库事务的原子性来保证资源分配的准确性。
具体地,一个内存存储型数据库实例可以通过一个单线程来依次处理资源分配过程中的各步骤,实现原子性操作,使得资源分配过程中的各步骤一起成功或者一起失败,保证资源分配过程正常且准确地进行。
其中,当内存存储型数据库支持数据库事务操作时,即可直接利用数据库自身的性能来实现资源分配过程的原子性。当内存存储型数据库不支持数据库事务操作时,则可以通过插入计算机程序来实现资源分配过程的原子性。比如,Redis数据库不支持数据库事务,但自带Lua脚本读写能力,从而可以将资源分配过程的各步骤编写到Lua脚本中,通过Redis的EVAL命令执行脚本,完成上述四个步骤。使资源分配过程中的步骤能一起成功或者一起失败,不会出现脏数据或者部分成功的情况,类似于数据库事务的特性。
在一个实施例中,服务器对一个内存存储型数据库实例进行测试,得到一个内存存储型数据库实例的资源分配效率达到4万次/秒。基于此,对于多核服务器上,其上可部署多个内存存储型数据库实例,这样可极大地降低硬件成本。
在本实施例中,通过控制资源分配过程中的各步骤一起成功或者一起失败,保证资源分配过程的准确性。
在一个具体的实施例中,内存存储型数据库为Redis数据库。Redis单线程具体可通过使用Redis的RPUSH命令创建资源队列,并将划分得到的资源数额加入资源队列。Redis单线程还使用Redis的LIEN命令获取队列的队列长度,来比较资源队列和用户队列的队列长度。Redis单线程还使用Redis的RPUSH命令将资源分配请求相应的用户标识加入用户队列,并得到返回值,即为用户标识插入用户队列后的队列位置。Redis单线程还使用Redis的LRANGE命令获取资源队列中该队列位置处的资源数额。另外,用户标识和相应的资源分配标识可以是采用键值结构(Key-Value)的存储格式。
上述实施例中,通过内存存储型数据库相应的线程来处理资源分配过程,使得资源分配过程在内存中进行,利用内存的性能极大地提高了资源分配效率。
在一个实施例中,该资源分配方法应用于数据库服务器。获取资源分配请求,包括:获取业务服务器传递、且由用户终端发起的资源分配请求;其中,资源分配请求,由业务服务器在资源分配请求相应的用户标识不存在于业务服务器的筛选队列中、且筛选队列的队列长度未达到预设长度时发起传递。
需要说明的是,一轮资源分配过程中的分配份数是事先设置好的,当一轮资源分配过程中发起的资源分配请求的数量较大,尤其是远远超过分配份数的场景下,只有该分配份数的资源分配请求能够分配到资源,剩下的资源分配请求均无法再分配到资源,然而这些资源分配请求会全部传递至数据库服务器处理,增加了数据库服务器的数据处理压力。
本申请实施例中,通过业务服务器对资源分配请求进行过滤,限制传递至数据库服务器的资源分配请求,以减少数据库服务器的数据处理压力。
其中,筛选队列是用于对用户进行过滤的队列。筛选队列的队列元素为用户标识。预设长度是传递至数据库服务器的资源分配请求的数量,与一轮资源分配过程中的分配份数相关。
具体地,用户终端可将资源分配请求发送至业务服务器。业务服务器在接收到资源分配请求后,可获取其上存储的筛选队列当前的队列长度。当该筛选队列的队列长度为达到预设长度时,则继续查看该资源分配请求相应的用户标识是否存在于筛选队列中。当该资源分配请求相应的用户标识不存在于筛选队列中时,则将该资源分配请求相应的用户标识插入筛选队列,并将该资源分配请求传递至数据库服务器。
在一个实施例中,业务服务器上可存储有多个筛选队列。其中,每个筛选队列与一个资源分配任务相关,也就是与一轮资源分配过程相关。此时,服务器在获取到资源分配请求后,需先确定该资源分配请求所对应的资源分配任务,再确定该资源分配任务所对应的筛选队列,再进行后续处理。
在另外的实施例中,业务服务器也可以先查看资源分配请求相应的用户标识是否存在于筛选队列中,再查看筛选队列当前的队列长度是否达到预设长度。
举例说明,假设某轮资源分配过程中发起的资源分配请求的数量为10W次,但是该轮资源分配过程中的分配份数仅为1W份。在不限流的情况下,这10W次资源分配请求均会传递至数据库服务器进行处理;在限流的情况下,通过将预设长度设置为1W,这样通过业务服务器的过滤,只有1W次资源分配请求会传递至数据库服务器进行处理,从数据库服务器的角度来说,压力减少了90%。
上述实施例中,通过业务服务器进行资源分配请求的过滤,仅将部分资源分配请求传递至数据库服务器进行处理,减轻了数据库服务器的压力。
在一个实施例中,获取业务服务器传递、且由用户终端发起的资源分配请求,包括:获取业务服务器传递的资源分配请求;资源分配请求由用户终端发起传递至网关设备,并由网关设备根据资源分配请求相应的房间标识确定业务服务器标识后,传递至业务服务器标识对应的业务服务器。
其中,资源分配请求携带房间标识。房间标识用于唯一标识一个直播房间。可以理解,本实施例的应用场景为直播过程中的资源分配过程。通常情况下,一个直播房间的成员数量并非固定不变的,而且不同直播房间的成员数量也各不相同。对于一个直播房间的一个资源分配任务,该直播房间的所有成员均可对应该资源分配任务发起资源分配请求。尤其是在直播房间的成员数量较大时,发起的资源分配请求的数量也是巨大的。若这些资源分配请求全部通过一台业务服务器进行过滤,该业务服务器的数据处理压力是较大的。
在本实施例中,通过网关设备根据直播房间的成员数量,将在该直播房间发起的资源分配请求分布到一个或者多于一个的业务服务器上,从而通过横向扩容减轻业务服务器的数据处理压力。而且,业务服务器主要是进行资源分配请求的过滤,不涉及具体的资源分配,满足横向扩容条件而不影响资源分配。
在一个实施例中,当房间标识所对应的成员数量大于预设数量时,预设长度小于房间标识相应资源分配任务所指定的分配份数;当房间标识所对应的成员数量小于或者等于预设数量时,预设长度为房间标识相应资源分配任务所指定的分配份数。
可以理解,在房间标识所对应的成员数量小于或者等于预设数量,可以认为该房间标识所标识的直播房间的成员数量较少,一台业务服务器的数据处理能力即能满足需求。那么,可以将预设长度设置为房间标识相应资源分配任务所指定的分配份数,也就是通过一台业务服务器进行资源分配请求过滤,仅将资源分配任务所指定分配份数的资源分配请求传递到数据库服务器。在房间标识所对应的成员数量大于预设数量,可以认为该房间标识所标识的直播房间的成员数量较多,需要多于一台的业务服务器来均衡数据处理压力。那么,可以将预设长度设置为小于房间标识相应资源分配任务所指定的分配份数,也就是通过多于一台业务服务器进行资源分配请求过滤,联合将至少为资源分配任务所指定分配份数的资源分配请求传递到数据库服务器。其中,在房间标识所对应的成员数量大于预设数量时,预设长度具体可以是资源分配任务所指定分配份数/业务服务器数量*容错系数。
具体地,事先可根据直播房间的成员数量为直播房间分配适当数量的业务服务器。在实际进行资源分配请求传递时,根据房间标识将在该房间标识所对应的直播房间中发起的资源分配请求均匀地分布到该直播房间相应的各业务服务器上。
举例说明,对于成员数量较少的直播房间,可根据房间标识进行一致性哈希路由,将在该直播房间发起的所有资源分配请求传递至该直播房间对应的一台业务服务器上。该业务服务器的内存中可存在过滤队列,队列的预设长度是这个直播房间资源分配任务所指定的分配份数。当资源分配请求的数量超过队列的预设长度,则直接返回资源分配结束消息。这样对于成员数量较少的直播房间,穿透到Redis的资源分配请求的数量就只有实际的分配份数。对于成员数量较多的直播房间,也可根据用户标识进行一致性哈希路由,将在该直播房间发起的所有资源分配请求均匀地分布在该直播房间对应的多于一个业务服务器上,各业务服务器的内存中均存在过滤队列,队列的预设长度是这个直播房间资源分配任务所指定的分配份数/业务服务器数量*容错系数。这里的容错系数是为了在业务服务器宕机的时候能保证资源能被其他后面的用户正常领取到。容错系数的大小会影响资源分配过程中业务服务器宕机是否会出现资源无法分配完的情况。容错系数的大小具体可根据实际业务服务器部署的情况以及服务稳定性来设置。
可以理解,如果不存在容错系数或者容错系数为1,那么每台业务服务器上的队列的预设长度即为红包数/机器数。比如直播房间需要发1W个红包,业务服务器10台,那么每台机器上的队列长度就是1000。如果抢红包过程中出现了一次宕机,极端情况下会出现这里其他9台机器的队列长度每台还是1000,那么对应的房间队列长度就只有9000,会导致1000个红包发不出去。那么加上这个容错系数后,比如设置1.2的容错系数,那么按照上面的红包数和机器数,每台机器上的队列长度就是1200,如果一台机器宕机,这里的总红包队列长度还是10800,这样不会出现红包发布出去的情况。虽然这里的总长度大于了设置了1W个红包数,但并不会造成多发红包,因为Redis中的资源队列的长度仍然是固定的1W,这里内存的队列长度大于了1W只是多一部分资源分配请求传递到Redis集群而已。
图5示出了一个实施例中根据成员数量对直播房间进行差异性处理的示意图。本实施例应用于在直播房间中发红包的具体场景。参考图5,用户终端发起的资源分配请求先到达网关设备(CGI/WNS),网关设备根据直播房间的成员数量,区分大房间和小房间。对于小房间,根据房间标识(房间ID)进行一致性哈希(一致性Hash),将小房间的抢红包请求传递至该小房间对应的业务服务器(红包SVR)。小房间对应的业务服务器中过滤队列的预设长度(Set容量)即为本次抢红包的可领红包数。对于大房间,则根据用户标识(用户ID)进行一致性哈希(一致性Hash),将大房间的抢红包请求均匀分布传递至该大房间对应的多于一个业务服务器(红包SVR)。大房间对应的业务服务器中过滤队列的预设长度(Set容量)即为本次抢红包的可领红包数/机器数(即业务服务器的数量)*系数(即容错系数)。
上述实施例中,通过业务服务器根据直播房间的成员数量进行差异化处理,提前过滤资源分配请求的数量,控制传递至数据库服务器的请求数量,提升了资源分配的性能,且降低了硬件成本。
如图6所示,在一个实施例中,提供了一种资源获取方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图6,该资源获取方法具体包括如下步骤:
S602,在社交页面中播放资源分享媒体数据。
其中,社交页面是指可进行社交行为或者展示社交数据的页面。社交页面比如社交会话页面、社交内容发布页面、直播页面或者游戏页面等。资源分享媒体数据是提示进行资源分享的媒体数据。媒体数据可包括文本数据、图片数据、音频数据或者视频数据中的至少一种。图片数据可包括动态图片数据和静态图片数据。资源分享媒体数据可以是资源分享提示文本、资源分享提示动画、资源分享提示音频或者资源分享提示视频等。
具体地,用户终端可根据用户操作登录社交应用进而展示社交应用的社交页面。该社交应用相应的服务器可自动发起资源分配任务,从而在该社交页面中播放资源分享媒体数据。登录该社交应用并展示该社交页面的用户终端也可根据用户操作发起资源分配任务,从而在该社交页面中播放资源分享媒体数据。
举例说明,用户通过直播应用进入直播房间观看直播时,直播应用对应的服务器可定时发起发红包任务。该直播房间中的成员(主播或者观众)也可控制用户终端发起发红包任务。
图7示出了一个实施例中在社交页面中播放资源分享媒体数据的示意图。参考图7,该社交页面具体为直播页面,该资源分享媒体数据为抢红包倒计时动画。从图7中可以看出用户终端在直播页面中播放抢红包倒计时动画。
S604,在播放资源分享媒体数据时,展示资源分享入口。
其中,资源分享入口用于触发进行资源获取。资源分享入口可以用图标、控件、超链接或者按钮的形式表示。
具体地,用户终端在播放资源分享媒体数据时可展示资源分享入口。在另外的实施例中,用户终端可在播放完资源分享媒体数据后展示资源分享入口。
需要说明的是,本申请实施例中对播放资源分享媒体数据的区域大小不作限定,资源分享入口与播放资源分享媒体数据的页面位置关系亦不作限定。比如,用户终端可全屏播放资源分享提示视频,也可在社交页面的某一区域播放资源分享提示视频。资源分享入口可在播放资源分享媒体数据的页面区域中,也可在播放资源分享媒体数据的页面区域外。继续参考图7,该界面包括资源分享入口。
S606,通过对应资源分享入口的操作,触发携带用户标识的资源分配请求;资源分配请求用于触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户。
S608,在社交页面中展示资源数额。
具体地,服务器将资源分配予用户标识对应的资源账户后,可向用户终端反馈分配给用户的资源的资源数额。用户终端则可在社交页面展示该资源数额。举例说明,图8示出了一个实施例中在社交页面展示资源数额的界面示意图。
上述资源获取方法,在社交页面中播放资源分享媒体数据时,便可展示资源分享入口,这样本地可直接通过该快速入口来请求进行资源分配,提高了资源获取效率。而且,资源分配过程通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成,且资源队列是先配置好的、资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,响应资源分配请求的效率更快,进一步提高了资源获取效率。
在一个实施例中,资源分配请求用于在用户队列的队列长度小于资源队列的队列长度时,触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户;资源分配请求还用于在用户队列的队列长度等于资源队列的队列长度时,响应于资源分配请求反馈资源分配结束消息。该资源获取方法还包括:在社交页面中展示资源分配结束消息。
具体地,在不同的用户队列与资源队列的队列长度关系下,资源分配请求用于触发不同的操作,从而使得用户终端接收到不同的反馈结果。
在用户队列的队列长度小于资源队列的队列长度时,资源分配请求用于触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户。这样,用户终端所接收到的反馈结果为分配予用户标识对应的资源账户的资源的资源数额,那么用户终端可在社交页面中展示该资源数额。
在用户队列的队列长度等于资源队列的队列长度时,资源分配请求则用于触发响应于资源分配请求反馈资源分配结束消息。这样,用户终端所接收到的反馈结果为资源分配结束消息,那么用户终端可在社交页面中展示该资源分配结束消息。举例说明,图9示出了一个实施例中在社交页面展示资源分配结束消息的界面示意图。
在一个实施例中,在用户队列的队列长度小于资源队列的队列长度时,资源分配请求用于触发查看用户标识是否对应当前轮资源分配过程发起过资源分配请求,并在用户标识对应当前轮资源分配过程发起过资源分配请求时反馈资源已分配消息。这样,用户终端所接收到的反馈结果为资源已分配消息,那么用户终端可在社交页面中展示该资源已分配消息。
需要说明的是,资源获取方法中通过资源分配请求所触发的资源分配过程的具体步骤细节可参考前述实施例中的相关描述,在此不再赘述。
图10为一个具体的实施例中资源处理方法的流程示意图。参考图10,该资源处理方法具体包括以下步骤:
S1002,内存存储型数据库服务器获取资源分配任务;每个资源分配任务对应一轮资源分配过程。
S1004,内存存储型数据库服务器确定资源分配任务所指定的资源总数额和分配份数;按照分配份数对资源总数额进行划分,得到多于一份资源数额;将多于一份资源数额依次加入存储于内存的资源队列中。
S1006,用户终端在社交页面中播放资源分享媒体数据;在播放资源分享媒体数据时,展示资源分享入口。
S1008,用户终端通过对应资源分享入口的操作,触发携带用户标识的资源分配请求,并将资源分配请求发送至网关设备。
S1010,网关设备获取资源分配请求,并获取资源分配请求携带的房间标识。
S1012,网关设备获取与房间标识所对应的成员数量,并判断成员数量是否大于预设数量;若是,则执行S1014;若否,则执行S1016。
S1014,网关设备根据资源分配请求相应的用户标识进行哈希运算,确定将该资源分配请求传递至的业务服务器,并传递该资源分配请求。
S1016,网关设备根据资源分配请求携带的房间标识进行哈希运算,确定将该资源分配请求传递至的业务服务器,并传递该资源分配请求。
S1018,业务服务器接收资源分配请求,查询资源分配请求相应的用户标识是否存在于业务服务器的筛选队列中、且筛选队列的队列长度未达到预设长度;若是,则执行S1020;若否,则执行S1022。
S1020,业务服务器将资源分配请求传递至内存存储型数据库服务器。
S1022,业务服务器在用户标识存在于筛选队列中时反馈资源已分配消息,在筛选队列的队列长度达到预设长度时反馈资源分配结束消息。
S1024,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,获取资源分配请求相应的用户标识。
S1025,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,查询与用户标识对应存储的资源分配标识是否表示尚未分配资源至用户标识相应的资源账户;若是,则执行S1026;若否,则执行S1032。
S1026,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,比较用户队列与资源队列的队列长度;若用户队列的队列长度小于资源队列的队列长度,则执行S1028;若用户队列的队列长度等于资源队列的队列长度,则执行S1030。
S1028,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,将资源分配请求相应的用户标识加入存储于内存的用户队列;获取用户标识加入用户队列后所处的队列位置;在存储于内存的资源队列中,确定队列位置处的资源数额;资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;将确定的资源数额相应的资源分配至用户标识相应的资源账户。
S1030,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,响应于资源分配请求反馈资源分配结束消息。
S1032,内存存储型数据库服务器中一个内存存储型数据库实例的单线程,响应于资源分配请求反馈资源已分配消息。
S1034,用户终端在社交页面中展示资源数额。
S1036,用户终端在社交页面中展示资源分配结束消息。
S1038,用户终端在社交页面中展示资源已分配消息。
上述资源处理方法,用户终端在社交页面中播放资源分享媒体数据时,便可展示资源分享入口,这样本地可直接通过该快速入口来请求进行资源分配,提高了资源获取效率。内存存储型数据库服务器在获取资源分配请求后,即自动将资源分配请求相应的用户标识加入存储于内存的用户队列,然后获取用户标识加入用户队列后所处的队列位置,这样即可快速地在同样存储于内存的资源队列中确定获取的队列位置处的资源数额,以将确定的资源数额相应的资源分配至用户标识相应的资源账户,完成资源分配。其中,资源队列是先配置好的、且资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成资源分配,提高了资源分配效率;而且,用户队列和资源队列都是存储在内存中,通过将资源分配过程转移至内存中进行,进一步提高了资源分配效率。另外还通过业务服务器对资源分配请求进行限流,降低了硬件成本。
需要说明的是,上述实施例中S1002、S1004、S1028中将确定的资源数额相应的资源分配至用户标识相应的资源账户的步骤、S1030以及S1032,也可由业务服务器执行。
举例说明,图11为直播场景下抢红包的具体流程图。参考图11,用户终端上运行有直播应用,并可通过用户标识登录直播应用进入直播房间展示直播页面。直播应用所对应的红包业务服务器可定时在直播房间中发放红包。每当红包业务服务器发起一次发放红包行为,用户终端展示的直播页面中即可展示红包倒计时动画,并在红包倒计时动画播放结束后播放抢红包动画。用户终端还可在播放抢红包动画时展示抢红包入口,继而通过对应抢红包入口的用户操作,触发携带用户ID的抢红包请求。用户终端可将用户触发的抢红包请求发送至网关设备,再由网关设备将抢红包请求中转传递至红包业务服务器和/或数据库服务器进行红包分配,得到红包业务服务器或数据库服务器反馈的抢红包结果。
每当红包业务服务器(红包SVR)发起一次发放红包行为时,红包业务服务器即可根据当前发放红包行为的红包份数将红包总金额划分成多于一个红包金额,然后将这些红包金额传递至数据库服务器。数据库服务器在内存中创建该次发放红包行为相应的奖励队列,将这些红包金额依次加入奖励队列中,从而完成奖励的预切分。其中,划分红包总金额的过程也可在数据库服务器中进行。
用户终端在播放红包倒计时动画时,红包业务服务器也可倒计时下发;用户终端触发抢红包请求后,网关设备根据抢红包请求来自的直播房间的成员数量,选择根据房间ID或者用户ID确定抢红包请求应当传递至的红包业务服务器。红包业务服务器接收到抢红包请求则判定红包领取开始,并通过筛选队列的过滤,决定是否将抢红包请求传递至数据库服务器集群(Codis:Redis数据库集群)中的相应的数据库服务器。在数据库服务器根据用户队列和奖励队列进行红包金额分配后,红包业务服务器即判定红包领取结束并发奖。
应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图12所示,在一个实施例中,提供了一种资源分配装置1200。参照图12,该资源分配装置1200包括:请求获取模块1201、标识入队模块1202、位置获取模块1203、数额确定模块1204和资源分配模块1205。
请求获取模块1201,用于获取资源分配请求。
标识入队模块1202,用于将资源分配请求相应的用户标识加入存储于内存的用户队列。
位置获取模块1203,用于获取用户标识加入用户队列后所处的队列位置。
数额确定模块1204,用于在存储于内存的资源队列中,确定队列位置处的资源数额;资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额。
资源分配模块1205,用于将确定的资源数额相应的资源分配至用户标识相应的资源账户。
在一个实施例中,标识入队模块1202还用于当用户队列的队列长度小于资源队列的队列长度时,将资源分配请求相应的用户标识加入存储于内存的用户队列。资源分配模块1205还用于当用户队列的队列长度等于资源队列的队列长度时,则响应于资源分配请求反馈资源分配结束消息。
在一个实施例中,标识入队模块1202还用于获取资源分配请求相应的用户标识;查询与用户标识对应存储的资源分配标识;当资源分配标识表示尚未分配资源至用户标识相应的资源账户时,则比较用户队列与资源队列的队列长度。
在一个实施例中,资源分配装置1200还包括资源划分模块1206,用于获取资源分配任务;确定资源分配任务所指定的资源总数额和分配份数;按照分配份数对资源总数额进行划分,得到多于一份资源数额;将多于一份资源数额依次加入存储于内存的资源队列中。
在一个实施例中,请求获取模块1201还用于通过内存存储型数据库的线程获取资源分配请求。标识入队模块1202还用于通过线程将资源分配请求相应的用户标识加入存储于内存的用户队列。位置获取模块1203还用于通过线程执行获取用户标识加入用户队列后所处的队列位置。数额确定模块1204还用于通过线程执行存储于内存的资源队列中,确定队列位置处的资源数额。资源分配模块1205还用于通过线程执行将确定的资源数额相应的资源分配至用户标识相应的资源账户。
在一个实施例中,线程为一个内存存储型数据库实例的单线程。资源分配装置1200还包括数据回滚模块1207,当单线程执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤,获取用户标识加入用户队列后所处的队列位置的步骤,在存储于内存的资源队列中,确定队列位置处的资源数额的步骤,以及将确定的资源数额相应的资源分配至用户标识相应的资源账户的步骤的其中一个步骤失败时,则将内存存储型数据库实例的数据状态,恢复至执行将资源分配请求相应的用户标识加入存储于内存的用户队列的步骤之前的状态。
在一个实施例中,资源分配装置1200可以实现为一种计算机程序的形式,在数据库服务器上执行。请求获取模块1201还用于获取业务服务器传递、且由用户终端发起的资源分配请求;其中,资源分配请求,由业务服务器在资源分配请求相应的用户标识不存在于业务服务器的筛选队列中、且筛选队列的队列长度未达到预设长度时发起传递。
在一个实施例中,请求获取模块1201还用于获取业务服务器传递的资源分配请求;资源分配请求由用户终端发起传递至网关设备,并由网关设备根据资源分配请求相应的房间标识确定业务服务器标识后,传递至业务服务器标识对应的业务服务器。
在一个实施例中,当房间标识所对应的成员数量大于预设数量时,预设长度小于房间标识相应资源分配任务所指定的分配份数;当房间标识所对应的成员数量小于或者等于预设数量时,预设长度为房间标识相应资源分配任务所指定的分配份数。
如图13所示,在一个具体的实施例中,资源分配装置1200具体包括:资源划分模块1206、请求获取模块1201、标识入队模块1202、位置获取模块1203、数额确定模块1204、资源分配模块1205和数据回滚模块1207。
上述资源分配装置1200,在获取资源分配请求后,即自动将资源分配请求相应的用户标识加入存储于内存的用户队列,然后获取用户标识加入用户队列后所处的队列位置,这样即可快速地在同样存储于内存的资源队列中确定获取的队列位置处的资源数额,以将确定的资源数额相应的资源分配至用户标识相应的资源账户,完成资源分配。其中,资源队列是先配置好的、且资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额,这样提前将要分配的资源数额划分好,通过一个实时的用户队列和一个已有的资源队列即可相互配合快速完成资源分配,提高了资源分配效率;而且,用户队列和资源队列都是存储在内存中,通过将资源分配过程转移至内存中进行,进一步提高了资源分配效率。
如图14所示,在一个实施例中,提供了一种资源获取装置1400。参照图14,该资源获取装置1400包括:播放模块1401、入口展示模块1402、触发模块1403和结果展示模块1404
播放模块1401,用于在社交页面中播放资源分享媒体数据。
入口展示模块1402,用于在播放资源分享媒体数据时,展示资源分享入口。
触发模块1403,用于通过对应资源分享入口的操作,触发携带用户标识的资源分配请求;资源分配请求用于触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户。
结果展示模块1404,用于在社交页面中展示资源数额。
在一个实施例中,资源分配请求用于在用户队列的队列长度小于资源队列的队列长度时,触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户;资源分配请求还用于在用户队列的队列长度等于资源队列的队列长度时,响应于资源分配请求反馈资源分配结束消息。结果展示模块1404还用于在社交页面中展示资源分配结束消息。
图15示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图15所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现资源分配方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行资源分配方法。
图16示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图16所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现资源获取方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行资源获取方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图15和16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的资源分配/获取装置可以实现为一种计算机程序的形式,计算机程序可在如图15/16所示的计算机设备上运行。计算机设备的存储器中可存储组成该资源分配/获取装置的各个程序模块,比如,图12所示的请求获取模块1201、标识入队模块1202、位置获取模块1203、数额确定模块1204和资源分配模块1205,或者,图14所示的播放模块1401、如口展示模块1402、触发模块1403和结果展示模块1404。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的资源分配/获取方法中的步骤。
例如,图15所示的计算机设备可以通过如图12所示的资源分配装置中的请求获取模块1201获取资源分配请求。通过标识入队模块1202将资源分配请求相应的用户标识加入存储于内存的用户队列。通过位置获取模块1203获取用户标识加入用户队列后所处的队列位置。通过数额确定模块1204在存储于内存的资源队列中,确定队列位置处的资源数额;资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额。通过资源分配模块1205将确定的资源数额相应的资源分配至用户标识相应的资源账户。
再例如,图16所示的计算机设备可以通过如图14所示的资源获取装置中的播放模块1401在社交页面中播放资源分享媒体数据。通过入口展示模块1402在播放资源分享媒体数据时,展示资源分享入口。通过触发模块1403通过对应资源分享入口的操作,触发携带用户标识的资源分配请求;资源分配请求用于触发将用户标识加入用户队列,并确定用户标识在用户队列中的目标位置,以及按照资源队列中目标位置处的资源数额,将相应的资源分配予用户标识对应的资源账户。还通过结果展示模块1404在社交页面中展示资源数额。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述资源分配/获取方法的步骤。此处资源分配/获取方法的步骤可以是上述各个实施例的资源分配/获取方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述资源分配/获取方法的步骤。此处资源分配/获取方法的步骤可以是上述各个实施例的资源分配/获取方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种资源分配方法,包括:
获取资源分配请求;
将所述资源分配请求相应的用户标识加入存储于内存的用户队列;
获取所述用户标识加入所述用户队列后所处的队列位置;
在存储于所述内存的资源队列中,确定所述队列位置处的资源数额;所述资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;
将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述用户队列的队列长度小于所述资源队列的队列长度时,则执行将所述资源分配请求相应的用户标识加入存储于内存的用户队列的步骤;
当所述用户队列的队列长度等于所述资源队列的队列长度时,则响应于所述资源分配请求反馈资源分配结束消息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述资源分配请求相应的用户标识;
查询与所述用户标识对应存储的资源分配标识;
当所述资源分配标识表示尚未分配资源至所述用户标识相应的资源账户时,则比较所述用户队列与所述资源队列的队列长度。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取资源分配任务;每个所述资源分配任务对应一轮资源分配过程;
确定所述资源分配任务所指定的资源总数额和分配份数;
按照所述分配份数对所述资源总数额进行划分,得到多于一份资源数额;
将所述多于一份资源数额依次加入存储于内存的资源队列中。
5.根据权利要求1所述的方法,其特征在于,所述获取资源分配请求包括:
通过内存存储型数据库的线程获取资源分配请求;
继续通过所述线程执行将所述资源分配请求相应的用户标识加入存储于内存的用户队列的步骤,所述在存储于所述内存的资源队列中,确定所述队列位置处的资源数额的步骤,以及所述将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户的步骤。
6.根据权利要求5所述的方法,其特征在于,所述线程为一个内存存储型数据库实例的单线程;所述方法还包括:
当所述单线程执行将所述资源分配请求相应的用户标识加入存储于内存的用户队列的步骤,所述获取所述用户标识加入所述用户队列后所处的队列位置的步骤,所述在存储于所述内存的资源队列中,确定所述队列位置处的资源数额的步骤,以及所述将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户的步骤的其中一个步骤失败时,则
将所述内存存储型数据库实例的数据状态,恢复至执行将所述资源分配请求相应的用户标识加入存储于内存的用户队列的步骤之前的状态。
7.根据权利要求1所述的方法,其特征在于,所述方法应用于数据库服务器,所述获取资源分配请求,包括:
获取业务服务器传递、且由用户终端发起的资源分配请求;
其中,所述资源分配请求,由所述业务服务器在所述资源分配请求相应的用户标识不存在于所述业务服务器的筛选队列中、且所述筛选队列的队列长度未达到预设长度时发起传递。
8.根据权利要求7所述的方法,其特征在于,所述获取业务服务器传递、且由用户终端发起的资源分配请求,包括:
获取业务服务器传递的资源分配请求;所述资源分配请求由用户终端发起传递至网关设备,并由所述网关设备根据所述资源分配请求相应的房间标识确定业务服务器标识后,传递至所述业务服务器标识对应的业务服务器。
9.根据权利要求8所述的方法,其特征在于,所述当所述房间标识所对应的成员数量大于预设数量时,所述预设长度小于所述房间标识相应资源分配任务所指定的分配份数;当所述房间标识所对应的成员数量小于或者等于预设数量时,所述预设长度为所述房间标识相应资源分配任务所指定的分配份数。
10.一种资源获取方法,包括:
在社交页面中播放资源分享媒体数据;
在播放所述资源分享媒体数据时,展示资源分享入口;
通过对应所述资源分享入口的操作,触发携带用户标识的资源分配请求;所述资源分配请求用于触发将所述用户标识加入用户队列,并确定所述用户标识在所述用户队列中的目标位置,以及按照资源队列中所述目标位置处的资源数额,将相应的资源分配予所述用户标识对应的资源账户;
在所述社交页面中展示所述资源数额。
11.根据权利要求10所述的方法,其特征在于,所述资源分配请求用于在所述用户队列的队列长度小于所述资源队列的队列长度时,触发将所述用户标识加入用户队列,并确定所述用户标识在所述用户队列中的目标位置,以及按照资源队列中所述目标位置处的资源数额,将相应的资源分配予所述用户标识对应的资源账户;所述资源分配请求还用于在所述用户队列的队列长度等于所述资源队列的队列长度时,响应于所述资源分配请求反馈资源分配结束消息;
所述方法还包括:
在所述社交页面中展示所述资源分配结束消息。
12.一种资源分配装置,包括:
请求获取模块,用于获取资源分配请求;
标识入队模块,用于将所述资源分配请求相应的用户标识加入存储于内存的用户队列;
位置获取模块,用于获取所述用户标识加入所述用户队列后所处的队列位置;
数额确定模块,用于在存储于所述内存的资源队列中,确定所述队列位置处的资源数额;所述资源队列包括的各资源数额之和为一轮资源分配过程中所分配资源的总数额;
资源分配模块,用于将确定的所述资源数额相应的资源分配至所述用户标识相应的资源账户。
13.一种资源获取装置,包括:
播放模块,用于在社交页面中播放资源分享媒体数据;
入口展示模块,用于在播放所述资源分享媒体数据时,展示资源分享入口;
触发模块,用于通过对应所述资源分享入口的操作,触发携带用户标识的资源分配请求;所述资源分配请求用于触发将所述用户标识加入用户队列,并确定所述用户标识在所述用户队列中的目标位置,以及按照资源队列中所述目标位置处的资源数额,将相应的资源分配予所述用户标识对应的资源账户;
结果展示模块,用于在所述社交页面中展示所述资源数额。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910407198.8A CN111949393B (zh) | 2019-05-16 | 2019-05-16 | 资源分配、获取方法、装置、存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910407198.8A CN111949393B (zh) | 2019-05-16 | 2019-05-16 | 资源分配、获取方法、装置、存储介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949393A true CN111949393A (zh) | 2020-11-17 |
CN111949393B CN111949393B (zh) | 2024-02-06 |
Family
ID=73335829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910407198.8A Active CN111949393B (zh) | 2019-05-16 | 2019-05-16 | 资源分配、获取方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949393B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419826A (zh) * | 2021-05-11 | 2021-09-21 | 北京天云融创软件技术有限公司 | 一种任务调度的灵活资源限制方法 |
CN114007111A (zh) * | 2021-10-28 | 2022-02-01 | 北京达佳互联信息技术有限公司 | 资源分发方法、装置、电子设备及存储介质 |
CN114189702A (zh) * | 2021-12-07 | 2022-03-15 | 广州市百果园网络科技有限公司 | 基于直播间的资源对象分配方法、装置、设备及存储介质 |
CN114816687A (zh) * | 2021-01-22 | 2022-07-29 | 京东方科技集团股份有限公司 | 集群资源控制方法、装置及存储介质 |
CN115269207A (zh) * | 2022-09-29 | 2022-11-01 | 浙江省公众信息产业有限公司无线运营分公司 | 一种用于vCPE网元分配资源的方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954468A (zh) * | 2015-06-18 | 2015-09-30 | 小米科技有限责任公司 | 资源的分配方法及装置 |
CN105915437A (zh) * | 2016-04-14 | 2016-08-31 | 浙江翼信科技有限公司 | 一种电子资源分发方法和装置 |
WO2017124932A1 (zh) * | 2016-01-21 | 2017-07-27 | 腾讯科技(深圳)有限公司 | 资源分享方法和终端 |
CN107808282A (zh) * | 2016-09-09 | 2018-03-16 | 腾讯科技(深圳)有限公司 | 虚拟物品包发送方法及装置 |
CN108768830A (zh) * | 2018-05-24 | 2018-11-06 | 上海掌门科技有限公司 | 用于推送信息、显示信息的方法和设备 |
CN109242457A (zh) * | 2018-09-21 | 2019-01-18 | 刘磊 | 一种抢红包的方法及系统 |
-
2019
- 2019-05-16 CN CN201910407198.8A patent/CN111949393B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954468A (zh) * | 2015-06-18 | 2015-09-30 | 小米科技有限责任公司 | 资源的分配方法及装置 |
WO2017124932A1 (zh) * | 2016-01-21 | 2017-07-27 | 腾讯科技(深圳)有限公司 | 资源分享方法和终端 |
CN105915437A (zh) * | 2016-04-14 | 2016-08-31 | 浙江翼信科技有限公司 | 一种电子资源分发方法和装置 |
CN107808282A (zh) * | 2016-09-09 | 2018-03-16 | 腾讯科技(深圳)有限公司 | 虚拟物品包发送方法及装置 |
CN108768830A (zh) * | 2018-05-24 | 2018-11-06 | 上海掌门科技有限公司 | 用于推送信息、显示信息的方法和设备 |
CN109242457A (zh) * | 2018-09-21 | 2019-01-18 | 刘磊 | 一种抢红包的方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816687A (zh) * | 2021-01-22 | 2022-07-29 | 京东方科技集团股份有限公司 | 集群资源控制方法、装置及存储介质 |
CN113419826A (zh) * | 2021-05-11 | 2021-09-21 | 北京天云融创软件技术有限公司 | 一种任务调度的灵活资源限制方法 |
CN114007111A (zh) * | 2021-10-28 | 2022-02-01 | 北京达佳互联信息技术有限公司 | 资源分发方法、装置、电子设备及存储介质 |
CN114007111B (zh) * | 2021-10-28 | 2024-05-10 | 北京达佳互联信息技术有限公司 | 资源分发方法、装置、电子设备及存储介质 |
CN114189702A (zh) * | 2021-12-07 | 2022-03-15 | 广州市百果园网络科技有限公司 | 基于直播间的资源对象分配方法、装置、设备及存储介质 |
CN114189702B (zh) * | 2021-12-07 | 2023-09-26 | 广州市百果园网络科技有限公司 | 基于直播间的资源对象分配方法、装置、设备及存储介质 |
CN115269207A (zh) * | 2022-09-29 | 2022-11-01 | 浙江省公众信息产业有限公司无线运营分公司 | 一种用于vCPE网元分配资源的方法和系统 |
CN115269207B (zh) * | 2022-09-29 | 2022-12-23 | 浙江省公众信息产业有限公司无线运营分公司 | 一种用于vCPE网元分配资源的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111949393B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949393B (zh) | 资源分配、获取方法、装置、存储介质和设备 | |
US11277469B2 (en) | Efficient and reliable host distribution of totally ordered global state | |
US8826284B1 (en) | Scalable task scheduling | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、系统及存储介质 | |
US8645498B2 (en) | Transaction processing system | |
CN110032571A (zh) | 业务流程处理方法、装置、存储介质及计算设备 | |
US9372880B2 (en) | Reclamation of empty pages in database tables | |
CN107872398A (zh) | 高并发数据处理方法、装置及计算机可读存储介质 | |
CN106446168B (zh) | 一种面向分布式数据仓库的加载客户端实现方法 | |
US20230405479A1 (en) | Data processing method and apparatus, device and storage medium | |
CN103501237B (zh) | 设备管理方法、管理平台、设备及系统 | |
US10158642B2 (en) | Coherent distributed logging | |
CN113467958B (zh) | 一种数据处理方法、装置、设备以及可读存储介质 | |
CN105592110A (zh) | 一种资源调度方法及装置 | |
CN114490826B (zh) | 请求响应方法、数据存储方法、装置、服务器及存储介质 | |
CN116069493A (zh) | 一种数据处理方法、装置、设备以及可读存储介质 | |
CN112988377A (zh) | 用于云服务的资源分配方法、系统和介质 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN110928911A (zh) | 审校请求处理系统、方法、装置、计算机可读存储介质 | |
CN111338571A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN107911317B (zh) | 一种报文调度方法及装置 | |
CN110262892A (zh) | 一种基于分布式存储数据链的票务发布方法、装置及数据链节点 | |
CN111327719B (zh) | 业务处理方法、装置、业务服务器及介质 | |
CN113225396B (zh) | 一种热点数据包分流方法、装置、电子设备及介质 | |
CN117176971A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |