发布信息

库存扣减方法及装置、存储介质和电子设备与流程 专利技术说明

作者:admin      2023-06-28 22:35:03     211



计算;推算;计数设备的制造及其应用技术1.本技术涉及云计算技术领域,具体而言,涉及一种库存扣减方法及装置、存储介质和电子设备。背景技术:2.在电商系统中,经常会有抢购活动,如果抢购的商品每次都去数据库更新库存,数据库承受不住密集的update(更新)操作,那么行锁甚至会升级为表锁,将会导致服务不可用,此时引入缓存技术尤为重要。而且相关技术中,缓存通常的做法是引入redis(一种缓存服务器)或其他类似的内存型数据库,但是仅有一层redis(一种缓存服务器),并发量过大的时候,也会影响到redis(一种缓存服务器)中其他业务的数据请求,从而导致缓存服务器的稳定性和可靠性较低。3.针对相关技术中当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过一层缓存服务器更新库存数据,导致缓存服务器的稳定性和可靠性较低的问题,目前尚未提出有效的解决方案。技术实现要素:4.本技术的主要目的在于提供一种库存扣减方法及装置、存储介质和电子设备,以解决相关技术中当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过一层缓存服务器更新库存数据,导致缓存服务器的稳定性和可靠性较低的问题。5.为了实现上述目的,根据本技术的一个方面,提供了一种库存扣减方法。该方法包括:通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,所述扣减请求用于请求扣减数据库的库存数据,所述应用服务器集群中至少包括多个应用服务器,所述多个应用服务器用于存储从缓存服务器中获取的库存数据,所述缓存服务器用于存储所述数据库的库存数据;响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;将所述处理结果返回至所述客户端。6.进一步地,在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,所述方法还包括:获取所述数据库的初始库存数据;依据所述初始库存数据,确定所述缓存服务器中存储的第一库存数据;依据所述初始库存数据和所述第一库存数据,确定所述应用服务器集群;从所述应用服务器集群中确定所述目标应用服务器。7.进一步地,响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果包括:响应所述扣减请求,获取所述目标应用服务器中的所述目标库存数据;判断所述目标库存数据是否大于预设值;若所述目标库存数据大于所述预设值,则对所述目标应用服务器中的所述目标库存数据进行扣减处理,得到所述处理结果;若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据,并将所述第二库存数据存储在所述目标应用服务器中;对所述目标应用服务器中的所述第二库存数据进行扣减处理,得到所述处理结果。8.进一步地,获取所述目标应用服务器中的所述目标库存数据包括:对所述目标应用服务器设置锁变量,得到设置锁变量的所述目标应用服务器;依据所述设置锁变量的所述目标应用服务器,获取所述目标库存数据。9.进一步地,若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:获取所述目标应用服务器的目标信息,其中,所述目标信息至少包括:所述目标应用服务器的cpu使用率和所述目标应用服务器的内存空间;若所述目标库存数据不大于所述预设值,则基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。10.进一步地,基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据包括:判断所述目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断所述目标应用服务器的内存空间是否大于第二预设阈值;若所述目标应用服务器的cpu使用率大于所述第一预设阈值,和/或,若所述目标应用服务器的内存空间大于所述第二预设阈值,则依据所述cpu使用率计算通过所述目标应用服务器从所述缓存服务器中获取的第三库存数据,并依据所述内存空间计算通过所述目标应用服务器从所述缓存服务器中获取的第四库存数据;比较所述第三库存数据和所述第四库存数据的大小;若所述第三库存数据大于所述第四库存数据,则将所述第四库存数据作为所述第二库存数据;若所述第三库存数据不大于所述第四库存数据,则将所述第三库存数据作为所述第二库存数据。11.进一步地,若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:若所述目标库存数据不大于所述预设值,则获取所述缓存服务器中存储的第五库存数据;判断所述第五库存数据是否大于所述预设值;若所述第五库存数据大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据,其中,所述第五库存数据大于所述第二库存数据;若所述第五库存数据不大于所述预设值,则禁止通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。12.为了实现上述目的,根据本技术的另一方面,提供了一种库存扣减装置。该装置包括:第一接收单元,用于通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,所述扣减请求用于请求扣减数据库的库存数据,所述应用服务器集群中至少包括多个应用服务器,所述多个应用服务器用于存储从缓存服务器中获取的库存数据,所述缓存服务器用于存储所述数据库的库存数据;第一响应单元,用于响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;第一返回单元,用于将所述处理结果返回至所述客户端。13.进一步地,所述装置还包括:第一获取单元,用于在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,获取所述数据库的初始库存数据;第一确定单元,用于依据所述初始库存数据,确定所述缓存服务器中存储的第一库存数据;第二确定单元,用于依据所述初始库存数据和所述第一库存数据,确定所述应用服务器集群;第三确定单元,用于从所述应用服务器集群中确定所述目标应用服务器。14.进一步地,所述第一响应单元包括:第一响应子单元,用于响应所述扣减请求,获取所述目标应用服务器中的所述目标库存数据;第一判断子单元,用于判断所述目标库存数据是否大于预设值;第一处理子单元,用于若所述目标库存数据大于所述预设值,则对所述目标应用服务器中的所述目标库存数据进行扣减处理,得到所述处理结果;第二处理子单元,用于若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据,并将所述第二库存数据存储在所述目标应用服务器中;第三处理子单元,用于对所述目标应用服务器中的所述第二库存数据进行扣减处理,得到所述处理结果。15.进一步地,所述第一响应子单元包括:第一设置模块,用于对所述目标应用服务器设置锁变量,得到设置锁变量的所述目标应用服务器;第一获取模块,用于依据所述设置锁变量的所述目标应用服务器,获取所述目标库存数据。16.进一步地,所述第二处理子单元包括:第二获取模块,用于获取所述目标应用服务器的目标信息,其中,所述目标信息至少包括:所述目标应用服务器的cpu使用率和所述目标应用服务器的内存空间;第三获取模块,用于若所述目标库存数据不大于所述预设值,则基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。17.进一步地,所述第三获取模块包括:第一判断子模块,用于判断所述目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断所述目标应用服务器的内存空间是否大于第二预设阈值;第一计算子模块,用于若所述目标应用服务器的cpu使用率大于所述第一预设阈值,和/或,若所述目标应用服务器的内存空间大于所述第二预设阈值,则依据所述cpu使用率计算通过所述目标应用服务器从所述缓存服务器中获取的第三库存数据,并依据所述内存空间计算通过所述目标应用服务器从所述缓存服务器中获取的第四库存数据;第一比较子模块,用于比较所述第三库存数据和所述第四库存数据的大小;第一确定子模块,用于若所述第三库存数据大于所述第四库存数据,则将所述第四库存数据作为所述第二库存数据;第二确定子模块,用于若所述第三库存数据不大于所述第四库存数据,则将所述第三库存数据作为所述第二库存数据。18.进一步地,所述第二处理子单元包括:第四获取模块,用于若所述目标库存数据不大于所述预设值,则获取所述缓存服务器中存储的第五库存数据;第一判断模块,用于判断所述第五库存数据是否大于所述预设值;第一处理模块,用于若所述第五库存数据大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据,其中,所述第五库存数据大于所述第二库存数据;第二处理模块,用于若所述第五库存数据不大于所述预设值,则禁止通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。19.为了实现上述目的,根据本技术的另一方面,提供了一种计算机可读存储介质,所述存储介质存储程序,其中,所述程序执行上述的任意一项所述的库存扣减方法。20.为了实现上述目的,根据本技术的另一方面,提供了一种电子设备,所述电子设备包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的任意一项所述的库存扣减方法。21.通过本技术,采用以下步骤:通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,扣减请求用于请求扣减数据库的库存数据,应用服务器集群中至少包括多个应用服务器,多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据;响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;将处理结果返回至客户端,解决了相关技术中当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过一层缓存服务器更新库存数据,导致缓存服务器的稳定性和可靠性较低的问题。通过应用服务器集群中的目标应用服务器接收客户端发送的用于请求扣减数据库的库存数据的扣减请求,且应用服务器集群中的多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据,并响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果,再将处理结果返回至客户端,从而当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过应用服务器集群中的目标应用服务器更新库存数据,进而达到了提升缓存服务器的稳定性和可靠性的效果。附图说明22.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:23.图1是根据本技术实施例提供的库存扣减方法的流程图;24.图2是根据本技术实施例提供的库存扣减方法的流程图一;25.图3是根据本技术实施例提供的可选的库存扣减方法的流程图;26.图4是根据本技术实施例提供的库存扣减装置的示意图;27.图5是根据本技术实施例提供的电子设备的示意图。具体实施方式28.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。29.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。30.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。31.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息据等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。32.为了便于描述,以下对本技术实施例涉及的部分名词或术语进行说明:33.行锁:访问数据库的时候,锁定整个行数据,防止并发错误。34.表锁:访问数据库的时候,锁定整个表数据。35.高并发:tps(系统吞吐量)达到5000以上。36.集群:本实施例中指的是应用服务器集群。37.库存:本实施例中是泛指一种计数扣减逻辑,库存扣减是其中典型的应用场景。38.动态:根据机器压力动态调整每台机器单次分配资源的阈值。39.tps:transactions per second(每秒传输的事物处理个数),即服务器每秒处理的事务数。tps是系统吞吐量的常用量化指标。40.系统吞吐量:系统在单位时间内处理请求的数量。41.缓存服务器:缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。42.应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。43.中央处理器(central processing unit,简称cpu)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。44.下面结合优选的实施步骤对本发明进行说明,图1是根据本技术实施例提供的库存扣减方法的流程图,如图1所示,该方法包括如下步骤:45.步骤s101,通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,扣减请求用于请求扣减数据库的库存数据,应用服务器集群中至少包括多个应用服务器,多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据。46.例如,可以先通过缓存服务器获取数据库中初始的库存数据,然后可以使用多个应用服务器建立上述的应用服务器集群,再通过应用服务器集群中的每个应用服务器从缓存服务器中取值。然后可以通过应用服务器集群中的任意一个应用服务器(上述的目标应用服务器)接收客户端发送的请求扣减数据库的库存数据的扣减请求。而且,上述的缓存服务器可以为redis缓存服务器,先初始化库存等计数数据到redis(一种缓存服务器)中。比如,以初始化库存等计数数据为1000为例。假设应用服务器集群的规模是由4台机器组成的集群,应用服务器第一次每台机器取50个值,则redis缓存服务器中剩余1000-4*50=800,即redis缓存服务器中计数器设置为800,每台应用服务器内部的计数器是50,也即,每台应用服务器可以从redis缓存服务器中取值50。47.需要说明的是,上述的缓存服务器不止可以为redis缓存服务器,也可以为其他缓存服务器。48.步骤s102,响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果。49.例如,在响应客户端发送的请求扣减数据库的库存数据的扣减请求时,可以使用应用服务器集群中接收扣减请求的应用服务器响应该扣减请求,即对应用服务器中的50台商品(上述的目标库存数据)的库存数据进行扣减。比如,扣减请求表示从数据库中扣减20台商品,则响应该扣减请求之后,应用服务器集群中用于接收扣减请求的应用服务器中剩余的库存数据为50-20=30台商品。50.步骤s103,将处理结果返回至客户端。51.例如,对应用服务器中的50台商品(上述的目标库存数据)的库存数据进行扣减20台商品之后,将从该应用服务器中扣减了20台商品的消息返回至客户端。52.通过上述的步骤s101至s103,通过应用服务器集群中的目标应用服务器接收客户端发送的用于请求扣减数据库的库存数据的扣减请求,且应用服务器集群中的多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据,并响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果,再将处理结果返回至客户端,从而当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过应用服务器集群中的目标应用服务器更新库存数据,进而达到了提升缓存服务器的稳定性和可靠性的效果。53.可选地,在本技术实施例提供的库存扣减方法中,在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,该方法还包括:获取数据库的初始库存数据;依据初始库存数据,确定缓存服务器中存储的第一库存数据;依据初始库存数据和第一库存数据,确定应用服务器集群;从应用服务器集群中确定目标应用服务器。54.例如,数据库中的初始库存为1000台商品,然后redis缓存服务器中计数器可以设置为800,也即,redis缓存服务器中的库存数据可以为800台商品(上述的第一库存数据),然后剩余1000-800=200台商品的库存数据。假设应用服务器第一次每台机器取50个值,则应用服务器集群中可以有200/50=4台应用服务器,然后可以再从这4台应用服务器中确定任意一个应用服务器(上述的目标应用服务器)用于接收客户端发送的请求扣减数据库的库存数据的扣减请求。55.通过上述的方案,可以根据数据库中的初始库存数据和缓存服务器中的库存数据,快速准确的确定用于接收客户端发送的请求扣减数据库的库存数据的扣减请求的应用服务器。56.可选地,在本技术实施例提供的库存扣减方法中,响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果包括:响应扣减请求,获取目标应用服务器中的目标库存数据;判断目标库存数据是否大于预设值;若目标库存数据大于预设值,则对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;若目标库存数据不大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据,并将第二库存数据存储在目标应用服务器中;对目标应用服务器中的第二库存数据进行扣减处理,得到处理结果。57.例如,当扣减请求到应用服务器时,先获取用于接收扣减请求的应用服务器(上述的目标应用服务器)中的可用库存数据(上述的目标库存数据),并通过应用服务器判断本机器中可用值(上述的目标库存数据)是否大于0(上述的预设值),如果应用服务器判断本机器中可用值(上述的目标库存数据)大于0(上述的预设值),则可以正常扣减库存,并将扣减库存消息发送到消息队列,供异步任务做数据库库存扣减操作。如果应用服务器库存扣减到0,也即,若应用服务器判断本机器中可用值(上述的目标库存数据)不大于0(上述的预设值),仍收到库存扣减通知时,则从redis缓存服务器中继续取值,然后在从redis缓存服务器中取值之后,再进行扣减库存的操作,并将扣减库存消息发送到消息队列,供异步任务做数据库库存扣减操作。58.综上所述,当应用服务器中的库存数据扣减到0时,可以再从redis缓存服务器中取值,从而可以实现正常的扣减库存操作。59.可选地,在本技术实施例提供的库存扣减方法中,获取目标应用服务器中的目标库存数据包括:对目标应用服务器设置锁变量,得到设置锁变量的目标应用服务器;依据设置锁变量的目标应用服务器,获取目标库存数据。60.例如,在获取用于接收扣减请求的应用服务器(上述的目标应用服务器)中的可用库存数据(上述的目标库存数据)之前,可以先给应用服务器设置锁变量,然后再从设置了锁变量的应用服务器中读数,读取该应用服务器中的库存数据。61.通过上述的方案,可以避免出现读数和扣减的过程中被别的线程扣减,导致扣减为负数,无法正常扣减的情况。62.可选地,在本技术实施例提供的库存扣减方法中,若目标库存数据不大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据包括:获取目标应用服务器的目标信息,其中,目标信息至少包括:目标应用服务器的cpu使用率和目标应用服务器的内存空间;若目标库存数据不大于预设值,则基于目标信息,通过目标应用服务器从缓存服务器中获取第二库存数据。63.例如,如果应用服务器库存扣减到0,也即,若应用服务器判断本机器中可用值(上述的目标库存数据)不大于0(上述的预设值),仍收到库存扣减通知时,则判断cpu压力(上述的cpu使用率),以及可用内存空间(上述的内存空间),根据这两个指标通过应用服务器从redis缓存服务器中取值,也即,根据这两个指标做动态数据递减。64.通过上述的方案,可以避免出现随着机器压力的升高,其处理数据的速率变慢的情况,从而可以让空闲机器处理更多的数据,进而可以提升处理数据请求的效率。65.图2是根据本技术实施例提供的库存扣减方法的流程图一,如图2所示,在本技术实施例提供的库存扣减方法中,基于目标信息,通过目标应用服务器从缓存服务器中获取第二库存数据包括:66.步骤s201,判断目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断目标应用服务器的内存空间是否大于第二预设阈值;67.步骤s202,若目标应用服务器的cpu使用率大于第一预设阈值,和/或,若目标应用服务器的内存空间大于第二预设阈值,则依据cpu使用率计算通过目标应用服务器从缓存服务器中获取的第三库存数据,并依据内存空间计算通过目标应用服务器从缓存服务器中获取的第四库存数据;68.步骤s203,比较第三库存数据和第四库存数据的大小;69.步骤s204,若第三库存数据大于第四库存数据,则将第四库存数据作为第二库存数据;70.步骤s205,若第三库存数据不大于第四库存数据,则将第三库存数据作为第二库存数据。71.例如,内存和cpu的判断,两者取最小值,任何一个达到目标值时,即可以做取数的动态更新。具体可以为,假设以cpu使用率50%(上述的第一预设阈值)作为阈值为例,以内存空间60%(上述的第二预设阈值)作为阈值为例,先判断应用服务器的cpu使用率是否大于50%(上述的第一预设阈值),和/或,判断应用服务器的内存空间是否大于60%(上述的第二预设阈值);如果应用服务器的cpu使用率大于50%(上述的第一预设阈值),和/或,如果应用服务器的内存空间大于60%(上述的第二预设阈值),则可以根据“后续每台机器分配数=初始分配数-初始分配数*单位步进值的减少百分数*(cpu使用率-阈值)/步进值”公式计算每台机器分配数(通过应用服务器从redis缓存服务器中获取的第三库存数据);同理,也可以根据“后续每台机器分配数=初始分配数-初始分配数*单位步进值的减少百分数*(内存空间-阈值)/步进值”公式计算每台机器分配数(通过应用服务器从redis缓存服务器中获取的第四库存数据);然后比较两次计算得到的每台机器分配数,两者取最小值作为后续每台机器的分配数。另外,如果应用服务器的cpu使用率不大于50%(上述的第一预设阈值),而且,应用服务器的内存空间不大于60%(上述的第二预设阈值),则可以不做取数的动态更新,直接从redis缓存服务器中获取库存数据。72.需要说明的是,本实施例中上述公式中的步进值可以根据实际场景任意调整,但是要保证最后的分配数为整数。73.综上所述,更新资源的数量采用算法动态计算,可以避免单一机器压力过大而导致空闲机器资源浪费。74.可选地,在本技术实施例提供的库存扣减方法中,若目标库存数据不大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据包括:若目标库存数据不大于预设值,则获取缓存服务器中存储的第五库存数据;判断第五库存数据是否大于预设值;若第五库存数据大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据,其中,第五库存数据大于第二库存数据;若第五库存数据不大于预设值,则禁止通过目标应用服务器从缓存服务器中获取第二库存数据。75.例如,在通过应用服务器从redis缓存服务器中获取库存数据之前,需要判断redis缓存服务器中的剩余可用库存数量(上述的第五库存数据),只有可用余数》0(上述的预设值)时,方可扣减,且最多只能扣减到0。也即,当redis缓存服务器中的剩余可用库存数量(上述的第五库存数据)大于0(上述的预设值)时,可以通过应用服务器从redis缓存服务器中获取库存数据(上述的第二库存数据);当redis缓存服务器中的剩余可用库存数量(上述的第五库存数据)不大于0(上述的预设值)时,禁止通过应用服务器从redis缓存服务器中获取库存数据(上述的第二库存数据)。76.通过上述的方案,可以防止将redis缓存服务器中的库存扣减为负数,从而可以避免扣减请求失败。77.例如,本实施例提供了一种高并发集群环境下的库存动态扣减技术,且在本实施例中不仅引入了redis缓存服务器,还引入了应用服务器内存解决方案。78.通过本技术实施例提供的方法,可以克服相关技术中的缓存技术中仅有一层redis,并发量过大时也会影响到redis中其他业务数据请求的不足,提供了一种高并发集群环境下的库存动态扣减技术,通过引入外部独立缓存服务器加应用服务器本地缓存,且应用服务器集群中每个机器动态更新一批资源的数量,来保证高并发环境下的库存扣减,从而保证系统能正常对外提供服务。79.本实施例围绕高并发集群场景,采用外部独立缓存服务器加应用服务器本地缓存,且应用服务器集群中每个机器动态更新一批资源的数量的方式,保证高并发环境下的库存扣减。从库存数据初始化到库存数据最终入库。而且,图3是根据本技术实施例提供的可选的库存扣减方法的流程图,如图3所示,先初始化数据库的库存数据到redis等独立缓存服务器中,然后再设置包含多个应用服务器的应用服务器集群,通过应用服务器集群中的每个应用服务器从redis缓存服务器中取值,然后当客户端发送扣减数据库的库存数据的扣减请求时,可以通过应用服务器集群中的任意一个应用服务器接收该扣减请求,并在该应用服务器上进行扣减操作,在进行完扣减操作之后,可以将扣减库存的消息(即从哪个应用服务器中扣减了多少库存数据的消息)通知到消息队列。具体可以如下:80.先初始化库存等计数数据到redis缓存服务器中,本实施例中可以以1000为例。假设应用服务器集群规模是4台机器组成的集群,应用服务器第一次每台机器取50个值,则redis中剩余1000-4*50=800,即redis中计数器设置为800,每台应用服务器内部的计数器是50。81.在后续扣减之前,需要判断redis缓存服务器中的剩余可用库存数量,为防止扣减为负数,只有可用余数》0时,方可扣减,且最多只能扣减到0。此外,为防止读数和扣减的过程中被别的线程扣减了,导致扣减为负数,应该在读数之前给redis缓存服务器设置锁变量。为防止设置锁变量的线程被kill(结束),不能释放锁,还需要设置过期时间,最大为1s,即:setnx(“lock”,1000),只有加锁成功了,才能读数并扣减库存。其中,“1000”表示设置的过期时间为1s。82.之后每次请求到应用服务器时,应用服务器判断本机器中可用值是否大于0,大于0则可以正常扣减库存,并将扣减库存消息发送到消息队列,供异步任务做数据库库存扣减操作。如果应用服务器库存扣减到0,仍收到库存扣减通知时,则判断cpu压力,以及可用内存空间,根据这两个指标做动态数据递减。做这个判断是因为,随着机器压力的升高,其处理数据的速率必将变慢,应该让空闲机器处理更多的数据。83.算法描述:以cpu使用率50%作为阈值为例,如果cpu使用率每上升5%,则一次取数减去10%,例如cpu使用率达到了55%,则取数:50-50*10%*[(55%-50%)/5%]=45。但是如果在阈值以上,还没到下一个阈值,则仍然按照当前阈值计算,例如,cpu使用率达到了66%或69%,没到65%之后的阈值70%,仍然按照65%计算,即:50-50*10%*[(65%-50%)/5%]=35。[0084]这样计算的好处在于,即使cpu达到了99%,仍然能取到数据处理,所以在计算时,向下取数,而不是向上取数。这个阈值可以根据实际情况灵活调整。内存计算方式同理cpu计算方式,此处不再赘述。内存和cpu的判断,两者取最小值,任何一个达到目标值时,即可以做取数的动态更新。每处理一个数据,应当将消息写入到消息队列,异步线程以固定速率做数据库库存扣减动作。[0085]本实施例中初始化分配的公式可以表述为:[0086]每台机器初始分配数=(总数/机器数)/分配次数;[0087]后续每台机器分配数=初始分配数-初始分配数*单位步进值的减少百分数*(cpu使用率-阈值)/步进值;[0088]其中,分配次数,步进值可以根据实际场景任意调整,但是要保证最后的分配数为整数。此公式中cpu使用率替代为内存使用率之后形成内存运算公式,两者取最小值作为后续每台机器的分配数。[0089]另外,通过本实施例提供的一种新的高并发集群环境下的库存动态扣减技术,该技术通过引入外部独立缓存服务器加应用服务器本地缓存,且应用服务器集群中每个机器采用动态策略更新一批资源的数量,保证高并发环境下的库存扣减,其主要创新点如下:[0090](1)设计出外部独立缓存服务器加应用服务器本地缓存的体系结构,有效降低业务高峰期的数据库压力;[0091](2)更新资源的数量采用算法动态计算,避免单一机器压力过大而导致空闲机器资源浪费。[0092]综上,本技术实施例提供的库存扣减方法,通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,扣减请求用于请求扣减数据库的库存数据,应用服务器集群中至少包括多个应用服务器,多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据;响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;将处理结果返回至客户端,解决了相关技术中当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过一层缓存服务器更新库存数据,导致缓存服务器的稳定性和可靠性较低的问题。通过应用服务器集群中的目标应用服务器接收客户端发送的用于请求扣减数据库的库存数据的扣减请求,且应用服务器集群中的多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据,并响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果,再将处理结果返回至客户端,从而当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过应用服务器集群中的目标应用服务器更新库存数据,进而达到了提升缓存服务器的稳定性和可靠性的效果。[0093]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。[0094]本技术实施例还提供了一种库存扣减装置,需要说明的是,本技术实施例的库存扣减装置可以用于执行本技术实施例所提供的用于库存扣减方法。以下对本技术实施例提供的库存扣减装置进行介绍。[0095]图4是根据本技术实施例的库存扣减装置的示意图。如图4所示,该装置包括:第一接收单元401、第一响应单元402和第一返回单元403。[0096]具体地,第一接收单元401,用于通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,扣减请求用于请求扣减数据库的库存数据,应用服务器集群中至少包括多个应用服务器,多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据;[0097]第一响应单元402,用于响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;[0098]第一返回单元403,用于将处理结果返回至客户端。[0099]综上,本技术实施例提供的库存扣减装置,通过第一接收单元401通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,扣减请求用于请求扣减数据库的库存数据,应用服务器集群中至少包括多个应用服务器,多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据;第一响应单元402响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;第一返回单元403将处理结果返回至客户端,解决了相关技术中当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过一层缓存服务器更新库存数据,导致缓存服务器的稳定性和可靠性较低的问题。通过应用服务器集群中的目标应用服务器接收客户端发送的用于请求扣减数据库的库存数据的扣减请求,且应用服务器集群中的多个应用服务器用于存储从缓存服务器中获取的库存数据,缓存服务器用于存储数据库的库存数据,并响应扣减请求,对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果,再将处理结果返回至客户端,从而当单位时间内同时处理的扣减数据库库存请求的数量过多时,通过应用服务器集群中的目标应用服务器更新库存数据,进而达到了提升缓存服务器的稳定性和可靠性的效果。[0100]可选地,在本技术实施例提供的库存扣减装置中,该装置还包括:第一获取单元,用于在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,获取数据库的初始库存数据;第一确定单元,用于依据初始库存数据,确定缓存服务器中存储的第一库存数据;第二确定单元,用于依据初始库存数据和第一库存数据,确定应用服务器集群;第三确定单元,用于从应用服务器集群中确定目标应用服务器。[0101]可选地,在本技术实施例提供的库存扣减装置中,第一响应单元包括:第一响应子单元,用于响应扣减请求,获取目标应用服务器中的目标库存数据;第一判断子单元,用于判断目标库存数据是否大于预设值;第一处理子单元,用于若目标库存数据大于预设值,则对目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;第二处理子单元,用于若目标库存数据不大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据,并将第二库存数据存储在目标应用服务器中;第三处理子单元,用于对目标应用服务器中的第二库存数据进行扣减处理,得到处理结果。[0102]可选地,在本技术实施例提供的库存扣减装置中,第一响应子单元包括:第一设置模块,用于对目标应用服务器设置锁变量,得到设置锁变量的目标应用服务器;第一获取模块,用于依据设置锁变量的目标应用服务器,获取目标库存数据。[0103]可选地,在本技术实施例提供的库存扣减装置中,第二处理子单元包括:第二获取模块,用于获取目标应用服务器的目标信息,其中,目标信息至少包括:目标应用服务器的cpu使用率和目标应用服务器的内存空间;第三获取模块,用于若目标库存数据不大于预设值,则基于目标信息,通过目标应用服务器从缓存服务器中获取第二库存数据。[0104]可选地,在本技术实施例提供的库存扣减装置中,第三获取模块包括:第一判断子模块,用于判断目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断目标应用服务器的内存空间是否大于第二预设阈值;第一计算子模块,用于若目标应用服务器的cpu使用率大于第一预设阈值,和/或,若目标应用服务器的内存空间大于第二预设阈值,则依据cpu使用率计算通过目标应用服务器从缓存服务器中获取的第三库存数据,并依据内存空间计算通过目标应用服务器从缓存服务器中获取的第四库存数据;第一比较子模块,用于比较第三库存数据和第四库存数据的大小;第一确定子模块,用于若第三库存数据大于第四库存数据,则将第四库存数据作为第二库存数据;第二确定子模块,用于若第三库存数据不大于第四库存数据,则将第三库存数据作为第二库存数据。[0105]可选地,在本技术实施例提供的库存扣减装置中,第二处理子单元包括:第四获取模块,用于若目标库存数据不大于预设值,则获取缓存服务器中存储的第五库存数据;第一判断模块,用于判断第五库存数据是否大于预设值;第一处理模块,用于若第五库存数据大于预设值,则通过目标应用服务器从缓存服务器中获取第二库存数据,其中,第五库存数据大于第二库存数据;第二处理模块,用于若第五库存数据不大于预设值,则禁止通过目标应用服务器从缓存服务器中获取第二库存数据。[0106]库存扣减装置包括处理器和存储器,上述第一接收单元401、第一响应单元402和第一返回单元403等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。[0107]处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来达到提升缓存服务器的稳定性和可靠性的效果。[0108]存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。[0109]本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述库存扣减方法。[0110]本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述库存扣减方法。[0111]如图5所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,所述扣减请求用于请求扣减数据库的库存数据,所述应用服务器集群中至少包括多个应用服务器,所述多个应用服务器用于存储从缓存服务器中获取的库存数据,所述缓存服务器用于存储所述数据库的库存数据;响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;将所述处理结果返回至所述客户端。[0112]处理器执行程序时还实现以下步骤:在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,所述方法还包括:获取所述数据库的初始库存数据;依据所述初始库存数据,确定所述缓存服务器中存储的第一库存数据;依据所述初始库存数据和所述第一库存数据,确定所述应用服务器集群;从所述应用服务器集群中确定所述目标应用服务器。[0113]处理器执行程序时还实现以下步骤:响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果包括:响应所述扣减请求,获取所述目标应用服务器中的所述目标库存数据;判断所述目标库存数据是否大于预设值;若所述目标库存数据大于所述预设值,则对所述目标应用服务器中的所述目标库存数据进行扣减处理,得到所述处理结果;若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据,并将所述第二库存数据存储在所述目标应用服务器中;对所述目标应用服务器中的所述第二库存数据进行扣减处理,得到所述处理结果。[0114]处理器执行程序时还实现以下步骤:获取所述目标应用服务器中的所述目标库存数据包括:对所述目标应用服务器设置锁变量,得到设置锁变量的所述目标应用服务器;依据所述设置锁变量的所述目标应用服务器,获取所述目标库存数据。[0115]处理器执行程序时还实现以下步骤:若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:获取所述目标应用服务器的目标信息,其中,所述目标信息至少包括:所述目标应用服务器的cpu使用率和所述目标应用服务器的内存空间;若所述目标库存数据不大于所述预设值,则基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。[0116]处理器执行程序时还实现以下步骤:基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据包括:判断所述目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断所述目标应用服务器的内存空间是否大于第二预设阈值;若所述目标应用服务器的cpu使用率大于所述第一预设阈值,和/或,若所述目标应用服务器的内存空间大于所述第二预设阈值,则依据所述cpu使用率计算通过所述目标应用服务器从所述缓存服务器中获取的第三库存数据,并依据所述内存空间计算通过所述目标应用服务器从所述缓存服务器中获取的第四库存数据;比较所述第三库存数据和所述第四库存数据的大小;若所述第三库存数据大于所述第四库存数据,则将所述第四库存数据作为所述第二库存数据;若所述第三库存数据不大于所述第四库存数据,则将所述第三库存数据作为所述第二库存数据。[0117]处理器执行程序时还实现以下步骤:若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:若所述目标库存数据不大于所述预设值,则获取所述缓存服务器中存储的第五库存数据;判断所述第五库存数据是否大于所述预设值;若所述第五库存数据大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据,其中,所述第五库存数据大于所述第二库存数据;若所述第五库存数据不大于所述预设值,则禁止通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。[0118]本文中的设备可以是服务器、pc、pad、手机等。[0119]本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求,其中,所述扣减请求用于请求扣减数据库的库存数据,所述应用服务器集群中至少包括多个应用服务器,所述多个应用服务器用于存储从缓存服务器中获取的库存数据,所述缓存服务器用于存储所述数据库的库存数据;响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果;将所述处理结果返回至所述客户端。[0120]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在通过应用服务器集群中的目标应用服务器接收客户端发送的扣减请求之前,所述方法还包括:获取所述数据库的初始库存数据;依据所述初始库存数据,确定所述缓存服务器中存储的第一库存数据;依据所述初始库存数据和所述第一库存数据,确定所述应用服务器集群;从所述应用服务器集群中确定所述目标应用服务器。[0121]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:响应所述扣减请求,对所述目标应用服务器中的目标库存数据进行扣减处理,得到处理结果包括:响应所述扣减请求,获取所述目标应用服务器中的所述目标库存数据;判断所述目标库存数据是否大于预设值;若所述目标库存数据大于所述预设值,则对所述目标应用服务器中的所述目标库存数据进行扣减处理,得到所述处理结果;若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据,并将所述第二库存数据存储在所述目标应用服务器中;对所述目标应用服务器中的所述第二库存数据进行扣减处理,得到所述处理结果。[0122]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:获取所述目标应用服务器中的所述目标库存数据包括:对所述目标应用服务器设置锁变量,得到设置锁变量的所述目标应用服务器;依据所述设置锁变量的所述目标应用服务器,获取所述目标库存数据。[0123]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:获取所述目标应用服务器的目标信息,其中,所述目标信息至少包括:所述目标应用服务器的cpu使用率和所述目标应用服务器的内存空间;若所述目标库存数据不大于所述预设值,则基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。[0124]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:基于所述目标信息,通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据包括:判断所述目标应用服务器的cpu使用率是否大于第一预设阈值,和/或,判断所述目标应用服务器的内存空间是否大于第二预设阈值;若所述目标应用服务器的cpu使用率大于所述第一预设阈值,和/或,若所述目标应用服务器的内存空间大于所述第二预设阈值,则依据所述cpu使用率计算通过所述目标应用服务器从所述缓存服务器中获取的第三库存数据,并依据所述内存空间计算通过所述目标应用服务器从所述缓存服务器中获取的第四库存数据;比较所述第三库存数据和所述第四库存数据的大小;若所述第三库存数据大于所述第四库存数据,则将所述第四库存数据作为所述第二库存数据;若所述第三库存数据不大于所述第四库存数据,则将所述第三库存数据作为所述第二库存数据。[0125]当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:若所述目标库存数据不大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取第二库存数据包括:若所述目标库存数据不大于所述预设值,则获取所述缓存服务器中存储的第五库存数据;判断所述第五库存数据是否大于所述预设值;若所述第五库存数据大于所述预设值,则通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据,其中,所述第五库存数据大于所述第二库存数据;若所述第五库存数据不大于所述预设值,则禁止通过所述目标应用服务器从所述缓存服务器中获取所述第二库存数据。[0126]本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0127]本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0128]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0129]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0130]在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。[0131]存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。[0132]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。[0133]还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。[0134]本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0135]以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部