CN105096122B - 一种分片式交易匹配方法和装置 - Google Patents
一种分片式交易匹配方法和装置 Download PDFInfo
- Publication number
- CN105096122B CN105096122B CN201410153940.4A CN201410153940A CN105096122B CN 105096122 B CN105096122 B CN 105096122B CN 201410153940 A CN201410153940 A CN 201410153940A CN 105096122 B CN105096122 B CN 105096122B
- Authority
- CN
- China
- Prior art keywords
- fragment
- matching
- match
- purchase application
- starting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种分片式交易匹配方法,包括:启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;所述匹配分片对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。本申请同时提供一种分片式交易匹配装置。采用本申请提供的方法,能够从时间维度上明确地限定一个匹配分片负责处理的购买申请范围,从而在基于定时任务触发的分片式交易匹配***中实现连续匹配功能。
Description
技术领域
本申请涉及交易匹配技术,具体涉及一种分片式交易匹配方法。本申请同时涉及一种分片式交易匹配装置。
背景技术
随着科学技术和互联网的发展,用户的需求越来越多样化,同时各种产品和服务也越来越丰富,为了将两者有机结合起来,为用户提供更为及时的、针对性更强的服务,交易匹配服务的概念应运而生。所谓交易匹配服务,是指服务型公司或者个人,从用户的实际需求出发,作为第三方,将多边信息集合在一起,通过整理和评估,将有效的信息有针对性地反馈给用户,这个过程统称为交易匹配服务。通过交易匹配服务,一方面用户不用自行去搜索、查找就可以及时得到所需的产品或者服务,从而享受更为快捷方便的用户体验;另一方面,通过为用户提供更优质更方便的服务,从事交易匹配服务的行业也可以从中赢取利润、获得更好的发展。
具体到金融领域,提供交易匹配服务的***通常称为交易匹配***,通过该交易匹配***,买方可以提前提出特定交易条件的预约请求,交易匹配***将其转换为购买申请,并采取批量处理购买申请的方式进行匹配处理,即:将已经提交的购买申请与产品信息库中的产品信息进行匹配,如果匹配成功,则自动对匹配成功的购买申请和产品发起交易。
由于现有的交易匹配***采取批量处理购买申请的方式,每次批量处理过程仅对已经提交的一组购买请求进行匹配处理,只要已提交的购买请求都处理完毕,本次批量处理就结束了,后续提交的购买请求只能等待下一个批量处理过程处理。由此可见,现有交易匹配***的批量处理过程能够处理的购买申请从时间维度看是不确定的,从而不便于对批量处理过程的调度和管理,不同批量处理过程之间无法合理、高效地衔接,从而可能导致用户的购买申请无法得到及时处理。
发明内容
本申请提供一种分片式交易匹配方法,以解决现有交易匹配***对购买申请的批量处理方式在时间维度上的不确定性、以及由此导致的不同批量处理过程之间无法合理、高效衔接的问题。本申请另外提供一种分片式交易匹配装置。
本申请提供一种分片式交易匹配方法,包括:
启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;
所述匹配分片对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。
可选的,所述启动匹配分片的步骤,按照预定的时间间隔周期性地执行。
可选的,所述每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。
可选的,所述方法包括:
根据用户的预约请求生成购买申请;
根据该购买申请的实际生成时间或者根据该购买申请中的指定提交时间,确定该购买申请的提交时间;
将包含所述提交时间的购买申请信息添加到按照所述提交时间排序的消息中间件的消息队列中;
相应的,所述匹配分片对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理是指,
所述匹配分片对位于消息中间件的消息队列中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理。
可选的,所述匹配分片启动时,首先执行下述步骤:
获取对购买申请进行匹配处理所需的产品信息。
可选的,所述匹配分片对位于消息中间件的消息队列中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理,包括:
从消息中间件中的消息队列中拉取购买申请信息;
判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;
若是,将所述购买申请信息和所述已获取的产品信息进行匹配处理,并转到从消息中间件中的消息队列中拉取购买申请信息的步骤;
若否,将所述购买申请信息重新放回所述消息中间件中,并结束当前匹配分片。
可选的,将所述购买申请信息和所述已获取的产品信息进行匹配处理后,先执行下述步骤,然后再转到从消息中间件中的消息队列中拉取购买申请信息的步骤执行:
对匹配成功的购买申请和产品发起交易请求。
可选的,所述启动匹配分片和交易匹配处理的步骤由多台匹配服务器同时执行。
可选的,多台匹配服务器同时执行启动分片的步骤,包括:
将启动匹配分片的触发指令发送到一台中心匹配服务器;
所述中心匹配服务器向其它匹配服务器和/或该中心匹配服务器自身发送启动匹配的指令;
接收到启动匹配指令的匹配服务器启动匹配分片。
可选的,所述中心匹配服务器可以是预先指定的一台匹配服务器,也可以是随机选取的一台匹配服务器。
可选的,在所述中心匹配服务器向多台匹配服务器发送启动匹配指令的步骤之前,所述中心匹配服务器执行下述操作:
根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间;
相应的,所述中心匹配服务器向多台匹配服务器发送的启动匹配指令中包含上述处理截止时间的信息。
可选的,所述启动匹配分片的步骤由多台匹配服务器同时执行;
并且所述匹配分片启动时,除了要执行所述获取对购买申请进行匹配处理所需的产品信息的步骤之外,还要执行下述步骤:
将所述产品的库存数量存储到分布式缓存中,作为库存快照;
相应的,执行所述对匹配成功的购买申请和产品发起交易请求之前,执行下述步骤:
对所述匹配成功的产品的库存快照,执行扣减并获取扣减后数值的原子性操作;
判断所述扣减后数值是否大于零;
若是,则执行所述对匹配成功的购买申请和产品发起交易请求的步骤;若否,则不执行该步骤。
本申请同时提供一种分片式交易匹配装置,包括:
分片启动单元,用于启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;
分片执行单元,用于执行匹配分片的任务,即对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。
可选的,所述装置包括:
定时任务单元,用于按照预定的时间间隔周期性地触发所述分片启动单元。
可选的,所述分片启动单元启动的每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。
可选的,所述装置还包括:
购买申请生成单元,用于根据用户的预约信息生成购买申请;
提交时间确定单元,用于根据购买申请的实际生成时间或者根据购买申请中的指定提交时间,确定所述购买申请的提交时间;
购买申请排队单元,用于将包含提交时间的购买申请信息添加到按照所述提交时间排序的消息中间件中;
相应的,所述分片执行单元具体用于,对位于消息中间件中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理。
可选的,所述分片启动单元包括:
产品信息获取子单元,用于获取对购买申请进行匹配处理所需的产品信息;
分片启动执行子单元,用于启动匹配分片。
可选的,所述分片执行单元包括:
购买申请拉取子单元,用于从消息中间件拉取购买申请信息;
匹配处理判断子单元,用于判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;
匹配处理子单元,用于当匹配处理判断子单元的输出结果为“是”时,将所述购买申请信息和所述已获取的产品信息进行匹配处理,并触发所述购买申请拉取子单元工作;
购买申请排队子单元,用于当匹配处理判断子单元的输出结果为“否”时,将所述购买申请信息重新放回所述消息中间件中,并终结所述分片执行单元。
可选的,所述分片执行单元还包括:
交易发起子单元,用于当所述匹配处理子单元匹配成功时,对匹配成功的购买申请和产品发起交易请求。
可选的,所述分片启动单元和所述分片执行单元由多台匹配服务器承担。
可选的,所述装置包括:
触发指令发送单元,用于将启动分片的触发指令发送到一台中心匹配服务器;
启动指令发送单元,用于由中心匹配服务器向多台匹配服务器发送启动匹配的指令;
启动指令接收单元,用于接收所述启动指令发送子单元发送的启动匹配指令,并触发所述分片启动单元工作。
可选的,所述触发指令发送单元将触发指令发送到的中心匹配服务器,可以是预先指定的一台匹配服务器,也可以是随机选取的一台匹配服务器。
可选的,所述装置包括:
截止时间计算单元,用于由所述中心匹配服务器根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间;
相应的,所述启动指令发送单元向多台匹配服务器发送的启动匹配指令中包含上述处理截止时间的信息。
可选的,所述分片启动单元和所述分片执行单元由多台匹配服务器承担;
并且,所述分片启动单元还包括:
库存快照生成子单元,用于将所述产品的库存数量存储到分布式缓存中,作为库存快照;
相应的,所述分片执行单元还包括:
库存快照扣减子单元,用于对所述匹配成功的产品的库存快照,执行扣减并获取扣减后数值的原子性操作;
库存快照判断子单元,用于判断所述扣减后数值是否大于零,并在所述扣减后数值大于零时,触发所述交易发起子单元工作。
与现有技术相比,本申请具有以下优点:
本申请提供的一种分片式交易匹配方法,通过在启动匹配分片时指定本匹配分片的处理截止时间,并且要求所述匹配分片对提交时间早于或者等于所述处理截止时间的购买申请进行匹配处理,从而从时间维度上明确地限定了一个匹配分片负责处理的购买申请的范围,有助于实现对匹配分片的有效管理。
本申请的一种分片式交易匹配方法,提供了一种优选实施方式,通过采用周期性地启动匹配分片,并且使每个匹配分片的处理截止时间等于下一个匹配分片的启动时间,从而在基于定时任务触发的分片式匹配***中实现了连续匹配功能,使得买方的购买申请能够得到及时处理,而不必等待***启动下一个匹配分片,不仅提高了匹配***的处理效率,也提高了匹配服务器的利用率。
附图说明
图1为本申请的一种分片式交易匹配方法的实施例流程图;
图2为本申请的对购买申请按照提交时间进行排序管理的实施例流程图;
图3为本申请的匹配分片进行交易匹配处理的实施例流程图;
图4为本申请的一种分片式交易匹配装置的实施例示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,分别提供了一种分片式交易匹配方法、以及一种分片式交易匹配装置。在下面的实施例中逐一进行详细说明。
请参考图1,其为本申请的一种分片式交易匹配方法实施例的流程示意图。所述方法包括如下步骤:
步骤101:启动匹配分片,所述匹配分片包含处理截止时间的信息。
本申请所述的分片,是指特定时间区间上的一组购买申请,即将购买申请按时间维度切分获得的一组购买申请。相应的,本申请所述的匹配分片,是指对所述特定时间区间上的一组购买申请进行的相关匹配处理,也可以理解为,是对所述时间维度上的一组购买申请进行匹配处理的一段特定时间区间。
本申请提供的一种分片式交易匹配方法,通过在启动匹配分片时指定本匹配分片的处理截止时间,并且要求所述匹配分片对提交时间早于或者等于所述处理截止时间的购买申请进行匹配处理,从而从时间维度上明确地限定了一个匹配分片负责处理的购买申请的范围,有助于实现对匹配分片的有效调度和管理。
实现本申请技术方案的关键在于两个方面,1)每个匹配分片都要具备明确的处理截止时间;2)保证匹配分片对提交时间早于或者等于所述处理截止时间的购买申请进行匹配处理,即:不到处理截止时间匹配分片必须保持工作状态。上述两个方面的有机结合,才能共同实现本申请的技术方案。这里先对第一个方面进行说明,关于第二个方面的说明请参见步骤102中的相关部分。
本申请所述的匹配分片的处理截止时间,是指相对于所述匹配分片的启动时间点而言,处于未来的一个确定的时间点。在具体的实施过程中,每个匹配分片的处理截止时间可以采用如下两种方式进行设置:第一种方式,预先设定匹配分片的处理时间区间,这样在每个匹配分片启动的时候,可以自行计算本匹配分片的处理截止时间,即:处理截止时间=启动时间+处理时间区间,例如:匹配分片在10:00:00启动,预先设定的匹配分片的处理时间区间为5分钟,那么该匹配分片的处理截止时间就是10:05:00;第二种方式,可以在启动匹配分片时携带时间戳信息,该时间戳信息明确指示当前启动的匹配分片的处理截止时间。在具体实施过程中,当然也可以采取不同于上述两种方式的其他方式为匹配分片指定处理截止时间,这些具体实施方式的变更,都不偏离本申请的技术核心,因此都在本申请的保护范围之内。
对于上面描述的分片式交易匹配方法,如果将匹配分片的处理截止时间设置为一个预先约定好的、代表在实际交易过程中事实上始终不会到达的一个未来时间点,那么匹配分片一经启动就会一直保持工作状态。这种实现方式会持续占用匹配服务器的资源,即使在购买申请并不多的情况下,也无法减少对匹配服务器资源的占用。作为一种更为灵活的方式,本申请提供了一种按照预定的时间间隔周期性地执行匹配分片的方式。
在具体实施过程中,按照预定的时间间隔周期性地启动匹配分片的任务,可以由一个专门的定时任务来完成,所谓定时任务指的是人为配置触发规则(触发时间段、触发频率)的一个任务,这个任务会在指定时间点向执行匹配处理的单元或者设备发送一个触发指令,执行匹配处理的单元或者设备接收到触发指令后就会启动匹配分片,对生成时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。
本申请提供的周期性地启动匹配分片的方式,与现有技术定时进行批量处理方式相比较,两者既有相同点也有不同点。相同之处在于,两种方式都是基于定时任务触发的,并且都是一次性处理一组购买申请;不同之处在于,现有技术中的批量处理过程对购买申请的处理从时间维度上看,其截止时间是不确定的(处理完已有的购买申请就结束了),而本申请的匹配分片则要按照指定的处理截止时间执行匹配处理,即:本申请的分片式交易匹配方法能够保证每个匹配分片所处理的购买申请在截止时间上是确定的,这种确定性为匹配分片的调度或者管理提供了便利。
正是基于本申请技术方案所具备的上述特点,本申请同时提供了一种优选实施方案:在周期性地启动匹配分片时,要求每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。采用上述优选实施方案,能够使得基于定时任务触发的分片式匹配方案实现连续匹配功能。
实现上述优选实施方式的关键在于,周期性启动的每个匹配分片的处理截止时间等于下一个匹配分片的启动时间,而每个匹配分片在其处理截止时间未到时始终保持工作状态(这部分参见步骤102中的相关部分),也就是说在时间顺序上先后启动的两个匹配分片的处理时间是相互衔接的,不管购买申请的提交时间位于第一个匹配分片的处理时间区间之中,还是位于第二个匹配分片的处理时间区间中,都能够得到对应的匹配分片的及时处理,而不必等待下一个匹配分片的启动。这里所说的匹配分片的处理时间区间,是指由一个匹配分片的处理截止时间与该匹配分片的启动时间限定的时间区间。下面以一个简单的例子来说明本优选实施方式是如何实现连续匹配功能的:
10:00:00启动匹配分片1,处理截止时间为10:05:00;
10:05:00启动匹配分片2,处理截止时间为10:10:00;
10:10:00启动匹配分片3,处理截止时间为10:15:00;
后续匹配分片依次类推......。
其中匹配分片2启动后负责处理提交时间早于或者等于10:10:00的购买申请,当10:07:00的时候,当前提交的购买申请都处理完毕,这时匹配分片2不会结束,而是继续保持工作状态,等待提交时间早于或者等于10:10:00的购买申请的到来,在10:09:00的时候,一个新的购买申请到来,其提交时间为10:08:50,那么匹配分片2会立刻处理该购买申请,而不是等到匹配分片3启动后再进行处理。
上面的例子是示意性的,在具体的实施过程中启动匹配分片的时间间隔可能会有所不同、购买申请的到来可能会更加密集、处理过程可能也会更为复杂,但是只要采用了本申请提供的上述优选实施方式,都可以实现连续匹配功能,也都在本申请的保护范围之内。
在上述优选实施方式中,周期性地启动匹配分片时,要求每个匹配分片的处理截止时间等于下一个匹配分片的启动时间,从而获取连续匹配的最优实施效果。在其他实施方式中,也可以不采用如此严格的设置方式,例如:可以设置每个匹配分片的处理截止时间略早于下一个匹配分片的启动时间,也能取得接近于连续匹配的效果,使得用户的购买申请得到比较及时地处理。
综上所述,采用本申请的分片式交易匹配方法,不仅可以从时间维度上明确地限定一个匹配分片负责处理的购买申请的范围,而且将本方法应用到的基于定时任务触发的分片式匹配***中,还可以实现近似连续或连续匹配功能,从而使用户的购买申请能够得到及时处理。
另外,通过上面的描述可以看到,为了实现本申请的技术方案,除了要正确地设置匹配分片的处理截止时间(以及周期性启动匹配分片的时间间隔)之外,还要求每个匹配分片能够正确地处理提交时间早于或者等于本匹配分片处理截止时间之前的购买申请。可以这样理解,每个匹配分片处理的购买申请范围不是用数量来定义,而是采用购买申请的提交时间来定义,因此为了便于匹配分片按照上述要求进行正确处理,本申请的技术方案采用了对购买申请按照提交时间进行排序的管理方式。具体说,包括以下三个子步骤:生成购买申请、确定提交时间、根据提交时间执行排队处理,请参见附图2,其为本申请的对购买申请按照提交时间进行排序管理的实施例流程图。下面结合附图2对该过程进行详细说明。
步骤101-1:根据预约请求生成购买申请。
用户在提出对某种产品的预约请求时,通常会提供相关的预约信息,例如:用户希望购买产品的类型、年限、购买金额等,这些信息都是后续进行匹配处理的重要依据,将用户信息以及上述预约信息按照预先定义的数据格式生成一个购买申请。
步骤101-2:确定购买申请的提交时间。
通常情况下,购买申请的实际生成时间就是该购买申请的提交时间,但是在某些特殊的情况下,用户可能会在预约请求中指定具体的提交时间,这种情况下,以用户预约时的指定提交时间作为该购买申请的提交时间。确定所述提交时间后,该信息也要写入购买申请信息中,这样匹配分片才能够获取购买申请的提交时间并根据提交时间进行正确的处理。
步骤101-3:根据提交时间执行排队处理。
将包含提交时间的购买申请信息添加到按照提交时间排序的消息中间件的消息队列中。消息中间件(message oriented middleware)适用于需要可靠的数据传送的分布式环境。其基本工作原理是这样的:发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,其中,异步方式指消息发送方在发送消息时不必知道接收方的状态,也无需等待接收方的回复,而接收方在收到消息时也不必知道发送方的目前状态,更无需进行同步的消息处理,它们之间的连接完全是松耦合的,通信是非阻塞的,这种异步通信方式是由消息中间件中的消息队列及其服务机制保障的。
本申请的技术方案采用消息中间件以队列的方式存储购买申请信息,该队列遵循先进先出模式,并提供发布、消费的接口。用户发起预约后,本技术方案会按照前面描述的步骤生成购买申请、确定提交时间,并根据提交时间的先后顺序向所述队列中发布购买申请(即:添加购买申请),所以该队列是以购买申请的提交时间排序的(通常情况下,也可以认为是按照购买申请的生成时间排序的)。匹配分片启动后,从消息中间件的消息队列中依次拉取购买申请信息并进行匹配处理,采用这种方式,才能保证在每个匹配分片实现对购买申请的有序处理,从而实现本申请所述的连续匹配功能,关于匹配分片的处理过程请参见步骤102中的相关部分。
消息中间件是支持与保障分布式应用程序之间同步/异步收发消息的中间件,主要应用于各种分布式应用***中,本申请的技术方案如果在单机环境下部署实施,可以使用消息中间件,也可以使用遵循先进先出模式的普通队列,从某种意义上讲,可以认为队列是消息中间件的简化版本,在单机模式下采用队列同样可以实现本申请的技术方案。如果将本申请的技术方案部署在基于集群的分布式环境中,则应该采用消息中间件实现分布式应用之间的数据交换。
步骤102:所述匹配分片对生成时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。
为了进行匹配处理,在每个匹配分片启动的时候要先获取并加载产品信息,然后再对购买申请信息和已获取的产品信息进行匹配处理。整个处理过程包括6个子步骤,请参考附图3,其为本申请的匹配分片进行交易匹配处理的实施例流程图,下面分别针对各个子步骤加以说明。
步骤102-1:获取对购买申请进行匹配处理所需的产品信息。
匹配的过程,就是查找符合用户购买申请要求的产品信息的过程,产品信息通常存放在产品数据库中,匹配过程需要读取大量的产品数据信息,因此会频繁访问数据库,由于查询量巨大造成的压力,可能使数据库成为整个***的性能瓶颈,导致匹配效率低下。为了避免出现这一问题,本申请提供一种优选实施方式,即:在每个匹配分片启动的时候,先将进行匹配处理所需的产品信息加载到内存中,这样每次只须将购买申请信息与内存中的产品信息进行匹配就可以了,从而提高匹配效率。
在具体的实施过程中,考虑到内存空间是有限的,每次加载的产品信息不一定是产品数据库的全量数据,只需要加载当前匹配所需要使用的产品数据就可以了。在本实施例的一个具体例子中,当前分片主要用于进行用户购买申请和理财产品之间的匹配,因此在本步骤中就以较大的比例从产品数据库中加载理财产品,而且只加载拥有有效库存、处于在售状态并允许匹配的理财产品,而收益率越高、发布时间越早的产品在匹配过程中拥有越高的处理优先级,因此在内存空间受限的情况下,可以优先加载这部分产品数据。
步骤102-2:从消息中间件的消息队列中拉取购买申请信息。
进行购买申请信息和产品信息的匹配,需要先从消息中间件的消息队列中拉取购买申请信息,并将拉取的购买申请信息与产品信息进行匹配处理,这个过程也可以称为对购买申请进行消费的过程。
本申请所述的拉取,是指从消息中间件的消息队列中取出第一个购买申请信息,因为本申请的技术方案采用消息中间件以队列的方式存储购买申请信息,并且该队列遵循先进先出模式,这种队列只允许在队列的前端(front)进行删除操作(即:拉取操作),在队列的后端(rear)进行***操作(即:添加操作),而向队列中添加购买申请时是按照购买申请的提交时间排序的,即:提交时间较早的购买申请位于提交时间较晚的购买申请的前面,因此每次从队列中取出第一个购买申请进行处理,也符合匹配***通常的时间优先原则。
如果当前消息中间件队列为空,也就是说当前没有需要进行匹配处理的购买申请,这种情况下本匹配分片也不结束,而是继续保持工作状态,一直轮询检查消息中间件的消息队列中是否有新的购买申请到达,一旦消息中间件中有新的购买申请时,本匹配分片会立即拉取该购买申请信息并进行相应的处理。
步骤102-3:判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;如果是,说明当前拉取的购买申请属于本匹配分片的处理范围之内,因此继续执行步骤102-4进行匹配操作;如果不是,则说明当前拉取的购买申请已经不属于本匹配分片的管辖范围了,则转到步骤102-6执行。
步骤102-4:对所述购买申请信息和已获取的产品信息执行匹配操作。
将已经从消息中间件拉取的、并且应该由本匹配分片负责处理的购买申请信息,与产品信息进行匹配,查找是否存在满足购买申请要求的产品。在本实施例的一个具体例子中,用户根据自己的风险偏好和收益预期,在理财综合业务平台下发了一个购买理财产品的预约单,其中设定了对理财产品的要求,包括:期望收益率、产品类型、年限、购买金额等信息,在本步骤中,拉取到了该购买申请信息,则根据该购买申请信息设定的要求,从已经加载到内存的产品信息中查找满足上述要求的理财产品,如果找到满足上述要求的理财产品,则认为匹配成功。
步骤102-5:对匹配成功的购买申请和产品发起交易请求。
对于匹配成功的购买申请和产品,则自动发起交易,在交易过程中对产品的真实库存执行扣减动作。到这里,就成功地完成了一个购买申请的匹配过程。但是当前的匹配分片并没有结束,还要继续转到步骤102-2从消息中间件中拉取下一个购买申请并重复上述处理。
步骤102-6:将所述购买申请重新放入消息中间件的消息队列中,并结束当前分片。
之所以执行本步骤,是因为在步骤102-3中,发现当前拉取的购买申请信息包含的提交时间晚于当前匹配分片的处理截止时间,说明当前拉取的购买申请已经不属于当前匹配分片的管辖范围了,因此将该购买申请重新放入消息中间件的消息队列中(该购买申请会由后续的匹配分片处理),并结束当前分片。
下面以先后启动的两个匹配分片为例,对上述匹配分片的处理流程进行说明:预先设定匹配分片的启动时间间隔为5分钟,10:00:00启动了匹配分片1,并指定该匹配分片的处理截止时间为10:04:50,如果匹配分片1从消息中间件中拉取的购买申请的提交时间为10:02:00,则执行匹配当前购买申请信息和产品信息的操作,如果成功则发起交易;如果匹配分片1从消息中间件中拉取的购买申请的提交时间为10:04:55,则该购买申请已经不属于匹配分片1的处理范围了,这时该购买申请会被重新放回消息中间件,匹配分片1也就结束了。而匹配分片2在10:05:00启动,因此该购买申请会很快被匹配分片2拉取并进行相应的处理。
通过上面的例子可以看出,采用本申请提供的技术方案,虽然匹配分片是通过定时任务定期启动的,但是由于每个匹配分片都是一直处于工作状态,并且在上述例子中,由于每个匹配分片的处理截止时间仅仅略小于下一个匹配分片的启动时间,因此从时间维度上看,相邻的匹配分片近似处于连续工作状态,即:当前匹配分片结束后,下一个匹配分片也很快就启动了,从而当用户的购买申请提交后,可以得到及时地处理,这个效果近似等价于匹配***是处于一个连续匹配的工作状态中。
作为一种优选实施方式,如果每个匹配分片的处理截止时间等于下一个匹配分片的启动时间,那么,从时间维度上看,相邻的匹配分片就处于连续工作状态,前一个匹配分片结束时,下一个匹配分片必然已经启动了,其效果就是:用户的购买申请提交后,不需要等待启动新的匹配分片就可以得到及时处理,从而实现了功能上等价于连续匹配的匹配***。
一个匹配分片拉取的属于其处理区间的购买申请可能很多,以致该匹配分片的处理截止时间已经经过,这些购买申请的交易匹配过程还没有完成,则该匹配分片会继续完成这些交易的匹配;一个匹配分片不会因为截止时间已经到达,或者下一个匹配分片已经开始工作而停止工作,而是会继续工作到其管理的时间区间的所有交易匹配完成。
采用本申请提供的分片式交易匹配方法,可以在基于定时任务触发的匹配***中实现连续匹配功能,提高对用户请求的处理效率。在具体应用中,如果采用传统的单机匹配模式,虽然成本低廉、易于管理,但是存在以下两方面的缺点:一方面无法满足随着业务量增大而出现的扩容需求;另一方面无法应对宕机的情况,一旦宕机匹配***就完全不可用,用户的购买申请无法得到及时的处理。因此,在具体实施中,通常采用集群***共同完成匹配任务。当业务容量增长造成***匹配能力不足时,可以通过增加集群内部的匹配服务器的数量来进行扩展,从而平滑应对业务增长的压力;另外,当匹配集群中的某台匹配服务器无法正常工作时,可以将其从匹配集群中剔除,匹配任务继续由匹配集群中的其他服务器共同分担,从而保证了用户购买申请仍然能够得到及时的处理。
本申请提供的方法也可以应用于上述集群***,实现整个集群***的连续匹配,整个集群***的匹配处理依然是通过定时任务进行触发,具体的触发方式与单机模式有一些区别。为了与分布式处理机制相适应,定时任务将定时触发指令发送到预先指定的一台中心匹配服务器,或者随机发到一台匹配服务器,该服务器即成为当前的中心匹配服务器。中心匹配服务器根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间,例如,当前时间为t,预先设定的匹配分片处理时间区间的长度为n分钟,那么将要启动的匹配分片的处理截止时间=t+n。计算完毕,中心匹配服务器向集群中的所有匹配服务器发送包含上述处理截止时间的启动匹配指令,采用这种处理方式,可以使所有的匹配服务器能够几乎同时启动匹配分片,开始进行匹配处理。
中心匹配服务器除了完成上述计算处理截止时间、并向所有匹配服务器发送启动匹配指令外,还可以负责执行从产品数据库加载产品信息的任务。在单机模式下,匹配服务器在启动匹配分片时从产品数据库读取产品信息并加载到本地内存中,这样可以提高匹配分片执行匹配的效率,也能够减少对数据库的访问频率。
在分布式环境下如果仍然按照上述单机模式工作,在匹配分片的启动过程中,会出现大量并发的数据库访问,势必影响匹配分片的启动速度,而且每台匹配服务器执行的都是重复的数据库访问操作。为了改善上述状况,可以将从产品数据库读取产品信息的任务交由中心匹配服务器完成,即:中心匹配服务器从产品数据库中读取产品信息,并在分布式缓存中保存一份产品信息,然后再向分布式集群的所有匹配服务器发起启动匹配的指令,集群中的每台匹配服务器接收到指令后,在启动匹配分片时,先将分布式缓存中的产品信息复制到本匹配服务器的内存中,然后按照前面描述的步骤进行匹配处理。采用这种方式,既可以提高启动匹配分片的效率,同时也降低了由于大量并发访问对数据库造成的压力。(关于上面提到的分布式缓存的概念,请参见下文预扣减库存部分的相关描述。)
上面描述的技术方案采用的是定时任务触发中心匹配服务器、中心匹配服务器再触发所有匹配服务器的方式,在其他实施方式中,也可以采取由定时任务直接触发所有匹配服务器的方式;上面描述的技术方案采用由中心匹配服务器计算匹配分片的处理截止时间并发送给每台匹配服务器的方式,在其他实施方式中,也可以在每台匹配服务器上预先设置每个匹配分片的处理时间区间的长度,由各台匹配服务器自行根据当前的启动时间和预先设置的处理时间区间的长度计算得到当前匹配分片的处理截止时间;上面描述的技术方案采用由中心服务器加载产品信息的方式,在其他实施方式可以采用其他加载方式或者采用与单机模式类似的方式。上述都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。
采用单机模式或者是集群模式,在具体的实施过程中会有一些差别,但是都不影响本申请的技术方案的核心,只要按照本申请的技术方案,正确地指定匹配分片的处理截止时间,并且在没有拉取到提交时间晚于匹配分片处理截止时间的购买申请之前,所述匹配分片一直处于工作状态,那么就可以从时间维度上明确匹配分片的处理范围;基于这一确定性,还可以继续扩展本技术方案,将上述匹配分片的工作方式应用在基于定时任务的分片式匹配***中,并且通过对启动匹配分片的定时间隔和每个匹配分片的处理截止时间的合理设置,使每个匹配分片的处理截止时间略小于或者等于下一个匹配分片的启动时间,从而可以在基于定时任务的分片式匹配***中实现近似连续或者连续匹配功能,使得用户的购买申请能够得到及时地处理,提高匹配***的处理效率。
本申请的分片式交易匹配方法,还提供一种预扣减库存的优选实施方式,以实现在大规模并发匹配场景下对产品库存数量的有效管理。
在传统的交易平台中,一般有以下两种扣减库存的方式:1)在下单环节扣减库存;2)支付后扣减库存。在基于集群的分布式交易匹配***中,如果仍然采用传统交易平台的做法,那么在匹配阶段将可能出现大量热门产品超卖,虽然匹配成功,但是交易阶段扣减失败,导致这部分匹配成功的购买申请需要重新进行处理;如果在匹配阶段进行真实产品库存的扣减操作,又会对数据库造成巨大压力,形成整个匹配阶段的处理瓶颈,同样影响匹配***的处理效率。采用本申请提供的预扣减库存的优选实施方式,就可以解决上述问题。
实现本申请的预扣减库存方案,需要执行将产品库存数量加载到分布式缓存、执行扣减库存并获取扣减后数值的原子性操作、以及根据扣减后数值决定是否发起交易这三个方面的操作,下面逐一进行说明。
1)将产品库存数量存储到分布式缓存中。
在每个匹配分片启动时,除了要从产品数据库获取对购买申请进行匹配所需的产品信息之外,还应该将所述产品的库存数量存储到分布式缓存中,作为库存快照。
分布式缓存技术的出现,主要是基于数据共享的需求。在很多应用场景下,不同的应用程序或者不同的服务器在运行时需要多次处理相同的数据并与其他应用程序或者服务器共享处理结果。在传统模式下,这些应用程序或者服务器都是直接对数据库中存储的业务数据进行操作,虽然数据库是永久存储数据的主要存储区,但并不太适合运行时数据共享。其中一个原因在于,从数据库读取数据时不能始终保证高效的访问性能;其次,在处理事务方面数据库的扩展性并不好,因此很可能很快会成为瓶颈,并降低依赖于它的所有应用程序或者服务器的处理速度。
而采用分布式缓存可以解决这些问题。分布式缓存提供的数据内存缓存可以分布于大量单独的物理机器中,也可以这样理解,分布式缓存技术可跨越多个服务器,将多个服务器的内存集中在一块,因而内存存储容量具备较好的可扩展性,添加的服务器越多,能够处理的事务负载越大。采用分布式缓存技术,虽然物理上是在多个服务器之间分布工作,但是却为使用缓存的多个应用程序或者服务器提供了一个单一的高速缓存的逻辑视图,从而多个应用程序或者服务器可以方便地访问同一个缓存并通过缓存实现数据的共享。
分布式缓存是一项相对比较成熟的技术,是在集群之间相互共享数据的理想途径,目前存在的各种缓存产品也比较多,其中包括GemStone的GemFire、Tangosol的Coherence和GigaSpaces的Data Grid等。具体采用何种分布式缓存产品或者技术,不是本申请技术方案的核心,只要能够实现在集群之间共享并维护产品库存数量的功能即可,本申请对此不作具体的限定。
2)执行扣减库存并获取扣减后数值的原子性操作。
在每个匹配分片,从消息中间件拉取购买申请信息,并与产品信息匹配成功后,并不是直接对匹配成功的购买申请和产品发起交易请求,而是要先对匹配成功的产品的库存快照执行扣减操作,具体说是要执行扣减并获取扣减后数值的原子性操作,由于上述扣减动作是在匹配阶段进行的,不同于传统的在下单或者交易环节扣减,因此也可以称为“预扣减”操作。
之所以要在匹配阶段执行库存快照的预扣减操作,是为了避免出现超卖的现象,即:确保当前匹配成功的产品拥有有效库存数值,避免在交易阶段出现扣减真实库存失败的问题。为了使库存快照比较真实地反映每个产品当前还有多少库存可用于继续匹配,因此在每个匹配分片启动时,都会将当前的真实产品库存数量加载并存储到分布式缓存中,即:获取最新的库存快照,并且要求每台匹配服务器在匹配成功时都要执行预扣减库存快照的操作,从而保证库存快照的有效性。
那么在匹配集群的应用场景中,就不可避免地会出现来自多个匹配服务器的预扣减请求对库存快照的并发访问,由于每个访问都不知道有其他并发访问的存在,因此在读取同样的库存快照数值,并同时进行扣减时,就可能出现后执行的扣减操作重写由之前的扣减操作所做的更新,导致出现数据更新丢失的情况。
例如:某产品的库存快照数值为100,匹配服务器A请求扣减10,匹配服务器B请求扣减20,并且A、B同时请求扣减(即:并发请求),A和B都基于读取到的100执行各自的扣减操作,A从100扣减后得到90,而B也从100扣减后得到80的错误结果,也就是说匹配服务器A所作的扣减更新丢失了。
为了解决并发扣减存在的上述问题,必须对并发扣减操作进行访问控制,避免多个扣减请求同时修改库存快照导致数据更新丢失;另一方面,由于执行完扣减操作后还要根据扣减后库存数值判断是否发起交易,所以扣减库存后还要执行一次获取扣减后数值的操作,如果在这两个操作(扣减和获取)中间***其他扣减操作,那么上述获取操作就无法获得正确的数据。基于上述两方面的考虑,本申请提供的优选实施方式对匹配成功的产品的库存快照,执行“扣减并获取扣减后数值”的原子性操作。
本申请所述的“扣减并获取扣减后数值”的原子性操作指的是,当有多个请求同时对库存快照进行扣减操作时,会通过加锁或者是获取信号量等方式实现排队机制,保证多个并发请求对库存快照的访问是互斥的,而且必须将扣减库存快照和获取扣减后数值这两个操作作为一个完整的动作来执行,在整个动作未执行完毕之前,不允许执行其他扣减库存快照的操作,从而在保证库存快照正确性的同时,也确保每个请求都能得到正确的扣减后库存数值。
以上面相同的例子举例说明,某产品的库存快照数值为100,匹配服务器A请求扣减10,匹配服务器B请求扣减20,A、B同时请求,采用本申请所述的执行“扣减并获取扣减后数值”的原子性操作,如果匹配服务器A先获取了对库存快照的访问控制,那么结果是A得到扣减后库存数值为90,B随后获取对库存快照的访问控制,B得到扣减后库存数值为70;如果匹配服务器B先获取对库存快照的访问控制,那么结果就是B得到80,A得到70,上述两种情况下得到的结果都是正确的。
3)根据扣减后数值决定是否发起交易。
判断匹配成功的产品的扣减后库存数值是否大于零,若是,说明该产品目前存在有效的库存,在交易阶段可以成功执行对真实库存的扣减,因此对所述匹配成功的购买申请和产品发起交易请求;否则,说明该产品已经没有有效库存了,这种情况下,就不能发起相应的交易请求。
本申请提供的“预扣减库存”的优选实施方式,通过在每个匹配分片启动时将产品的库存数量存储到分布式缓存(即:库存快照)、在匹配成功后对相关产品的库存快照执行扣减并获取扣减后数值的原子性操作、并根据扣减后数值决定是否发起交易,实现了在大规模并发场景下对产品库存信息的有效管理,既做到在匹配阶段对产品库存的扣减总量不会超过真实库存,又避免了由于扣减真实库存导致的数据库访问性能瓶颈,从而不仅有效地提高了匹配效率和交易成功率,同时也提高了***的稳定性。
在上述的实施例中,提供了一种分片式交易匹配方法,与之相对应的,本申请还提供一种分片式交易匹配装置。
请参看图2,其为本申请提供的一种分片式交易匹配装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种分片式交易匹配装置,包括:分片启动单元201,用于启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;分片执行单元202,用于执行匹配分片的任务,即对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理。
可选的,所述装置包括:
定时任务单元,用于按照预定的时间间隔周期性地触发所述分片启动单元。
可选的,所述分片启动单元启动的每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。
可选的,所述装置还包括:
购买申请生成单元,用于根据用户的预约信息生成购买申请;
提交时间确定单元,用于根据购买申请的实际生成时间或者根据购买申请中的指定提交时间,确定所述购买申请的提交时间;
购买申请排队单元,用于将包含提交时间的购买申请信息添加到按照所述提交时间排序的消息中间件中;
相应的,所述分片执行单元具体用于,对位于消息中间件中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理。
可选的,所述分片启动单元包括:
产品信息获取子单元,用于获取对购买申请进行匹配处理所需的产品信息;
分片启动执行子单元,用于启动匹配分片。
可选的,所述分片执行单元包括:
购买申请拉取子单元,用于从消息中间件拉取购买申请信息;
匹配处理判断子单元,用于判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;
匹配处理子单元,用于当匹配处理判断子单元的输出结果为“是”时,将所述购买申请信息和所述已获取的产品信息进行匹配处理,并触发所述购买申请拉取子单元工作;
购买申请排队子单元,用于当匹配处理判断子单元的输出结果为“否”时,将所述购买申请信息重新放回所述消息中间件中,并终结所述分片执行单元。
可选的,所述分片执行单元还包括:
交易发起子单元,用于当所述匹配处理子单元匹配成功时,对匹配成功的购买申请和产品发起交易请求。
可选的,所述分片启动单元和所述分片执行单元由多台匹配服务器承担。
可选的,所述装置还包括:
触发指令发送单元,用于将启动分片的触发指令发送到一台中心匹配服务器;
启动指令发送单元,用于由中心匹配服务器向多台匹配服务器发送启动匹配的指令;
启动指令接收单元,用于接收所述启动指令发送子单元发送的启动匹配指令,并触发所述分片启动单元工作。
可选的,所述触发指令发送单元将触发指令发送到的中心匹配服务器,可以是预先指定的一台匹配服务器,也可以是随机选取的一台匹配服务器。
可选的,所述装置还包括:
截止时间计算单元,用于由所述中心匹配服务器根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间;
相应的,所述启动指令发送单元向多台匹配服务器发送的启动匹配指令中包含上述处理截止时间的信息。
可选的,所述分片启动单元和所述分片执行单元由多台匹配服务器承担;
并且,所述分片启动单元还包括:
库存快照生成子单元,用于将所述产品的库存数量存储到分布式缓存中,作为库存快照;
相应的,所述分片执行单元还包括:
库存快照扣减子单元,用于对所述匹配成功的产品的库存快照,执行扣减并获取扣减后数值的原子性操作;
库存快照判断子单元,用于判断所述扣减后数值是否大于零,并在所述扣减后数值大于零时,触发所述交易发起子单元工作。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (22)
1.一种分片式交易匹配方法,其特征在于,包括:
启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;
所述匹配分片对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理;
其中,所述启动匹配分片的步骤,按照预定的时间间隔周期性地执行。
2.根据权利要求1所述的分片式交易匹配方法,其特征在于,所述每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。
3.根据权利要求1-2任意一项所述的分片式交易匹配方法,其特征在于,包括:
根据用户的预约请求生成购买申请;
根据该购买申请的实际生成时间或者根据该购买申请中的指定提交时间,确定该购买申请的提交时间;
将包含所述提交时间的购买申请信息添加到按照所述提交时间排序的消息中间件的消息队列中;
相应的,所述匹配分片对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理是指,
所述匹配分片对位于消息中间件的消息队列中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理。
4.根据权利要求3所述的分片式交易匹配方法,其特征在于,所述匹配分片启动时,首先执行下述步骤:
获取对购买申请进行匹配处理所需的产品信息。
5.根据权利要求4所述的分片式交易匹配方法,其特征在于,所述匹配分片对位于消息中间件的消息队列中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理,包括:
从消息中间件中的消息队列中拉取购买申请信息;
判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;
若是,将所述购买申请信息和所述已获取的产品信息进行匹配处理,并转到从消息中间件中的消息队列中拉取购买申请信息的步骤;
若否,将所述购买申请信息重新放回所述消息中间件中,并结束当前匹配分片。
6.根据权利要求5所述的分片式交易匹配方法,其特征在于,将所述购买申请信息和所述已获取的产品信息进行匹配处理后,先执行下述步骤,然后再转到从消息中间件中的消息队列中拉取购买申请信息的步骤执行:
对匹配成功的购买申请和产品发起交易请求。
7.根据权利要求1-2、4-6任意一项所述的分片式交易匹配方法,其特征在于,所述启动匹配分片和交易匹配处理的步骤由多台匹配服务器同时执行。
8.根据权利要求7所述的分片式交易匹配方法,其特征在于,多台匹配服务器同时执行启动分片的步骤,包括:
将启动匹配分片的触发指令发送到一台中心匹配服务器;
所述中心匹配服务器向其它匹配服务器和/或该中心匹配服务器自身发送启动匹配的指令;
接收到启动匹配指令的匹配服务器启动匹配分片。
9.根据权利要求8所述的分片式交易匹配方法,其特征在于,所述中心匹配服务器可以是预先指定的一台匹配服务器,也可以是随机选取的一台匹配服务器。
10.根据权利要求8所述的分片式交易匹配方法,其特征在于,在所述中心匹配服务器向多台匹配服务器发送启动匹配指令的步骤之前,所述中心匹配服务器执行下述操作:
根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间;
相应的,所述中心匹配服务器向多台匹配服务器发送的启动匹配指令中包含上述处理截止时间的信息。
11.根据权利要求6所述的分片式交易匹配方法,其特征在于,所述启动匹配分片的步骤由多台匹配服务器同时执行;
并且所述匹配分片启动时,除了要执行所述获取对购买申请进行匹配处理所需的产品信息的步骤之外,还要执行下述步骤:
将所述产品的库存数量存储到分布式缓存中,作为库存快照;
相应的,执行所述对匹配成功的购买申请和产品发起交易请求之前,执行下述步骤:
对所述匹配成功的产品的库存快照,执行扣减并获取扣减后数值的原子性操作;
判断所述扣减后数值是否大于零;
若是,则执行所述对匹配成功的购买申请和产品发起交易请求的步骤;若否,则不执行该步骤;
其中,所述的原子性操作指的是,当有多个请求同时对库存快照进行扣减操作时,通过排队机制保证并发请求对库存快照的访问是互斥的,而且必须将扣减库存快照和获取扣减后数值这两个操作作为一个完整的动作来执行,在整个动作未执行完毕之前,不允许执行其他扣减库存快照的操作。
12.一种分片式交易匹配装置,其特征在于,包括:
分片启动单元,用于启动匹配分片,所述匹配分片包含处理截止时间的信息,该处理截止时间是相对于匹配分片的启动时间点而言,处于未来的一个确定的时间点;
分片执行单元,用于执行匹配分片的任务,即对提交时间早于或等于所述处理截止时间的购买申请进行交易匹配处理;
还包括:定时任务单元,用于按照预定的时间间隔周期性地触发所述分片启动单元。
13.根据权利要求12所述的分片式交易匹配装置,其特征在于,所述分片启动单元启动的每个匹配分片的处理截止时间等于下一个匹配分片的启动时间。
14.根据权利要求12-13任意一项所述的分片式交易匹配装置,其特征在于,还包括:
购买申请生成单元,用于根据用户的预约信息生成购买申请;
提交时间确定单元,用于根据购买申请的实际生成时间或者根据购买申请中的指定提交时间,确定所述购买申请的提交时间;
购买申请排队单元,用于将包含提交时间的购买申请信息添加到按照所述提交时间排序的消息中间件中;
相应的,所述分片执行单元具体用于,对位于消息中间件中的、且所包含的购买申请的提交时间早于或等于所述处理截止时间的购买申请进行匹配处理。
15.根据权利要求14所述的分片式交易匹配装置,其特征在于,所述分片启动单元包括:
产品信息获取子单元,用于获取对购买申请进行匹配处理所需的产品信息;
分片启动执行子单元,用于启动匹配分片。
16.根据权利要求15所述的分片式交易匹配装置,其特征在于,所述分片执行单元包括:
购买申请拉取子单元,用于从消息中间件拉取购买申请信息;
匹配处理判断子单元,用于判断所述购买申请信息包含的提交时间是否早于或者等于当前匹配分片的处理截止时间;
匹配处理子单元,用于当匹配处理判断子单元的输出结果为“是”时,将所述购买申请信息和所述已获取的产品信息进行匹配处理,并触发所述购买申请拉取子单元工作;
购买申请排队子单元,用于当匹配处理判断子单元的输出结果为“否”时,将所述购买申请信息重新放回所述消息中间件中,并终结所述分片执行单元。
17.根据权利要求16所述的分片式交易匹配装置,其特征在于,所述分片执行单元还包括:
交易发起子单元,用于当所述匹配处理子单元匹配成功时,对匹配成功的购买申请和产品发起交易请求。
18.根据权利要求12-13、15-17任意一项所述的分片式交易匹配装置,其特征在于,所述分片启动单元和所述分片执行单元由多台匹配服务器承担。
19.根据权利要求18所述的分片式交易匹配装置,其特征在于,包括:
触发指令发送单元,用于将启动分片的触发指令发送到一台中心匹配服务器;
启动指令发送单元,用于由中心匹配服务器向多台匹配服务器发送启动匹配的指令;
启动指令接收单元,用于接收所述启动指令发送子单元发送的启动匹配指令,并触发所述分片启动单元工作。
20.根据权利要求19所述的分片式交易匹配装置,其特征在于,所述触发指令发送单元将触发指令发送到的中心匹配服务器,可以是预先指定的一台匹配服务器,也可以是随机选取的一台匹配服务器。
21.根据权利要求19所述的分片式交易匹配装置,其特征在于,包括:
截止时间计算单元,用于由所述中心匹配服务器根据当前时间与预先设定的匹配分片处理时间区间的长度,计算将要启动的匹配分片的处理截止时间;
相应的,所述启动指令发送单元向多台匹配服务器发送的启动匹配指令中包含上述处理截止时间的信息。
22.根据权利要求17所述的分片式交易匹配装置,其特征在于,所述分片启动单元和所述分片执行单元由多台匹配服务器承担;
并且,所述分片启动单元还包括:
库存快照生成子单元,用于将所述产品的库存数量存储到分布式缓存中,作为库存快照;
相应的,所述分片执行单元还包括:
库存快照扣减子单元,用于对所述匹配成功的产品的库存快照,执行扣减并获取扣减后数值的原子性操作;
库存快照判断子单元,用于判断所述扣减后数值是否大于零,并在所述扣减后数值大于零时,触发所述交易发起子单元工作;
其中,所述的原子性操作指的是,当有多个请求同时对库存快照进行扣减操作时,通过排队机制保证并发请求对库存快照的访问是互斥的,而且必须将扣减库存快照和获取扣减后数值这两个操作作为一个完整的动作来执行,在整个动作未执行完毕之前,不允许执行其他扣减库存快照的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410153940.4A CN105096122B (zh) | 2014-04-16 | 2014-04-16 | 一种分片式交易匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410153940.4A CN105096122B (zh) | 2014-04-16 | 2014-04-16 | 一种分片式交易匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105096122A CN105096122A (zh) | 2015-11-25 |
CN105096122B true CN105096122B (zh) | 2019-04-12 |
Family
ID=54576488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410153940.4A Active CN105096122B (zh) | 2014-04-16 | 2014-04-16 | 一种分片式交易匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105096122B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107274290B (zh) * | 2016-04-07 | 2020-12-18 | 创新先进技术有限公司 | 数据处理方法及装置 |
CN106789741B (zh) * | 2016-12-26 | 2020-02-18 | 北京奇虎科技有限公司 | 消息队列的消费方法及装置 |
CN110599277A (zh) * | 2018-06-12 | 2019-12-20 | 北京京东尚科信息技术有限公司 | 一种库存扣减方法和装置 |
CN109710394A (zh) * | 2018-12-27 | 2019-05-03 | 出门问问信息科技有限公司 | 定时任务处理***及方法 |
CN110310060B (zh) * | 2019-05-27 | 2023-10-24 | 创新先进技术有限公司 | 基于分片的库存管理方法以及装置 |
CN110968265B (zh) * | 2019-11-05 | 2023-08-08 | 北京字节跳动网络技术有限公司 | 分片扩容方法、装置及电子设备 |
CN112102040A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 一种分布式环境下全局库存控制方法及*** |
CN112819600B (zh) * | 2021-02-25 | 2024-06-07 | 深圳前海微众银行股份有限公司 | 定时任务的执行方法、装置、设备及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446910A (zh) * | 2008-12-08 | 2009-06-03 | 哈尔滨工程大学 | 基于smp的aedf任务调度方法 |
CN102073963A (zh) * | 2011-01-05 | 2011-05-25 | 阎东升 | 现货连续交易***和方法 |
CN103095706A (zh) * | 2013-01-17 | 2013-05-08 | 苏州亿倍信息技术有限公司 | 一种终端安全的处理方法及*** |
CN103346902A (zh) * | 2013-06-19 | 2013-10-09 | 北京华胜天成科技股份有限公司 | 数据采集调度的方法及*** |
-
2014
- 2014-04-16 CN CN201410153940.4A patent/CN105096122B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446910A (zh) * | 2008-12-08 | 2009-06-03 | 哈尔滨工程大学 | 基于smp的aedf任务调度方法 |
CN102073963A (zh) * | 2011-01-05 | 2011-05-25 | 阎东升 | 现货连续交易***和方法 |
CN103095706A (zh) * | 2013-01-17 | 2013-05-08 | 苏州亿倍信息技术有限公司 | 一种终端安全的处理方法及*** |
CN103346902A (zh) * | 2013-06-19 | 2013-10-09 | 北京华胜天成科技股份有限公司 | 数据采集调度的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN105096122A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105096122B (zh) | 一种分片式交易匹配方法和装置 | |
US11797347B2 (en) | Managing multileg transactions in distributed and parallel environments | |
CN109639521B (zh) | 区块链性能的测试方法、装置、设备及存储介质 | |
CN105096065B (zh) | 一种库存扣减方法和装置 | |
US9888048B1 (en) | Supporting millions of parallel light weight data streams in a distributed system | |
CN109324757A (zh) | 区块链数据缩容方法、装置及存储介质 | |
CN108694199A (zh) | 数据同步装置、方法、存储介质及电子设备 | |
CN110740184B (zh) | 基于微服务架构的交易策略测试*** | |
CN105912402B (zh) | 一种基于Actor模型的调度方法及装置 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度***及服务器集群 | |
CN105677673B (zh) | 业务处理方法、装置及*** | |
WO2013049241A1 (en) | High throughput global order promising system | |
US20090037913A1 (en) | Methods and systems for coordinated transactions | |
US9141446B2 (en) | Maintenance of message serialization in multi-queue messaging environments | |
WO2019014004A1 (en) | MESSAGING CONVERSATION MANAGEMENT SYSTEMS | |
CN108809855A (zh) | 消息管理方法、装置及电子设备 | |
US11283698B2 (en) | Optimizing timeout settings for nodes in a workflow | |
CN106257893A (zh) | 存储服务器任务响应方法、客户端、服务器及*** | |
CN110188110A (zh) | 一种构建分布式锁的方法及装置 | |
JP2020506470A (ja) | 取引対象予約システム、方法、及び装置 | |
Tang et al. | Dependent task offloading for multiple jobs in edge computing | |
CN111813868B (zh) | 数据同步方法及装置 | |
US10997569B2 (en) | Method and device for processing virtual cards | |
CN106953933B (zh) | 一种消息推送方法及装置、电子设备 | |
JP2022521412A (ja) | 分散システムにおける非同期ストレージ管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191210 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: Alibaba Group Holding Co., Ltd. |
|
TR01 | Transfer of patent right |