CN106204217A - 资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 - Google Patents
资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 Download PDFInfo
- Publication number
- CN106204217A CN106204217A CN201610536577.3A CN201610536577A CN106204217A CN 106204217 A CN106204217 A CN 106204217A CN 201610536577 A CN201610536577 A CN 201610536577A CN 106204217 A CN106204217 A CN 106204217A
- Authority
- CN
- China
- Prior art keywords
- request
- numerical value
- user
- transactional lock
- resource numerical
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
-
- 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/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Development Economics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置,接收携带用户标识的事务锁获取请求,事务锁获取请求根据当前资源数值转移请求发送,如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,事务锁释放请求根据用户标识的上一个资源数值转移请求对应的操作响应发送,接收事务锁释放请求,根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求,保证并发资源转移操作的成功。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置。
背景技术
随着计算机技术的发展,人们在进行资源数值转移时不仅可以通过线下的方式,还可以通过网络进行资源数值的转移。资源数值转移是指资源从第一帐户到第二帐户,用于标识资源数量的资源数值相应变化的过程。数值转移的资源包括但不限于电子钱包、虚拟红包、电子券、积分券、积分、电子代金券、游戏币、虚拟物品等。
在进行资源数值转移的过程中,可能遇到针对同一用户多笔资源数值转移并发操作的情况,传统的资源数值转移的方法针对并发操作经常出现报错,不能满足资源数值转移的稳定性。
发明内容
基于此,有必要针对上述技术问题,提供一种资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置,提高资源数值转移的稳定性,保证并发资源转移操作的成功。
一种资源数值转移的方法,所述方法包括:
接收携带用户标识的事务锁获取请求,所述事务锁获取请求根据当前资源数值转移请求发送;
如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,所述事务锁释放请求根据所述用户标识的上一个资源数值转移请求对应的操作响应发送;
接收事务锁释放请求,根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定,以使系统服务器根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
一种资源数值转移的装置,所述装置包括:
事务锁获取请求接收模块,用于接收携带用户标识的事务锁获取请求,所述事务锁获取请求根据当前资源数值转移请求发送;
事务锁释放请求等待模块,用于如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,所述事务锁释放请求根据所述用户标识的上一个资源数值转移请求对应的操作响应发送;
资源数值转移模块,用于接收事务锁释放请求,根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定,以使系统服务器根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
上述资源数值转移的方法和装置,通过接收携带用户标识的事务锁获取请求,事务锁获取请求根据当前资源数值转移请求发送,如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,事务锁释放请求根据用户标识的上一个资源数值转移请求对应的操作响应发送,接收事务锁释放请求,根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求,将资源数值转移请求携带的用户标识与用户记录关联,每个用户标识只对应一条用户记录,从而根据用户记录的锁定状态决定资源数值转移请求是否可获得事务锁,对相同的用户有并发操作时,只有一个请求能获取到事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁,保证了并发操作时资源转移有条不紊的进行,提高资源数值转移的稳定性,防止数据出错,保证并发资源转移操作的成功。
一种资源数值转移请求的方法,所述方法包括:
接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在所述用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录;
接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
一种资源数值转移请求的装置,所述装置包括:
事务锁获取请求发送模块,用于接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在所述用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录;
事务锁释放请求发送模块,用于接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
资源数值转移请求模块,用于根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
上述资源数值转移请求的方法和装置,通过接收当前资源数值转移请求,根据当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录,接收上一个资源数值转移请求对应的操作响应,根据操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。将资源数值转移请求携带的用户标识与用户记录关联,每个用户标识只对应一条用户记录,从而根据用户记录的锁定状态决定资源数值转移请求是否可获得事务锁,对相同的用户有并发操作时,只有一个请求能获取到事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁,保证了并发操作时资源转移有条不紊的进行,提高资源数值转移的稳定性,防止数据出错,保证并发资源转移操作的成功。
一种资源数值转移的系统,所述系统包括:
系统服务器,用于接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器;
后台服务器,用于如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求;
所述系统服务器,还用于接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器;
所述后台服务器,还用于根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
所述系统服务器,还用于根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
上述资源数值转移的系统,通过系统服务器和后台服务器的配合,将资源数值转移请求携带的用户标识与用户记录关联,每个用户标识只对应一条用户记录,从而根据用户记录的锁定状态决定资源数值转移请求是否可获得事务锁,对相同的用户有并发操作时,只有一个请求能获取到事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁,保证了并发操作时资源转移有条不紊的进行,提高资源数值转移的稳定性,防止数据出错,保证并发资源转移操作的成功。
附图说明
图1为一个实施例中资源数值转移的方法、资源数值转移请求的方法的应用环境图;
图2为一个实施例中图1中后台服务器的内部结构图;
图3为一个实施例中图1中系统服务器的内部结构图;
图4为一个实施例中资源数值转移的方法的流程图;
图5为一个实施例中解除用户锁定状态的流程图;
图6为一个实施例中事务锁表的示意图;
图7为一个实施例中用户流水记录表的示意图;
图8为一个实施例中资源数值转移请求的方法的流程图;
图9为一个实施例中发送用户状态解锁指令和事务锁释放请求至后台服务器的流程图;
图10为一个实施例中资源数值转移的系统的结构框图;
图11为一个实施例中资源数值转移的装置的结构框图;
图12为一个实施例中资源数值转移请求的装置的结构框图;
图13为一个具体的实施例中并发扣费流程的时序图;
图14为一个具体的实施例中并发扣费异常流程的时序图;
图15为一个具体的实施例中解锁用户的流程的时序图。
具体实施方式
图1为一个实施例中资源数值转移的方法、资源数值转移请求的方法运行的应用环境图。如图1所示,该应用环境包括终端110、系统服务器120、后台服务器130、资源平台服务器140,其中终端110、系数服务器120、后台服务器130、资源平台服务器140可以通过网络进行通信。
终端110可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。系数服务器120可根据终端110的资源数值转移请求向后台服务器130发送事务锁获取请求,后台服务器130根据资源数值转移请求对应的用户记录的锁定状态响应事务锁获取请求,如果资源数值转移请求获取到事务锁,则后台服务器130向资源平台服务器140发送资源数值转移请求。其中各个服务器可以是单个服务器或服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。
在一个实施例中,图1中的后台服务器130的内部结构如图2所示,该后台服务器130包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该后台服务器130的存储介质存储有操作系统、数据库和一种资源数值转移的装置,数据库用于存储数据,如用户记录等,该装置用于实现一种适用于后台服务器130的资源数值转移的方法。该后台服务器130的处理器用于提供计算和控制能力,支撑整个后台服务器130的运行。该后台服务器130的内存为存储介质中的资源数值转移的装置的运行提供环境。该后台服务器130的网络接口用于与系统服务器120通过网络连接通信,比如接收系统服务器120发送的请求,向系统服务器120返回数据等。
在一个实施例中,图1中的系统服务器120的内部结构如图2所示,该系统服务器120包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该系统服务器120的存储介质存储有操作系统、数据库和一种资源数值转移请求的装置,数据库用于存储数据,如用户记录等,该装置用于实现一种适用于系统服务器120的资源数值转移请求的方法。该系统服务器120的处理器用于提供计算和控制能力,支撑整个系统服务器120的运行。该系统服务器120的内存为存储介质中的资源数值转移请求的装置的运行提供环境。该系统服务器120的网络接口用于与后台服务器130、资源平台服务器140通过网络连接通信,比如接收后台服务器120返回的数据,向资源平台服务器140发送请求等。
在一个实施例中,如图4所示,提供了一种资源数值转移的方法,以应用于上述应用环境中的后台服务器来举例说明,包括如下步骤:
步骤S210,接收携带用户标识的事务锁获取请求,事务锁获取请求根据当前资源数值转移请求发送。
具体的,事务是指访问并可能更新数据库中各种数据项的一个程序执行单元,事务锁是数据库的一种事务机制,多笔并发请求同时请求获取事务锁,只有其中一个请求能获得锁,其余请求等待,直到事务锁被释放。事务锁分为行锁和表锁,行锁以行为单位进行锁定,锁定时只锁定一行对应的记录,表中的其它行没有锁定,表锁则是锁定整张表。资源数值转移包括多种转移类型,如冲值、扣费等,当需要进行资源数值转移时,终端发送携带用户标识的资源数值转移请求至系统服务器,资源数值转移请求需要遵循事务锁的机制,需要先获取事务锁,系统服务器根据当前资源数值转移请求生成携带用户标识的事务锁获取请求,发送事务锁获取请求至后台服务器。
步骤S220,如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,事务锁释放请求根据用户标识的上一个资源数值转移请求对应的操作响应发送。
具体的,每个用户标识唯一对应一个用户记录,保证对相同的用户有并发操作时,只有一个请求能获取到事务锁,可将同一用户标识的所有请求放到队列中,先到达的请求先获得事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁。一个用户记录锁定,不影响其它用户对应的请求的操作。其中用户记录的锁定可采取行锁定或表锁定的方式,如果是行锁定,则每个用户记录占用表格的一行,如果是表锁定,则每个用户记录对应一个表格。如果系统服务器收到上一个资源数值转移请求对应的操作响应,则表明上一个资源数值转移请求已经处理,向后台服务器发送事务锁释放请求。在一个实施例中,系统服务器只要收到上一个资源数值转移请求对应的操作响应就发送事务锁释放请求,不管操作响应对应的操作是否成功,如扣费失败或异常,仍然向后台服务器发送事务锁释放请求。但是如果操作响应对应的操作失败,通过锁定用户来禁止后续的操作。在一个实施例中,判断上一个资源数值转移请求对应的操作响应是否成功,如果成功,则向后台服务器发送事务锁释放请求,如果不成功,则重复发送资源数值转移请求至资源平台服务器,直到收到成功的操作响应才发送事务锁释放请求。
步骤S230,接收事务锁释放请求,根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
具体的,上一个资源数值转移请求将事务锁释放后,等待获取事务锁的资源数值转移请求获得事务锁,后台服务器向系统服务器发送当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定。只要有请求获取到事务锁,此请求对应的用户标识对应的用户记录都会锁定。系统服务器收到事务锁获取成功响应,则向资源平台服务器发送当前资源数值转移请求,以完成资源的转移。如系统服务器每次收到扣费或充值请求,都要通过后台数据库的用户事务锁表尝试获取事务锁,同一用户的多笔扣费或充值请求,包括并发扣费、并发充值,或并发扣费和充值,会同时向数据库表尝试获取事务锁,但只有一笔请求成功得到事务锁。
本实施例中,通过接收携带用户标识的事务锁获取请求,事务锁获取请求根据当前资源数值转移请求发送,如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,事务锁释放请求根据用户标识的上一个资源数值转移请求对应的操作响应发送,接收事务锁释放请求,根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求,将资源数值转移请求携带的用户标识与用户记录关联,每个用户标识只对应一条用户记录,从而根据用户记录的锁定状态决定资源数值转移请求是否可获得事务锁,对相同的用户有并发操作时,只有一个请求能获取到事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁,保证了并发操作时资源转移有条不紊的进行,提高资源数值转移的稳定性,防止数据出错,保证并发资源转移操作的成功。
在一个实施例中,方法还包括:如果用户标识对应的用户记录未锁定,则返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
具体的,如果当前资源数值转移请求是用户标识对应的第一个请求,或在其它请求已经响应后发送的,此时用户标识对应的用户记录未锁定,可直接返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
在一个实施例中,事务锁为行级锁,每个用户标识唯一对应一个数据库表的行用户记录,事务锁获取请求包括SELECT语句,事务锁释放请求包括COMMIT语句。
具体的,每个用户记录只占用表格的一行,不需要占用整个表格,节省资源,行级锁在锁定时只锁定一行记录,其它行仍可供其它用户操作,保证一个用户接收到并发请求不影响其它用户的请求。事务锁获取请求是向后台服务器发送SELECT...FOR UPDATE语句,事务锁释放请求是向后台服务器发COMMIT语句。
在一个实施例中,步骤S230之前,还包括:接收系统服务器发送的用户状态锁定请求,用户状态锁定请求为系统服务器判断上一个资源数值转移请求对应的操作异常时发送,根据用户状态锁定请求修改用户标识对应的用户状态为锁定状态。
具体的,系统服务器会检查上一个资源数值转移请求对应的操作响应,从返回的操作响应数据判断本次资源数值转移是否成功,如判断扣费金额是否正确,如果返回的余额不正确或没有返回,则认为是上一个资源数值转移请求对应的操作异常,向后台服务器发送用户状态锁定请求。用户状态用于表示用户当前的操作状态权限,如处于锁定状态则禁止执行请求对应的操作,或处于非锁定状态则可执行请求对应的操作,可通过标志位标识用户状态。
步骤S230中返回当前资源数值转移请求对应的事务锁获取成功响应的步骤之后,还包括:接收用户状态查询请求,并返回用户状态,以使系统服务器在用户状态为锁定状态时,拒绝发送当前资源数值转移请求。
具体的,系统服务器在发送当前资源数值转移请求之前,先查询当前资源数值转移请求对应的用户的用户状态,用户状态反映了用户当前是否具有操作权限,如果用户状态为锁定状态,则说明用户在之前的操作出现了异常,当前不具有操作权限,则拒绝发送当前资源数值转移请求,在资源转移发生异常时,用户状态锁定,可即时检测到异常情况发生,防止异常状态扩散。
在一个实施例中,如图5所示,所述方法还包括:
步骤S310,接收用户状态解锁请求,用户状态解锁请求包括携带用户标识的事务锁获取请求。
具体的,用户状态解锁请求由系统服务器中的离线解锁程序发起,用户状态解锁请求可在系统服务器查询到用户状态为锁定状态后定时发起,解锁程序同样需要遵循事务锁的机制,所以用户状态解锁请求包括携带用户标识的事务锁获取请求,事务锁获取请求用于获取事务锁,如通过后台数据库的用户事务锁表尝试获取事务锁,因为此时用户可能还在发起资源转移的请求,如扣费请求,如果事务锁被其他请求获取,解锁程序需要等待,直到事务锁被释放。
步骤S320,如果用户标识对应的用户记录当前为非锁定,则返回用户状态解锁请求对应的事务锁获取成功响应,返回用户标识对应的资源数值流水记录,并将用户记录锁定,以使系统服务器根据资源数值流水记录判断上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求。
具体的,资源数值流水记录记录了每次资源转移时数值的变化,记录的内容可根据需要自定义,如包括每次资源转移前的余额,资源转移后的余额,如果资源转移不成功,则资源转移前的余额与资源转移后的余额的差值,与资源转移请求中期望转移的额度不匹配,表达资源转移异常。系统服务器根据资源数值流水记录判断上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求。
步骤S330,接收用户状态解锁指令和事务锁释放请求,根据用户状态解锁指令修改用户标识对应的用户状态为解锁状态,根据事务锁释放请求解除用户记录的锁定。
具体的,接收到用户状态解锁指令和事务锁释放请求,表明资源转移异常情况已经恢复正常,可修改用户标识对应的用户状态为解锁状态,根据事务锁释放请求解除用户记录的锁定,使得事务锁可以分配给其它的请求,继续执行其它请求对应的操作。
本实施例中,通过解锁请求,可实现对异常转移资源情况的后处理,自动判断异常情况是否已转为正常,在转为正常的情况下下发用户状态解锁指令和事务锁释放请求,实现自动解锁,使得其它的请求可继续执行,避免出现异常情况后资源转移一直中断的情况。
在一个实施例中,用户记录存储在事务锁表,所述事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段,资源数值流水记录存储在用户流水记录表,用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段,步骤S320中返回用户标识对应的资源数值流水记录的步骤包括:根据事务锁表获取用户标识对应的用户状态被锁流水标识,查询用户状态被锁流水标识对应的目标用户流水记录表,并返回目标用户流水记录表对应的资源数值流水记录。
具体的,用户标识字段用于记录用户标识,用户状态字段用于记录用户状态,如用户锁定状态和非锁定状态,用户状态被锁流水标识用于记录资源数值转移异常流水。事务锁表在每个用户资源数值转移时进行初始化,如第一用户扣费或充值时,先检查事务锁表中是否存在第一用户对应的用户记录,如果没有就插入一行用户记录并加锁,每个用户标识唯一对应一个用户记录,有新的资源数值转移时,不用更新用户事务锁表的用户流水标识,只有在资源数值转移发生异常时,才需要把异常的用户流水标识更新到用户事务锁表。用户流水记录表用于记录用户每次资源数值转移的操作,一次次资源数值转移操作是一次流水,如充值一次或扣费一次会在用户流水记录表表里增加一行记录。第一行记录包括用户标识字段、用户流水标识字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段,用户流水标识字段用于记录用户流水标识,区分每个流水。目标转移额度字段用于记录本次资源转移的目标额度,资源数值转移前资源额度字段用于记录资源数值转移前的资源额度,资源数值转移后资源额度字段用于记录资源数值转移后的资源额度,可在收到资源数值转移请求对应的操作响应后,更新资源数值转移后的资源额度。通过资源数值转移前资源额度和资源数值转移后资源额度的差值判断资源转移是否成功。可通过用户标识将用户标识编号预设位数相同的用户的流水记录存储在同一个用户流水记录表中,便于快速查询和数据均衡。如图6所示,为一个具体的实施例中,事务锁表330的示意图,如图7所示,为用户流水记录表340的示意图。
步骤S320中返回用户标识对应的资源数值流水记录的步骤包括:根据事务锁表获取用户标识对应的用户状态被锁流水标识,查询用户状态被锁流水标识对应的目标用户流水记录表,并返回目标用户流水记录表中用户状态被锁流水标识对应的资源数值流水记录。
具体的,根据用户标识查询事务锁表得到用户状态被锁流水标识,根据流水标识查询用户流水记录表得到用户状态被锁流水标识所在的目标用户流水记录表的目标行,从而得到对应的资源数值流水记录。通过流水标识将事务锁表和用户流水记录表关联起来。
在一个实施例中,如图8所示,提供了一种资源数值转移请求的方法,以应用于上述应用环境中的系统服务器来举例说明,包括如下步骤:
步骤S410,接收当前资源数值转移请求,根据当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录。
具体的,事务是指访问并可能更新数据库中各种数据项的一个程序执行单元,事务锁是数据库的一种事务机制,多笔并发请求同时请求获取事务锁,只有其中一个请求能获得锁,其余请求等待,直到事务锁被释放。事务锁分为行锁和表锁,行锁以行为单位进行锁定,锁定时只锁定一行对应的记录,表中的其它行没有锁定,表锁则是锁定整张表。资源数值转移包括多种转移类型,如冲值、扣费等,当需要进行资源数值转移时,终端发送携带用户标识的资源数值转移请求至系统服务器,资源数值转移请求需要遵循事务锁的机制,需要先获取事务锁,系统服务器根据当前资源数值转移请求生成携带用户标识的事务锁获取请求,发送事务锁获取请求至后台服务器。
每个用户标识唯一对应一个用户记录,保证对相同的用户有并发操作时,只有一个请求能获取到事务锁,可将同一用户标识的所有请求放到队列中,先到达的请求先获得事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁。一个用户记录锁定,不影响其它用户对应的请求的操作。其中用户记录的锁定可采取行锁定或表锁定的方式,如果是行锁定,则每个用户记录占用表格的一行,如果是表锁定,则每个用户记录对应一个表格。
步骤S420,接收上一个资源数值转移请求对应的操作响应,根据操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定。
具体的,如果系统服务器收到上一个资源数值转移请求对应的操作响应,则表明上一个资源数值转移请求已经处理,向后台服务器发送事务锁释放请求。后台服务器根据事务锁释放请求解除用户记录的锁定,资源数值转移请求获得事务锁,后台服务器向系统服务器发送当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定。
步骤S430,根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
具体的,系统服务器收到事务锁获取成功响应,则向资源平台服务器发送当前资源数值转移请求,以完成资源的转移。如系统服务器每次收到扣费或充值请求,都要通过后台数据库的用户事务锁表尝试获取事务锁,同一用户的多笔扣费或充值请求,包括并发扣费、并发充值,或并发扣费和充值,会同时向数据库表尝试获取事务锁,但只有一笔请求成功得到事务锁。
本实施例中,通过接收当前资源数值转移请求,根据当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录,接收上一个资源数值转移请求对应的操作响应,根据操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。将资源数值转移请求携带的用户标识与用户记录关联,每个用户标识只对应一条用户记录,从而根据用户记录的锁定状态决定资源数值转移请求是否可获得事务锁,对相同的用户有并发操作时,只有一个请求能获取到事务锁,获取事务锁后,用户记录就锁定,针对此用户的其它的请求不能操作,直到此用户记录解除锁定,其它的请求才能获取事务锁,保证了并发操作时资源转移有条不紊的进行,提高资源数值转移的稳定性,防止数据出错,保证并发资源转移操作的成功。
在一个实施例中,每个用户标识唯一对应一个数据库表的行用户记录,所述事务锁获取请求包括SELECT语句,所述事务锁释放请求包括COMMIT语句。
具体的,每个用户记录只占用表格的一行,不需要占用整个表格,节省资源,行级锁在锁定时只锁定一行记录,其它行仍可供其它用户操作,保证一个用户接收到并发请求不影响其它用户的请求。事务锁获取请求是向后台服务器发送SELECT...FOR UPDATE语句,事务锁释放请求是向后台服务器发COMMIT语句。
在一个实施例中,步骤S420中根据所述操作响应发送事务锁释放请求至后台服务器的步骤之前,还包括:根据操作响应判断上一个资源数值转移请求对应的操作是否异常,如果异常,则发送用户状态锁定请求至后台服务器,以使后台服务器根据用户状态锁定请求修改用户标识对应的用户状态为锁定状态。
具体的,系统服务器会检查上一个资源数值转移请求对应的操作响应,从返回的操作响应数据判断本次资源数值转移是否成功,如判断扣费金额是否正确,如果返回的余额不正确或没有返回,则认为是上一个资源数值转移请求对应的操作异常,向后台服务器发送用户状态锁定请求。用户状态用于表示用户当前的操作状态权限,如处于锁定状态则禁止执行请求对应的操作,或处于非锁定状态则可执行请求对应的操作,可通过标志位标识用户状态。
步骤S430之前,还包括:向后台服务器发送用户状态查询请求,接收后台服务器返回的用户状态,如果用户状态为锁定状态,则拒绝发送当前资源数值转移请求。
具体的,系统服务器在发送当前资源数值转移请求之前,先查询当前资源数值转移请求对应的用户的用户状态,用户状态反映了用户当前是否具有操作权限,如果用户状态为锁定状态,则说明用户在之前的操作出现了异常,当前不具有操作权限,则拒绝发送当前资源数值转移请求,在资源转移发生异常时,用户状态锁定,可即时检测到异常情况发生,防止异常状态扩散。
在一个实施例中,如图9所示,方法还包括:
步骤S510,向后台服务器发送用户状态解锁请求,用户状态解锁请求包括携带用户标识的事务锁获取请求,以使后台服务器在用户标识对应的用户记录当前为非锁定时,返回用户状态解锁请求对应的事务锁获取成功响应和用户标识对应的资源数值流水记录,并将所述用户记录锁定。
步骤S520,向资源平台服务器发送资源额度获取请求,以使资源平台服务器返回用户标识对应的当前资源额度。
具体的,根据资源数值流水记录可获取上一次资源转移请求对应的目标转移额度和实际转移额度,由于上一次资源数值转移异常,目标转移额度和实际转移额度不相同,向资源平台服务器发送资源额度获取请求,以使资源平台服务器返回用户标识对应的当前资源额度。
步骤S530,根据资源数值流水记录和当前资源额度判断上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求至后台服务器,如果不成功,则进入向资源平台服务器发送资源额度获取请求的步骤。
具体的,根据资源数值流水记录和当前资源额度判断上一个资源数值转移请求对应的操作是否成功,如果根据当前资源额度计算出的当前转移额度与目标转移额度相同,则说明资源数值转移已成功。则发送用户状态解锁指令和事务锁释放请求至后台服务器。如果不成功,则继续向资源平台服务器发送资源额度获取请求,等待上一个资源数值转移请求对应的操作成功。可以理解的是,如果多次发送资源额度获取请求后,上一个资源数值转移请求对应的操作仍然不成功,则可发送提示信息,如通过邮件、通话等形式提醒故障处理人员。
本实施例中,通过解锁请求,可实现对异常转移资源情况的后处理,自动判断异常情况是否已转为正常,在转为正常的情况下下发用户状态解锁指令和事务锁释放请求,实现自动解锁,使得其它的请求可继续执行,避免出现异常情况后资源转移一直中断的情况。
在一个实施例中,用户记录存储在事务锁表,事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段;所述资源数值流水记录存储在用户流水记录表,所述用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段。
具体的,后台服务器接收到用户状态解锁请求后,可根据用户标识查询事务锁表得到用户状态被锁流水标识,根据流水标识查询用户流水记录表得到用户状态被锁流水标识所在的目标用户流水记录表的目标行,从而得到对应的资源数值流水记录。通过流水标识将事务锁表和用户流水记录表关联起来。
在一个实施例中,如图10所示,提供了一种资源数值转移的系统,包括:
系统服务器610,用于接收当前资源数值转移请求,根据当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器。
后台服务器620,用于如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求;
系统服务器610,还用于接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器。
后台服务器620,还用于根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定。
系统服务器610,还用于根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
在一个实施例中,系统服务器610还用于如果用户标识对应的用户记录未锁定,则返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录锁定。
在一个实施例中,每个用户标识唯一对应一个数据库表的行用户记录,事务锁获取请求包括SELECT语句,所述事务锁释放请求包括COMMIT语句。
在一个实施例中,系统服务器610还用于根据所述操作响应判断上一个资源数值转移请求对应的操作是否异常,如果异常,则发送用户状态锁定请求至后台服务器。
后台服务器620,还用于根据用户状态锁定请求修改用户标识对应的用户状态为锁定状态。
系统服务器610,还用于发送用户状态查询请求至后台服务器,接收后台服务器返回的用户状态,如果用户状态为锁定状态,则拒绝发送当前资源数值转移请求。
在一个实施例中,系统服务器610还用于向后台服务器发送用户状态解锁请求,用户状态解锁请求包括携带用户标识的事务锁获取请求。
后台服务器620还用于如果用户标识对应的用户记录当前为非锁定,则返回用户状态解锁请求对应的事务锁获取成功响应,返回用户标识对应的资源数值流水记录,并将用户记录锁定。
系统服务器610还用于根据资源数值流水记录判断上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求至后台服务器620。
后台服务器620还用于根据用户状态解锁指令修改用户标识对应的用户状态为解锁状态,根据事务锁释放请求解除用户记录的锁定。
在一个实施例中,用户记录存储在事务锁表,事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段,资源数值流水记录存储在用户流水记录表,所述用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段。
后台服务器620还用于根据事务锁表获取所述用户标识对应的用户状态被锁流水标识,查询用户状态被锁流水标识对应的目标用户流水记录表,并返回目标用户流水记录表对应的资源数值流水记录。
在一个实施例中,如图11所示,提供了一种资源数值转移的装置,包括:
事务锁获取请求接收模块710,用于接收携带用户标识的事务锁获取请求,事务锁获取请求根据当前资源数值转移请求发送。
事务锁释放请求等待模块720,用于如果用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,事务锁释放请求根据用户标识的上一个资源数值转移请求对应的操作响应发送。
资源数值转移模块730,用于接收事务锁释放请求,根据事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定,以使系统服务器根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
在一个实施例中,如图12所示,提供了一种资源数值转移请求的装置,装置包括:
事务锁获取请求发送模块810,用于接收当前资源数值转移请求,根据当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录。
事务锁释放请求发送模块820,用于接收上一个资源数值转移请求对应的操作响应,根据操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据事务锁释放请求解除用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将用户记录重新锁定。
资源数值转移请求模块830,用于根据事务锁获取成功响应向资源平台服务器发送当前资源数值转移请求。
在一个具体的实施例中,后台服务器存储了上述事务锁表和用户流水记录表,下面分别详细阐述并发扣费时的事务锁机制、并发扣费异常时用户被锁和解锁用户的具体过程,结合图13所示,并发扣费时的事务锁机制包括以下步骤:
1、第一用户对应的第一终端向系统服务器并发发送第一扣费请求和第二扣费请求。
2、系统服务器收到第一扣费请求和第二扣费请求,通过后台服务器的数据库的事务锁表尝试获取事务锁,同一用户的多笔扣费请求同时向事务锁表尝试获取事务锁,但只有一笔请求会成功得到事务锁,后台服务器向系统服务器返回第一扣费请求事务锁获取成功响应,第二扣费请求获取事务锁失败,等待事务锁释放。
3、系统服务器在第一扣费请求获得事务锁之后会先判断事务锁表记录的用户状态,只有用户状态正常的情况下才向资源平台服务器发送第一扣费请求,接收第一扣费请求对应的操作响应,无论第一扣费请求成功与否,都会先释放事务锁,再继续其他操作,根据操作响应发送事务锁释放请求至后台服务器,后台服务器释放事务锁,并返回第一扣费请求对应的事务锁释放成功响应,系统服务器向第一终端返回第一扣费成功响应。
4、后台服务器向系统服务器返回第二扣费请求事务锁获取成功响应,系统服务器在第二扣费请求获得事务锁之后会先判断事务锁表记录的用户状态,只有用户状态正常的情况下才向资源平台服务器发送第二扣费请求,接收第二扣费请求对应的操作响应,系统服务器向第一终端返回第二扣费请求成功响应。可以理解的是,如果第二扣费请求变成充值请求,即扣费和充值请求同时发生,流程与并发扣费一样,先获得事务锁的请求先操作,先扣费再充值或先充值再扣费。
在一个具体的实施例中,结合图14所示,并发扣费异常时具体过程如下:
1、并发扣费获取事务锁的流程与上一个实施例一致,系统服务器接收第一扣费请求对应的操作响应,如果操作响应表明第一扣费由于超时,重试失败等原因导致扣费异常,则修改事务锁表中的用户状态为锁定状态。
2、无论第一扣费请求成功与否,都会先释放事务锁,再继续其他操作,根据操作响应发送事务锁释放请求至后台服务器,后台服务器释放事务锁,并返回第一扣费请求对应的事务锁释放成功响应,系统服务器向第一终端返回第一扣费请求失败响应。
3、后台服务器向系统服务器返回第二扣费请求事务锁获取成功响应,系统服务器在第二扣费请求获得事务锁之后会先判断事务锁表记录的用户状态,用户状态为锁定状态,则不向资源平台服务器发送第二扣费请求,系统服务器向第一终端返回第二扣费请求失败响应。直到用户状态解锁之前,该用户的所有扣费和充值都会失败。
在一个具体的实施例中,结合图15所示,解锁用户的具体过程如下:
1、系统服务器向后台服务器发送用户状态解锁请求,尝试获取事务锁和用户被锁的资源数值流水记录,后台服务器在用户标识对应的用户记录未锁定的情况下,向系统服务器返回用户状态解锁请求对应的事务锁获取成功响应和资源数值流水记录。
2、系统服务器向资源平台服务器发送用户当前资源额度获取请求,资源平台服务器返回用户标识对应的当前资源额度。
3、根据所述资源数值流水记录和当前资源额度判断第一扣费请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求至后台服务器,后台服务器修改用户标识对应的用户状态为解锁状态,根据事务锁释放请求解除用户记录的锁定,向系统服务器返回用户状态解锁成功和事务锁释放成功的响应。如果不成功,则重新向资源平台服务器发送用户当前资源额度获取请求,直到资源平台服务器返回的用户标识对应的当前资源额度满足第一扣费请求对应的操作成功,发送用户状态解锁指令和事务锁释放请求至后台服务器,后台服务器修改用户标识对应的用户状态为解锁状态,根据事务锁释放请求解除用户记录的锁定,向系统服务器返回用户状态解锁成功和事务锁释放成功的响应。用户解锁后,后续的扣费和充值就可以继续了,期间并不影响其他正常用户的扣费和充值操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (19)
1.一种资源数值转移的方法,所述方法包括:
接收携带用户标识的事务锁获取请求,所述事务锁获取请求根据当前资源数值转移请求发送;
如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,所述事务锁释放请求根据所述用户标识的上一个资源数值转移请求对应的操作响应发送;
接收事务锁释放请求,根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定,以使系统服务器根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述用户标识对应的用户记录未锁定,则返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录锁定,以使系统服务器根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
3.根据权利要求1所述的方法,其特征在于,所述事务锁为行级锁,所述每个用户标识唯一对应一个数据库表的行用户记录,所述事务锁获取请求包括SELECT语句,所述事务锁释放请求包括COMMIT语句。
4.根据权利要求1所述的方法,其特征在于,所述接收事务锁释放请求的步骤之前,还包括:
接收系统服务器发送的用户状态锁定请求,所述用户状态锁定请求为系统服务器判断上一个资源数值转移请求对应的操作异常时发送,根据所述用户状态锁定请求修改所述用户标识对应的用户状态为锁定状态;
所述返回当前资源数值转移请求对应的事务锁获取成功响应的步骤之后,还包括:
接收用户状态查询请求,并返回所述用户状态,以使系统服务器在所述用户状态为锁定状态时,拒绝发送所述当前资源数值转移请求。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收用户状态解锁请求,所述用户状态解锁请求包括携带所述用户标识的事务锁获取请求;
如果所述用户标识对应的用户记录当前为非锁定,则返回所述用户状态解锁请求对应的事务锁获取成功响应,返回所述用户标识对应的资源数值流水记录,并将所述用户记录锁定,以使系统服务器根据所述资源数值流水记录判断所述上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求;
接收所述用户状态解锁指令和事务锁释放请求,根据所述用户状态解锁指令修改所述用户标识对应的用户状态为解锁状态,根据所述事务锁释放请求解除所述用户记录的锁定。
6.根据权利要求5所述的方法,其特征在于,所述用户记录存储在事务锁表,所述事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段;所述资源数值流水记录存储在用户流水记录表,所述用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段,所述返回所述用户标识对应的资源数值流水记录包括:
根据所述事务锁表获取所述用户标识对应的用户状态被锁流水标识;
查询所述用户状态被锁流水标识对应的目标用户流水记录表,并返回所述目标用户流水记录表对应的资源数值流水记录。
7.一种资源数值转移请求的方法,所述方法包括:
接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在所述用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录;
接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
8.根据权利要求7所述的方法,其特征在于,所述每个用户标识唯一对应一个数据库表的行用户记录,所述事务锁获取请求包括SELECT语句,所述事务锁释放请求包括COMMIT语句。
9.根据权利要求7所述的方法,其特征在于,所述根据所述操作响应发送事务锁释放请求至后台服务器的步骤之前,还包括:
根据所述操作响应判断上一个资源数值转移请求对应的操作是否异常,如果异常,则发送用户状态锁定请求至后台服务器,以使后台服务器根据所述用户状态锁定请求修改所述用户标识对应的用户状态为锁定状态;
所述根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求的步骤之前,还包括:
向后台服务器发送用户状态查询请求,接收后台服务器返回的用户状态;
如果所述用户状态为锁定状态,则拒绝发送所述当前资源数值转移请求。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
向后台服务器发送用户状态解锁请求,所述用户状态解锁请求包括携带所述用户标识的事务锁获取请求,以使后台服务器在所述用户标识对应的用户记录当前为非锁定时,返回所述用户状态解锁请求对应的事务锁获取成功响应和所述用户标识对应的资源数值流水记录,并将所述用户记录锁定;
向资源平台服务器发送资源额度获取请求,以使资源平台服务器返回所述用户标识对应的当前资源额度;
根据所述资源数值流水记录和当前资源额度判断所述上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求至后台服务器;
如果不成功,则进入所述向资源平台服务器发送资源额度获取请求的步骤。
11.根据权利要求10所述的方法,其特征在于,所述用户记录存储在事务锁表,所述事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段;所述资源数值流水记录存储在用户流水记录表,所述用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段。
12.一种资源数值转移的系统,其特征在于,所述系统包括:
系统服务器,用于接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器;
后台服务器,用于如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求;
所述系统服务器,还用于接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器;
所述后台服务器,还用于根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
所述系统服务器,还用于根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
13.根据权利要求12所述的系统,其特征在于,所述系统服务器还用于如果所述用户标识对应的用户记录未锁定,则返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录锁定。
14.根据权利要求12所述的系统,其特征在于,所述每个用户标识唯一对应一个数据库表的行用户记录,所述事务锁获取请求包括SELECT语句,所述事务锁释放请求包括COMMIT语句。
15.根据权利要求12所述的系统,其特征在于,所述系统服务器还用于根据所述操作响应判断上一个资源数值转移请求对应的操作是否异常,如果异常,则发送用户状态锁定请求至后台服务器;
所述后台服务器,还用于根据所述用户状态锁定请求修改所述用户标识对应的用户状态为锁定状态;
所述系统服务器,还用于发送用户状态查询请求至后台服务器,接收后台服务器返回的用户状态,如果所述用户状态为锁定状态,则拒绝发送所述当前资源数值转移请求。
16.根据权利要求15所述的系统,其特征在于,所述系统服务器还用于向后台服务器发送用户状态解锁请求,所述用户状态解锁请求包括携带所述用户标识的事务锁获取请求;
所述后台服务器还用于如果所述用户标识对应的用户记录当前为非锁定,则返回所述用户状态解锁请求对应的事务锁获取成功响应,返回所述用户标识对应的资源数值流水记录,并将所述用户记录锁定;
所述系统服务器还用于根据所述资源数值流水记录判断所述上一个资源数值转移请求对应的操作是否成功,如果成功,则发送用户状态解锁指令和事务锁释放请求至后台服务器;
所述后台服务器还用于根据所述用户状态解锁指令修改所述用户标识对应的用户状态为解锁状态,根据所述事务锁释放请求解除所述用户记录的锁定。
17.根据权利要求16所述的系统,其特征在于,所述用户记录存储在事务锁表,所述事务锁表包括用户标识字段、用户状态字段和用户状态被锁流水标识字段;所述资源数值流水记录存储在用户流水记录表,所述用户流水记录表包括用户标识字段、用户流水标识字段、目标转移额度字段、资源数值转移前资源额度字段和资源数值转移后资源额度字段;
所述后台服务器还用于根据所述事务锁表获取所述用户标识对应的用户状态被锁流水标识,查询所述用户状态被锁流水标识对应的目标用户流水记录表,并返回所述目标用户流水记录表对应的资源数值流水记录。
18.一种资源数值转移的装置,其特征在于,所述装置包括:
事务锁获取请求接收模块,用于接收携带用户标识的事务锁获取请求,所述事务锁获取请求根据当前资源数值转移请求发送;
事务锁释放请求等待模块,用于如果所述用户标识对应的用户记录锁定,其中每个用户标识唯一对应一个用户记录,则等待事务锁释放请求,所述事务锁释放请求根据所述用户标识的上一个资源数值转移请求对应的操作响应发送;
资源数值转移模块,用于接收事务锁释放请求,根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定,以使系统服务器根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
19.一种资源数值转移请求的装置,其特征在于,所述装置包括:
事务锁获取请求发送模块,用于接收当前资源数值转移请求,根据所述当前资源数值转移请求发送携带用户标识的事务锁获取请求至后台服务器,以使后台服务器在所述用户标识对应的用户记录锁定时,等待事务锁释放请求,其中每个用户标识唯一对应一个用户记录;
事务锁释放请求发送模块,用于接收上一个资源数值转移请求对应的操作响应,根据所述操作响应发送事务锁释放请求至后台服务器,以使后台服务器根据所述事务锁释放请求解除所述用户记录的锁定,返回当前资源数值转移请求对应的事务锁获取成功响应,并将所述用户记录重新锁定;
资源数值转移请求模块,用于根据所述事务锁获取成功响应向资源平台服务器发送所述当前资源数值转移请求。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610536577.3A CN106204217A (zh) | 2016-07-08 | 2016-07-08 | 资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610536577.3A CN106204217A (zh) | 2016-07-08 | 2016-07-08 | 资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN106204217A true CN106204217A (zh) | 2016-12-07 |
Family
ID=57472937
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201610536577.3A Pending CN106204217A (zh) | 2016-07-08 | 2016-07-08 | 资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN106204217A (zh) |
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106656600A (zh) * | 2016-12-22 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 资源回转方法和装置 |
| WO2018153209A1 (zh) * | 2017-02-23 | 2018-08-30 | 腾讯科技(深圳)有限公司 | 资源数值转移的方法、服务器、系统和存储介质 |
| CN109684353A (zh) * | 2017-10-18 | 2019-04-26 | 腾讯科技(深圳)有限公司 | 数值转移请求处理方法、装置、服务器及存储介质 |
| CN109903022A (zh) * | 2018-10-25 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 资源发放方法、装置、设备及计算机可读存储介质 |
| CN110009320A (zh) * | 2018-01-04 | 2019-07-12 | 财付通支付科技有限公司 | 资源转换方法、装置、系统、存储介质和计算机设备 |
| CN110058948A (zh) * | 2019-04-28 | 2019-07-26 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
| CN110503432A (zh) * | 2019-08-20 | 2019-11-26 | 腾讯科技(深圳)有限公司 | 资源转移请求的处理方法、装置和计算机可读存储介质 |
| CN110992188A (zh) * | 2020-03-03 | 2020-04-10 | 支付宝(杭州)信息技术有限公司 | 交易处理方法、装置及设备 |
| CN110990779A (zh) * | 2019-10-29 | 2020-04-10 | 咪咕互动娱乐有限公司 | 游戏资源的转移方法、服务器及存储介质 |
| CN111143388A (zh) * | 2019-12-27 | 2020-05-12 | 上海米哈游天命科技有限公司 | 一种资源处理方法、装置、设备及存储介质 |
| CN111464823A (zh) * | 2020-04-02 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 虚拟礼物的交换方法、装置、电子设备及存储介质 |
| CN111858626A (zh) * | 2020-06-04 | 2020-10-30 | 武汉达梦数据库有限公司 | 一种基于并行执行的数据同步的方法和装置 |
| CN113486121A (zh) * | 2021-07-26 | 2021-10-08 | 北京达佳互联信息技术有限公司 | 一种资源转移方法、装置及存储介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103514164A (zh) * | 2012-06-15 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 数据迁移方法及系统 |
| CN104751266A (zh) * | 2013-12-31 | 2015-07-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、增值服务器及系统 |
| CN104852966A (zh) * | 2015-04-21 | 2015-08-19 | 小米科技有限责任公司 | 数值转移方法、终端及云端服务器 |
-
2016
- 2016-07-08 CN CN201610536577.3A patent/CN106204217A/zh active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103514164A (zh) * | 2012-06-15 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 数据迁移方法及系统 |
| CN104751266A (zh) * | 2013-12-31 | 2015-07-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、增值服务器及系统 |
| CN104852966A (zh) * | 2015-04-21 | 2015-08-19 | 小米科技有限责任公司 | 数值转移方法、终端及云端服务器 |
Cited By (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106656600A (zh) * | 2016-12-22 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 资源回转方法和装置 |
| WO2018153209A1 (zh) * | 2017-02-23 | 2018-08-30 | 腾讯科技(深圳)有限公司 | 资源数值转移的方法、服务器、系统和存储介质 |
| CN108470298A (zh) * | 2017-02-23 | 2018-08-31 | 腾讯科技(深圳)有限公司 | 资源数值转移的方法、装置和系统 |
| CN108470298B (zh) * | 2017-02-23 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 资源数值转移的方法、装置和系统 |
| CN109684353A (zh) * | 2017-10-18 | 2019-04-26 | 腾讯科技(深圳)有限公司 | 数值转移请求处理方法、装置、服务器及存储介质 |
| CN109684353B (zh) * | 2017-10-18 | 2022-11-22 | 腾讯科技(深圳)有限公司 | 数值转移请求处理方法、装置、服务器及存储介质 |
| CN110009320A (zh) * | 2018-01-04 | 2019-07-12 | 财付通支付科技有限公司 | 资源转换方法、装置、系统、存储介质和计算机设备 |
| CN110009320B (zh) * | 2018-01-04 | 2024-04-16 | 财付通支付科技有限公司 | 资源转换方法、装置、系统、存储介质和计算机设备 |
| CN109903022B (zh) * | 2018-10-25 | 2023-08-22 | 创新先进技术有限公司 | 资源发放方法、装置、设备及计算机可读存储介质 |
| CN109903022A (zh) * | 2018-10-25 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 资源发放方法、装置、设备及计算机可读存储介质 |
| CN110058948A (zh) * | 2019-04-28 | 2019-07-26 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
| CN110058948B (zh) * | 2019-04-28 | 2022-01-28 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
| CN110503432B (zh) * | 2019-08-20 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 资源转移请求的处理方法、装置和计算机可读存储介质 |
| CN110503432A (zh) * | 2019-08-20 | 2019-11-26 | 腾讯科技(深圳)有限公司 | 资源转移请求的处理方法、装置和计算机可读存储介质 |
| CN110990779B (zh) * | 2019-10-29 | 2023-08-18 | 咪咕互动娱乐有限公司 | 游戏资源的转移方法、服务器及存储介质 |
| CN110990779A (zh) * | 2019-10-29 | 2020-04-10 | 咪咕互动娱乐有限公司 | 游戏资源的转移方法、服务器及存储介质 |
| CN111143388A (zh) * | 2019-12-27 | 2020-05-12 | 上海米哈游天命科技有限公司 | 一种资源处理方法、装置、设备及存储介质 |
| CN110992188A (zh) * | 2020-03-03 | 2020-04-10 | 支付宝(杭州)信息技术有限公司 | 交易处理方法、装置及设备 |
| CN111464823B (zh) * | 2020-04-02 | 2021-12-10 | 腾讯科技(深圳)有限公司 | 虚拟礼物的交换方法、装置、电子设备及存储介质 |
| CN111464823A (zh) * | 2020-04-02 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 虚拟礼物的交换方法、装置、电子设备及存储介质 |
| CN111858626A (zh) * | 2020-06-04 | 2020-10-30 | 武汉达梦数据库有限公司 | 一种基于并行执行的数据同步的方法和装置 |
| CN111858626B (zh) * | 2020-06-04 | 2024-06-21 | 武汉达梦数据库股份有限公司 | 一种基于并行执行的数据同步的方法和装置 |
| CN113486121A (zh) * | 2021-07-26 | 2021-10-08 | 北京达佳互联信息技术有限公司 | 一种资源转移方法、装置及存储介质 |
| CN113486121B (zh) * | 2021-07-26 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 一种资源转移方法、装置及存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106204217A (zh) | 资源数值转移的方法、装置和系统、资源数值转移请求的方法和装置 | |
| US9756469B2 (en) | System with multiple conditional commit databases | |
| KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
| CN110231979A (zh) | 基于区块链的事务处理方法、装置、设备及存储介质 | |
| CN109240838A (zh) | 接口调用方法、装置、计算机设备及存储介质 | |
| CN102971711A (zh) | 用于处理批工作单元的设备 | |
| US20120030223A1 (en) | Extensibility of business process and application logic | |
| CN110019112A (zh) | 数据事务处理方法、装置以及电子设备 | |
| CN103546388A (zh) | 一种流量控制方法及装置 | |
| CN106484321A (zh) | 一种数据存储方法及数据中心 | |
| CN105468619A (zh) | 用于数据库连接池的资源分配方法和装置 | |
| CN103514164A (zh) | 数据迁移方法及系统 | |
| CN106874073A (zh) | Soa架构下事务的实现方法和装置 | |
| CN110163572A (zh) | 一种链码函数处理方法、装置及设备 | |
| CN109145007A (zh) | 一种数据处理方法、装置、服务器及计算机存储介质 | |
| CN115437798A (zh) | 共享内存的数据处理方法、装置、设备和介质 | |
| CN117235163A (zh) | 业务处理方法、装置、设备及存储介质 | |
| CN114936164B (zh) | 分布式事务的自动化异常测试方法、装置、设备和介质 | |
| US20150088729A1 (en) | Online property reservation service provider for reserving properties for lease | |
| CN106326786A (zh) | 一种基于nfc芯片防伪认证的自动批量处理方法 | |
| CN110457321A (zh) | 基于区块链的数据存储方法及相关产品 | |
| CN109245941A (zh) | 一种服务补偿方法及装置 | |
| CN109819000A (zh) | 用于推送消息的方法、装置和系统及机器可读存储介质 | |
| CN109919623B (zh) | 防止账户透支方法、装置、设备及可读存储介质 | |
| CN111897822A (zh) | 账户状态信息的处理方法、装置、电子设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161207 |