一种资源获取方法及装置
技术领域
本说明书实施例涉及计算机通信技术领域,尤其涉及一种资源获取方法及装置。
背景技术
随着计算机和互联网的不断发展,账户中资源变得极为丰富,例如,资源可以是虚拟资源,例如优惠券、积分等,资源还可以是资金、黄金等物质资源。
在类似企业发放优惠券的场景中,大量用户参与活动,对于获得优惠券的用户,需要从企业账户中获取对应金额的优惠券发放至该用户的用户账户中。而为了防止企业账户中优惠券透支等情况的发生,从企业账户中获取对应金额的优惠券的过程中,需要锁定企业账户,如此一来就导致处理任意一个优惠券获取请求均需要竞争该企业账户的锁定权利。
由于从企业账户中获取对应金额的优惠券的过程中,需要锁定企业账户,处理任意一个优惠券获取请求均需要竞争企业账户的锁定权利,特别是在处理大批量优惠券获取请求的情况下,这种竞争现象更为突出,导致从企业账户中获取对应金额的优惠券的效率降低,无法应对大批量优惠券获取请求的冲击。
发明内容
针对上述技术问题,本说明书实施例提供一种资源获取方法及装置,技术方案如下:
一种资源获取方法,其中将账户拆分为多个子账户,账户中资源按照预设的分配规则分配至所述多个子账户中,由所述多个子账户组成账户池,所述方法包括:
当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
从所获取的子账户中确定目标子账户;
对所述目标子账户进行锁定;
在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
一种资源获取装置,所述装置包括:
账户拆分模块,用于将账户拆分为多个子账户;
资源分配模块,用于账户中资源按照预设的分配规则分配至所述多个子账户中;
账户池组成模块,用于由所述多个子账户组成账户池;
账户池确定模块,用于当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
子账户获取模块,用于从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
子账户确定模块,用于从所获取的子账户中确定目标子账户;
子账户锁定模块,用于对所述目标子账户进行锁定;
资源获取模块,用于在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
本说明书实施例所提供的技术方案,通过将账户拆分为多个子账户,将账户中资源分配至多个子账户中,由多个子账户组成账户池,后续当接收到资源获取请求时,确定与资源获取请求对应的账户池,从账户池中获取未锁定的目标子账户,从目标子账户中获取与资源获取请求对应的资源。如此一来对账户进行扩容,提高了从账户中获取资源的效率,可以有效地应对大批量资源获取请求的冲击。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例的资源获取方法的实时流程示意图;
图2是本说明书实施例的资源获取装置的结构示意图;
图3是用于配置本说明书实施例装置的一种设备的结构示意图。
具体实施方式
随着计算机和互联网的不断发展,账户中资源变得极为丰富,例如,资源可以是虚拟资源,例如可以是优惠券、积分等,另外资源还可以是资金、黄金等物质资源,资源的具体表现形式随着计算机和互联网的不断发展越来越多样化。
如背景技术中所描述的,在类似企业发放优惠券的场景中(或者类似企业发放红包的场景中,诸如此类场景本说明书实施例在此不再一一赘述),大量用户参与企业发放优惠券的活动,对于获得优惠券的用户,需要从企业账户中获取对应金额的优惠券发放至该用户的用户账户中。与此同时,为了防止企业账户中优惠券透支(透支指企业发放的优惠券数量大于企业账户中优惠券数量)等情况的发生,从企业账户中获取对应金额的优惠券的过程中,需要锁定企业账户,如此一来就导致处理任意一个优惠券获取请求均需要竞争该企业账户的锁定权利。
由于从企业账户中获取对应金额的优惠券的过程中,需要锁定企业账户,处理任意一个优惠券获取请求均需要竞争企业账户的锁定权利,特别是在处理大批量优惠券获取请求的情况下,这种竞争现象更为突出(这种竞争现象称为账户热点),导致从企业账户中获取对应金额的优惠券的效率降低,无法应对大批量优惠券获取请求的冲击。
针对上述技术问题,本说明书实施例提供一种资源获取技术方案,通过将账户拆分为多个子账户,将账户中资源按照预设的分配规则分配至多个子账户中,由多个子账户组成账户池,后续当接收到资源获取请求时,确定与资源获取请求对应的账户池,从账户池中获取未锁定的目标子账户,从目标子账户中获取与资源获取请求对应的资源。如此一来对账户进行扩容,提高了从账户中获取资源的效率,可以有效地应对大批量资源获取请求的冲击。
具体的,本说明书实施例提供的技术方案如下:
当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;从与所述资源获取请求对应的账户池中,获取未锁定的子账户;从所获取的子账户中确定目标子账户;对所述目标子账户进行锁定;在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
如图1所示,为本说明书实施例提供的一种资源获取方法的实施流程示意图,该方法具体可以包括以下步骤:
S101,当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
在本说明书实施例中,为了应对大批量资源获取请求的冲击,因此将账户拆分为多个子账户,该账户可以称为主账户。例如对于账户A,可以拆分为子账户A1、子账户A2、子账户A3……,对于账户A可以进行横向扩容,拆分为多个子账户,其中拆分的子账户个数可以根据实际状况确定。
另一方面,对于账户中的资源,可以按照预设的分配规则分配至多个子账户中,本说明书实施例对其中三种分配规则进行距离说明:
其中一种分配规则可以是:平均分配。例如对于账户A中的资源,可以平均分配至子账户A1、子账户A2、子账户A3……。
另外一种分配规则可以是:按需分配,根据每个子账户预设的权重进行资源分配。例如对于账户A中的资源,可以按照子账户A1、子账户A2、子账户A3……等各自的权重进行分配,例如将账户A中十分之一资源分配至子账户A1,将账户A中十分之一资源分配至子账户A2。
另外一种分配规则可以是:动态分配,将账户中部分资源分配至多个子账户中,后续按照预设的监测周期监测每个子账户中资源数量是否小于预设阈值,若子账户中资源数量小于预设阈值,从账户剩余资源中获取一定资源分配至该子账户。
例如对于账户A中的部分资源,可以分配至子账户A1、子账户A2、子账户A3……,后续按照预设的监测周期监测每个子账户中资源是否小于某个预设阈值,若子账户中资源数量小于预设阈值,则从账户A中的剩余资源中获取一定资源分配至该子账户,直至该子账户中资源超过某个预设阈值。
值得注意的是,上述分配规则为本说明书实施例的示例性说明,还可以是其它分配规则,本说明书实施例对分配规则不作限定。
在将账户拆分为多个子账户中之后,可以由这多个子账户组成账户池,其中该账户池对外还是该账户,实际处理资源获取请求的时候可以在任一子账户中进行处理。
例如对于账户A,可以拆分为子账户A1、子账户A2、子账户A3……,由子账户A1、子账户A2、子账户A3……组成账户池,该账户池对外还是账户A,实际处理资源获取请求的时候可以在子账户A1、子账户A2、子账户A3……等任一子账户中进行处理。
后续当接收到资源获取请求时,确定与该资源获取请求对应的账户池,其中资源获取请求中携带账户标识,根据该资源获取请求中携带的账户标识确定与该资源获取请求对应的账户池。例如对于资源获取请求携带的账户标识A,可以确定与该资源获取请求对应的账户池A,其中账户池A对外是账户A。
S102,从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
针对步骤S101所确定的与该资源获取请求对应的账户池,从该账户池中可以获取未锁定的子账户,其中该未锁定的子账户为子账户状态未锁定的子账户。例如该账户池中包括10个子账户,其中4个子账户目前处于锁定状态,则可以获取剩余6个处于未锁定状态的子账户。
S103,从所获取的子账户中确定目标子账户;
针对步骤S102所获取的子账户,可以从中确定一个目标子账户,该目标子账户状态未锁定。其中在确定目标子账户之前,可以优先剔除未满足要求的子账户,具体实现方式如下:
从所获取的子账户中,剔除资源未超过该资源获取请求对应的资源的子账户,从所获取的剩余子账户中确定目标子账户。意味着对于所获取的子账户,如果子账户中资源未超过该资源获取请求对应的资源,将其剔除,在剩余子账户中确定目标子账户。其中在本说明书实施例中,对确定目标子账户的实现方式进行示例性说明:
其中一种确定目标子账户的实现方式为:从所获取的剩余子账户中随机确定目标子账户。对于经过剔除的子账户,可以随机确定一个子账户为目标子账户,例如从子账户A1、子账户A2、子账户A3这三个子账户中,随机确定子账户A1为目标子账户,该目标子账户状态未锁定。
另外一种确定目标子账户的实现方式为:从所获取的剩余子账户中,确定子账户预设权重最大的子账户为目标子账户。对于子账户预设权重或者预设优先级等可以视为预设排序规则,可以根据预设的排序规则从所获取的剩余子账户中确定目标子账户,本说明书实施例对排序规则中的一种进行示例性说明,还可以是其它排序规则,本说明书实施例对此不作限定。
另外一种确定目标子账户的实现方式为:从所获取的剩余子账户中,确定子账户资源数量最多的子账户为目标子账户。对于经过剔除的子账户,确定每个子账户中资源数量,确定资源数据最大的子账户为目标子账户,例如确定子账户A1为目标子账户。
值得注意的是,以上实现方式是本说明书实施例对其中几种实现方式的示例性说明,还可以是其它实现方式,本说明书实施例对此不作限定。
S104,对所述目标子账户进行锁定;
针对S103中所确定的目标子账户,可以锁定该目标子账户,具体可以是锁定该目标子账户中资源。对于锁定该目标账户中资源的实现方式,可以是当前任意实现方式,本说明书实施例对此不作限定。
S105,在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
对目标子账户进行锁定,锁定目标子账户中资源,防止在该目标子账户中并发处理多个资源获取请求。
在目标子账户中资源锁定的情况下,可以从目标子账户中获取与该资源获取请求对应的资源,在从目标子账户中获取与该资源获取请求对应的资源之后,释放该目标子账户,以使该目标子账户回归账户池。
通过上述对本说明书实施例提供的技术方案的描述,通过将账户拆分为多个子账户,将账户中资源按照预设的分配规则分配至多个子账户中,由多个子账户组成账户池,后续当接收到资源获取请求时,确定与资源获取请求对应的账户池,从账户池中获取未锁定的目标子账户,从目标子账户中获取与资源获取请求对应的资源。如此一来对账户进行扩容,提高了从账户中获取资源的效率,可以有效地应对大批量资源获取请求的冲击。
相应于上述方法实施例,本说明书实施例还提供一种资源获取装置,参见图2所示,该装置可以包括:账户拆分模块210、资源分配模块220、账户池组成模块230、账户池确定模块240、子账户获取模块250、子账户确定模块260、子账户锁定模块270、资源获取模块280。
账户拆分模块210,用于将账户拆分为多个子账户;
资源分配模块220,用于账户中资源按照预设的分配规则分配至所述多个子账户中;
账户池组成模块230,用于由所述多个子账户组成账户池;
账户池确定模块240,用于当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
子账户获取模块250,用于从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
子账户确定模块260,用于从所获取的子账户中确定目标子账户;
子账户锁定模块270,用于对所述目标子账户进行锁定;
资源获取模块280,用于在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
在本说明书实施例的一种具体实施方式中,所述子账户确定模块260包括:
子账户剔除模块261,用于从所获取的子账户中,剔除资源未超过所述资源获取请求对应的资源的子账户;
子账户确定子模块262,用于从所获取的剩余子账户中确定目标子账户。
在本说明书实施例的一种具体实施方式中,所述子账户确定子模块262具体用于:
从所获取的剩余子账户中随机确定目标子账户。
在本说明书实施例的一种具体实施方式中,所述子账户确定子模块262具体用于:
从所获取的剩余子账户中,确定子账户预设权重最大的子账户为目标子账户。
在本说明书实施例的一种具体实施方式中,所述子账户确定子模块262具体用于:
从所获取的剩余子账户中,确定子账户资源数量最多的子账户为目标子账户。
在本说明书实施例的一种具体实施方式中,所述装置还包括:
子账户释放模块290,用于从所述目标子账户中获取与所述资源获取请求对应的资源之后,释放所述目标子账户,以使所述目标子账户回归所述账户池。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
通过上述对本说明书实施例提供的技术方案的描述,通过将账户拆分为多个子账户,将账户中资源按照预设的分配规则分配至多个子账户中,由多个子账户组成账户池,后续当接收到资源获取请求时,确定与资源获取请求对应的账户池,从账户池中获取未锁定的目标子账户,从目标子账户中获取与资源获取请求对应的资源。如此一来对账户进行扩容,提高了从账户中获取资源的效率,可以有效地应对大批量资源获取请求的冲击。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的资源获取方法,该方法至少包括:
将账户拆分为多个子账户,账户中资源按照预设的分配规则分配至所述多个子账户中,由所述多个子账户组成账户池;
当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
从所获取的子账户中确定目标子账户;
对所述目标子账户进行锁定;
在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
图3示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器310、存储器320、输入/输出接口330、通信接口340和总线350。其中处理器310、存储器320、输入/输出接口330和通信接口340通过总线350实现彼此之间在设备内部的通信连接。
处理器310可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器320可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器320可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器320中,并由处理器310来调用执行。
输入/输出接口330用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口340用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线350包括一通路,在设备的各个组件(例如处理器310、存储器320、输入/输出接口330和通信接口340)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器310、存储器320、输入/输出接口330、通信接口340以及总线350,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的资源获取方法,该方法至少包括:
将账户拆分为多个子账户,账户中资源按照预设的分配规则分配至所述多个子账户中,由所述多个子账户组成账户池;
当接收到资源获取请求时,确定与所述资源获取请求对应的账户池;
从与所述资源获取请求对应的账户池中,获取未锁定的子账户;
从所获取的子账户中确定目标子账户;
对所述目标子账户进行锁定;
在所述目标子账户锁定的情况下,从所述目标子账户中获取与所述资源获取请求对应的资源。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。