热点账户的交易处理方法、装置、设备和介质与流程

未命名 10-18 阅读:110 评论:0


1.本公开涉及分布式技术领域,可以用于金融领域,更具体地涉及一种热点账户的交易处理方法、装置、设备、存储介质和程序产品。


背景技术:

2.在银行业务中,存在很多账户在短时间内涌现大量访问以进行账户数据更新场景,这些账户可以称之为热点账户。例如,秒杀等促销场景下,多个账户短时间内向同一个商户账户的付款的场景。在热点账户更新的最热期间,往往单个账户一秒内更新量能够达到几十甚至上百笔交易。在处理账户入账或出账的交易时,为了保证事务一致性,都需要对热点账户上锁,在该笔交易结束后释放锁,然后进行下一笔交易。因此,当短期内集中访问某个热点账户时,该热点账户需要反复被锁定,而且由于访问量太大,往往会导致更新热点账户的交易响应时间大幅增加,占用数据库宝贵资源(诸如网络连接数、内存、cpu等),从而导致影响其他交易的接入和运行,严重者甚至导致交易堵塞,数据库宕机。因此,有必要对热点账户的热点交易进行优化,以提高在热点账户访问高峰期间的响应速率,降低热点账户的锁账户时间。


技术实现要素:

3.鉴于上述问题,本公开提供了一种分布式数据库中热点账户的交易处理方法、装置、设备、介质和程序产品,通过减少分布式数据库中热点账户的热点事务处理过程中的网络交互次数,缩短热点账户中热点事务的处理时间,提高热点账户的相应速率。
4.本公开实施例的第一方面,提供了一种分布式数据库中热点账户的交易处理方法。所述方法包括:接收对第一热点账户的第一交易处理请求;以及响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务。其中执行所述第一交易处理请求对应的第一事务包括:调用所述第一事务对应的第一业务功能模块,其中,所述第一业务功能模块安装在所述分布式数据库中存储所述热点账户的节点中,所述第一业务功能模块为对所述第一事务中的多个操作封装得到的;以及执行所述第一业务功能模块,其中,当所述第一业务功能模块获取到对所述第一热点账户的访问权限时,先对所述第一热点账户上锁,然后执行所述第一业务功能模块中的所有操作,并在所述第一业务功能模块中的所有操作执行完成后再释放锁。
5.根据本公开的实施例所述方法还包括预先配置所述第一业务功能模块,包括:封装所述第一事务中的第二类操作,以得到所述第一业务功能模块;以及安装所述第一业务功能模块到所述分布式数据库中记录所述热点账户的存储节点中。其中,所述第一事务中的操作被划分为第一类操作和所述第二类操作,其中,所述第一类操作为不受所述热点账户中的数据更新变化影响的操作。
6.根据本公开的实施例,所述响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务还包括:在所述调用所述第一事务对应的第一业务功能模块之前,
执行所述第一事务中的所述第一类操作,得到所述第一类操作的执行结果;以及在所述调用所述第一事务对应的第一业务功能模块时,将所述第一类操作的执行结果发送给所述第一业务功能模块。
7.根据本公开的实施例,所述预先配置所述第一业务功能模块还包括:在所述封装所述第一事务中的第二类操作之前,从所述分布式数据库的sql运行性能报表中,查找出在执行所述第一事务时从对所述第一热点账户上锁到释放锁整个过程中的所有操作,以得到所述第一事务的所有操作。
8.根据本公开的实施例,当所述第一业务功能模块中的所有操作所操作的数据记录除了所述第一热点账户外还包括其他记录时,在所述执行所述第一交易处理请求对应的第一事务之前,所述方法还包括:预先配置所述其他记录所在的数据表的分片规则,与所述热点账户所在的数据表中的分片规则一致,以使得所述第一热点账户和所述其他记录均存储在所述分布式数据库中同一节点中。其中,每个数据表中的记录按照每个数据表的分片规则分别存储到所述分布式数据库的各个节点中。
9.根据本公开的实施例,所述方法还包括获取所述分布式数据库中的热点账户和每个热点账户对应的热点事务,包括:基于所述分布式数据库的sql运行性能报表中每个记录的上锁时间性能参数,筛选出热点账户;以及根据每个热点账户需要被上锁才能执行的至少一种事务的上锁时长记录,筛选出每个热点账户对应的热点事务。其中,所述第一热点账户为所述分布式数据库中的任意一个热点账户,以及所述第一事务为所述第一热点账户对应的任意一个热点事务。
10.根据本公开的实施例,所述第一业务功能模块为存储过程。
11.本公开实施例的第二方面,提供了一种分布式数据库中热点账户的交易处理装置。所述装置包括请求接收模块和热点事务处理模块。请求接收模块用于接收对第一热点账户的第一交易处理请求。热点事务处理模块用于响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务。
12.其中,所述热点事务处理模块包括业务功能模块调用单元和业务功能模块执行单元。业务功能模块调用单元用于调用所述第一事务对应的第一业务功能模块,其中,所述第一业务功能模块安装在所述分布式数据库中存储所述热点账户的节点中,所述第一业务功能模块为对所述第一事务中的多个操作封装得到的。业务功能模块执行单元用于执行所述第一业务功能模块,具体包括:当所述第一业务功能模块获取到对所述第一热点账户的访问权限时,先对所述第一热点账户上锁,然后执行所述第一业务功能模块中的所有操作,并在所述第一业务功能模块中的所有操作执行完成后再释放锁。
13.本公开实施例的第三方面,提供了一种电子设备。所述电子设备包括一个或多个处理器和存储器。所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
14.本公开实施例的第四方面,还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
15.本公开实施例的第五方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
16.上述一个或多个实施例具有如下优点或有益效果:可以至少部分地减轻分布式数
据库中热点账户在访问高峰期响应慢、易阻塞的问题,在每次执行到热点账户的该热点交易时,通过网络交互一次来调用业务功能模块,并在热点账户上锁后触发业务功能模块中的多个操作的执行。由于业务功能模块与热点账户都处于同一个存储节点中,从而业务功能模块中的大部分甚至全部操作,都可以是通过内存交互的方式操作热点账户。因此可以减少分布式数据库中热点交易执行过程中的网络交互次数,缩短或节约网络交互时间,提升分布式数据库中热点账户的吞吐速率,提高了热点账户处理性能。
附图说明
17.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
18.图1示意性示出了根据本公开实施例的热点账户的交易处理方法、装置、设备、介质和程序产品的应用场景图;
19.图2示意性示出了根据本公开一实施例的热点账户的交易处理方法的流程图;
20.图3示意性示出了根据本公开另一实施例的热点账户的交易处理方法的流程图;
21.图4示意性示出了实现根据本公开实施例的热点账户的交易处理方法的后端服务系统的系统架构;
22.图5示意性示出了本公开一实施例的热点账户的交易处理方法中在热点账户交易之前预先设置业务功能模块的流程图;
23.图6示意性示出了本公开再一实施例的热点账户的交易处理方法的流程图;
24.图7示意性示出了本公开实施例的热点账户的交易处理装置的结构框图;以及
25.图8示意性示出了适于实现根据本公开实施例的热点账户的交易处理方法的电子设备的方框图。
具体实施方式
26.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
27.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
28.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
29.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对
重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。
30.随着业务和技术发展,目前银行将业务从原来的ibm大型机下移到开发平台分布式技术系统上,使用分布式数据库。这样,从数据库中读写数据的方式,从原来的内存交互变成了网络交互,这样会导致交易整体响应时间增加。这一影响在热点账户的访问高峰期尤其明显,会导致热点账户的上锁时间明显增加。由于单个热点账户每秒理论吞吐为:1/单个交易持有热点账户锁的时间,因此在分布式数据库中,相比于传统的ibm大型机中,在热点账户的访问高峰期,单个热点账户吞吐速率往往会明显下降。
31.相关技术中对于分布式数据库中的热点账户,往往通过应用侧方法优化(诸如服务降级等)。然而这些方法都对业务有感,往往有到账时间延迟等负作用,正因此往往需要征得热点账户的所有者同意才能实施,而且难以直接推广到其他热点账户。
32.有鉴于此,本公开提供了一种分布式数据库中热点账户的交易处理方法,通过优化热点交易执行过程中分布式数据库中的网络交互次数,提高分布式热点账户的响应效率,既对业务和客户透明,又能提高分布式数据库热点账户吞吐速率。
33.具体地,发明人对分布式数据库中热点账户中的交易执行过程进了分析,发现一个热点账户中的热点交易在执行时,从上锁到事务提交释放锁为止,其中所涉及的所有操作中,存在有可以提前到对热点账户上锁之前的查询sql(例如,查询交易时间的sql等),以及不能提前sql和业务逻辑((例如,如需要依赖热点账户的更新结果来处理的各种sql或操作)。这样,如果将可以提前的查询sql等操作提前到热点账户上锁之前,将不能提前到锁热点账户之前的操作都封装到一个业务功能模块中,然后将该业务功能模块安装到分布式数据库中该热点账户所在的存储节点中。这样,每次执行到热点账户的该热点交易时,可以通过网络交互一次来调用业务功能模块,并在热点账户上锁后触发业务功能模块中的多个操作的执行。由于业务功能模块与热点账户都处于同一个存储节点中,从而业务功能模块中的大部分甚至全部操作,都可以是通过内存交互的方式操作热点账户。以此方式,可以减少分布式数据库中热点交易执行过程中的网络交互次数,缩短或节约网络交互时间,从而提升分布式数据库中热点账户的吞吐速率,提高了热点账户处理性能。
34.图1示意性示出了根据本公开实施例的热点账户的交易处理方法、装置、设备、介质和程序产品的应用场景图。
35.如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和后端服务系统105。网络104为用以在终端设备101、102、103和后端服务系统105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
36.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、第三方支付应用、手机银行应用、邮箱客户端、社交平台软件等(仅为示例)。
37.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
38.后端服务系统105可以是对用户利用终端设备101、102、103所浏览的网站提供后端服务支持的后台服务器集群。
39.根据本公开的实施例,后端服务系统105可以是银行的账户管理系统。后端服务系统105中设置有分布式数据库,其中通过分布式数据库进行数据存储和读写。
40.后端服务系统105中的分布式数据库可以是下文图4所示的分布式数据库504。
41.在此以分布式数据库504为例,对分布式数据库示例性说明如下。分布式数据库504可以包括多个协调节点单元502和多个数据节点单元503。每个协调节点单元502和每个数据节点单元503可以分别为一个设备(例如,一台服务器或一个存储设备)。在分布式数据库504中,多个协调节点单元502和数据节点单元503之间相互通信,对外提供数据存储和读写服务。分布式数据库504将按照针对每个数据表设置的分片规则,将每个数据表中的数据打散到不同数据节点单元503中存储,并由多个协调节点单元502将由外部请求所触发的sql分发到对应的数据节点单元503。以此方式,分布式数据库504通过多个协调节点单元502和多个数据节点单元503以及其他组件一起组合,对外界感觉像一个数据库,而且通过多个数据节点单元503的使用,可以提高数据存储量以及读写性能。
42.在分布式数据库504中,一个账户的信息(例如,账户名、账户编号、账户所有者的信息、账户余额、账户入账额、或账户出账额等)在数据表中形成一项或一条数据记录。而热点账户为分布式数据库中访问热度较高的账户,具体可以根据一定的条件来筛选。
43.在应用场景100中,本公开实施例所提供的热点账户的交易处理方法一般可以由后端服务系统105执行。相应地,本公开实施例所提供的热点账户的交易处理装置一般可以设置于后端服务系统105中。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
44.以下将基于图1描述的应用场景,通过图2~图6对本公开实施例的热点账户的交易处理方法进行详细描述。
45.图2示意性示出了根据本公开实施例的热点账户的交易处理方法的流程图。
46.如图2所示,该热点账户的交易处理方法可以包括操作s210~操作s220。
47.首先在操作s210,接收对第一热点账户的第一交易处理请求。例如,后端服务系统105接收用户在终端设备101、102、103中的客户端中的操作,而发起的处理请求。
48.该第一热点账户可以是分布式数据库504中筛选出的热点账户中的任意一个热点账户。
49.然后在操作s220,响应于第一交易处理请求,执行第一交易处理请求对应的第一事务。
50.该第一事务是第一热点账户对应的热点事务中的任意一个。其中,当从分布式数据库504中第一热点账户后,可以根据历史记录中第一热点账户中各种事务的热度(例如,事务的执行频次、或者事务执行时第一热点账户被锁定的时长参数等),筛选出第一热点账户的所有热点事务。
51.相应地,操作s220具体包括操作s221和操作s222。
52.在操作s221,调用第一事务对应的第一业务功能模块,其中,第一业务功能模块安装在分布式数据库504中存储第一热点账户的节点(如,数据节点单元503)中。
53.第一业务功能模块为对第一事务中的多个操作封装得到的。例如,将第一事务中的该多个操作封装为存储过程。
54.在操作s222,执行第一业务功能模块。具体地,当第一业务功能模块获取到对第一热点账户的访问权限时,先对第一热点账户上锁,然后执行第一业务功能模块中的所有操作,并在业务功能模块中的所有操作执行完成后再释放锁。
55.第一事务中的操作可以包括一系列sql操作(例如,更新数据、打上时问戳、反馈执行结果)和/或其他业务操作(例如生成交易明细、记录交易日志)。
56.在一个实施例中,封装到第一业务功能模块中的多个操作,可以是第一事务中的全部操作。
57.在另一实施例中,封装到第一业务功能模块中的多个操作,也可以是第一事务中的部分操作。例如,可以将第一事务中对热点账户的数据进行更新的操作、依赖热点账户的更新结果进行处理的操作封装到第一业务功能模块中,而将第一事务中的其他操作提前。其中依赖热点账户的更新结果进行处理的sql操作包括但不限于:登记客户的交易明细表、插入用来核对账务的应用日志表等,这些都需要记录更新前后账户余额和发生额。
58.本公开实施例中通过第一业务功能模块在存储热点账户的节点中的执行,可以实现一次网络调用执行多个操作,避免了相关技术中在分布式数据库中,对热点账户执行热点事务时,往往要将热点事务中的所有操作指令(如,sql查询任务)逐个通过网络分发到数据库节点。
59.可见,与相关技术相比,本公开实施例可以缩短热点事务中执行中指令分发的网络通信时间,从而缩短热点事务锁热点账户的时间,提升分布式数据库中热点账户的热点事务的处理性能,并对客户和业务透明。
60.在一个实施例中,第一业务功能模块中可以仅包含以第一热点账户为操作对象的操作。
61.在另一些实施例中,第一业务功能模块中的多个操作除了操作第一热点账户(例如,更新账户余额)外,还可以涉及对分布式数据表中的其他记录的操作。例如,假设第一热点账户记录在账户信息表中,第一业务功能模块中的操作除了更新热点账户中的数据外,还需要在交易明细表中生成对第一热点账户的明细变更记录,其中,交易明细表为与账户信息表不同的另一数据表。这种情况下,如果交易明细表中记录第一热点账户的明细变更记录与第一热点账户存放在分布式数据库504中的不同节点(如图4中的不同数据节点单元503)时,就不免要在分布式数据库504内部进行网络通信。在这种情况下,可以通过对交易明细表和账户信息表的分片规则设置为一致,使得第一热点账户的变更明细记录和第一热点账户均存在同一节点中,就可以避免第一业务功能模块执行过程中分布式数据库504内部的网络通信。具体实现过程可以参考图3的示意。
62.图3示意性示出了根据本公开另一实施例的热点账户的交易处理方法的流程图。
63.如图3所示,根据本公开实施例,该热点账户的交易处理方法在操作s210之前,还可以包括操作s310。其中,第一业务功能模块中的所有操作所操作的数据记录除了第一热点账户外还包括其他记录。
64.在操作s310,预先配置上述其他记录所在的数据表的分片规则,与热点账户所在的数据表中的分片规则一致。
65.由于分布式数据库中504,每个数据表中的记录按照每个数据表的分片规则分别存储到分布式数据库504的各个数据节点单元503。从而,当其他记录所在的数据表的分片
规则,与热点账户所在的数据表中的分片规则一致,例如都以热点账户的账户编号作为节点划分的依据,可以实现在分布式数据库504中,第一热点账户和其他记录均存储在分布式数据库504中同一节点中。
66.这样,第一业务功能模块中的多个操作的执行,均可以在分布式数据库504中存在热点账户的存储器节点中执行,避免在分布式数据库504内部的网络通信,进一步提高分布式数据库504中热点账户对应的热点事务的执行效率。
67.图4示意性示出了实现根据本公开实施例的热点账户的交易处理方法的后端服务系统105的系统架构。
68.如图4所示,结合图1,该后端服务系统105可以包括交易运行单元501、分布式数据库504、性能报表单元505和业务功能模块打包单元506。
69.交易运行单元501:负责提供应用交易运行环境,运行业务逻辑,并给分布式数据库504下发数据访问请求(诸如,数据库事务中的sql)。例如,用户通过终端设备101、102、103中的客户端应用发起的交易处理请求,在后端服务系统105中可以先到达交易运行单元501,由交易运行单元501识别交易处理请求中的业务逻辑(诸如要操作的账户、要执行数据库事务等)。然后向分布式数据库504中该交易处理请求所要操作的账户下发sql。
70.分布式数据库504包括多个协调节点单元502和多个数据节点单元503。
71.具体地,协调节点单元502负责接收来自交易运行单元101下发的数据访问请求,并向其返回执行结果。其中,协调节点单元502在接收到数据访问请求后负责分解其中sql,并根据分布式数据库504中的分片规则和每个sql所要操作的记录项,调度sql至对应的数据节点单元503上执行。
72.数据节点单元503:负责存储数据并执行协调节点单元502下发的sql操作(诸如,数据查询、dml操作等),然后向协调节点单元502返回执行结果。
73.性能报表单元505:负责记录和提供分布式数据库504中的sql运行性能报表,包括每个sql的操作对象、操作动作、运行时间,以及数据库中每条数据记录的上锁时间性能参数(如该条记录上的sql等锁时间和/或表上等锁时间)等。
74.根据本公开的实施例,性能报表单元505还可以用于:根据上述sql等锁时间和/或表上等锁时间等上锁时间性能参数,可以筛选出分布式数据库504中的热点账户后。例如,从sql运行性能报表中获取到对同一个记录执行同一种sql操作的sql等锁时间,以及从记录的维度获取到对同一个记录进行操作时各种sql操作累加的表上等锁时间等,可以基于这两个上锁时间性能参数筛选出热点账户。
75.筛选出热点账户后,还可以根据性能报表单元505中记录的每个热点账户需要被上锁才能执行的事务的上锁时长记录,筛选出每个热点账户对应的热点事务。例如某些热点账户(如商铺账户)的交易收款业务属于热点事务,而向外付款业务则不属于热点事务,则确定出该热点账户的收款交易为热点事务。
76.业务功能模块打包单元506:然后在筛选出热点账户及热点账户对应的热点事务后,针对每个热点事务,生成对应的业务功能模块,然后将生成的业务功能模块安装在热点账户所在的数据节点单元503中,并向交易运行单元501提供调用接口。
77.其中,业务功能模块打包单元506生成业务功能模块的过程,可以参考图5的示例。
78.图5示意性示出了本公开一实施例的热点账户的交易处理方法中在热点账户交易
之前预先设置业务功能模块的流程图。
79.如图5所示,以第一业务功能模块为例,设置第一业务功能模块的过程包括操作s510~操作s530。
80.在操作s510,从分布式数据库504的sql运行性能报表中,查找出在执行第一事务时从对第一热点账户上锁到释放锁整个过程中的所有操作,以得到第一事务的所有操作。
81.然后在操作s520,封装第一事务中的第二类操作,以得到第一业务功能模块。
82.第一事务中的操作被划分为第一类操作和第二类操作,其中,第一类操作为不受热点账户中的数据更新变化影响的操作。
83.可以从性能报表单元505中记录的热点账户的热点事务的执行过程中,查询出该热点账户从上锁到释放锁所整个过程中的所有sql以及业务逻辑等操作。然后可以分析该热点账户从上锁到释放锁所整个过程中的所有操作,并根据这些操作的结果是否受热点账户中的数据更新变化影响,划分为两类。
84.其中,第一类操作可以是不受热点账户中的数据更新影响的各种sql查询操作,例如查询时间的sql操作、查询付款的用户信息的sql操作、查询交易发生的位置等信息的sql操作等。
85.第一类操作之外的sql操作,例如对热点账户的数据进行更新的操作、需要依赖更新后的结果来处理的sql操作、需要在热点账户的数据更新后记录日志或记录明细信息的操作等,均划分为第二类操作。
86.然后可以对热点账户的热点事务中的所有操作的顺序重新编排,将第一类操作全部提到第二类操作之前,并将第二类操作封装为一个业务功能模块。该封装过程例如可以是以数据库中的存储过程进行封装。
87.接下来在操作s530,安装第一业务功能模块到分布式数据库中记录热点账户的存储节点中。
88.在封装得到业务功能模块后,可以将业务功能模块安装到分布式数据库中记录该热点账户的信息的数据节点单元503中,并给交易运行单元501提供调用接口。
89.由于热点事务中的第一类操作被提到第二类操作之前,所以当触发热点事务时,先执行热点事务中的第一类操作,而且由于第一类操作执行时并不需要锁表,所以不影响热点账户的其他访问用户。然后在调用第一事务对应的第一业务功能模块时,将第一类操作的执行结果(例如,时间戳、交易发起用户、交易发起地点、交易发起设备信息等参数)一并发送给第一业务功能模块。
90.可见,根据本公开实施例,当用户通过终端设备101、102、103中的客户端中的操作,触发热点账户中的热点事务的处理时,交易运行单元501可以调用该业务功能模块,一次网络调用触发多个操作执行。
91.其中,业务功能模块执行时,先对热点账户上锁,然后执行该业务功能模块中的所有操作,执行完成后再释放锁。这样,业务功能模块中的大部分操作或全部操作都可以在热点账户数据节点单元503本地执行,减少了相关技术中在对热点账户上锁后,执行操作时需要先从交易运行单元501向协调节点单元502下发sql,再到协调节点单元502调度sql到具体的数据节点单元503之间的网络传输时间。
92.当要确保业务功能模块中的所有操作都可以在热点账户数据节点单元503本地执
行时,可以预先分析业务功能模块中所操作的数据记录除了热点账户外是否还有其他记录,如果有可以通过预先配置该其他记录所在的数据表在分布式数据库504中的分片规则与热点账户所在数据表的分片规则一致。以此方式,本公开实施例将热点事务中的多个操作封装在一起,并安装到热点账户所在的数据节点单元503,这样该多个操作只需要一次网络交互,就可以完成热点账户中热点事务的处理操作,大大加快热点账户处理效率,提升分布式数据库中热点账户的热点事务的处理性能,并对客户和业务透明。
93.图6示意性示出了本公开再一实施例的热点账户的交易处理方法的流程图。
94.如图6所示,该热点账户的交易处理方法可以包括操作s601~操作s605。
95.首先在操作s601,根据分布式数据库504的性能报表单元505中的sql性能报表,筛选出热点账户,确定出热点账户所在的数据表(即热点账户表)。
96.在操作s602,业务功能模块打包单元506,根据开发人员对热点账户中的热点事务中的操作的分类,将属于第一类操作的各种查询业务提前到锁热点账户前,并将开发人员划分到第二类的多条sql和业务逻辑封装为业务功能模块,该业务功能模块中的操作均需要在热点账户被锁定后才能执行。同时,如果在热点事务处理中存在随热点账户同步更新的其他记录时,配置其他记录的数据表的分片规则与热点账户表的分配规则配置为一致。
97.在操作s603,在分布式数据库504中存储热点账户的数据节点单元103中安装业务功能模块,并将业务功能模块的接口提供给交易运行单元501供调用。
98.在操作s604,交易运行单元501运行到热点账户的热点事务时,直接调用分布式数据库504中热点账户的热点事务对应的该业务功能模块的接口。一次调用实现相关技术中多次调用效果,减少交易运行单元501和分布式数据库504的网络交互。
99.在操作s605,由协调节点单元502判断业务功能模块中涉及的热点账户和其他记录(如有)所在的数据表,在分布式数据库中的分片规则是否一致。如不一致,则在调用了业务功能模块后,还涉及分布式数据库内部的数据节点单元503之间的通信。如一致,将业务功能模块的调用指令下推到数据节点单元503,从而优化了分布式数据库504内部节点网络交互次数,减少热点账户的交易持有锁时间,提升热点账户吞吐,减轻了生产运维压力。
100.本公开实施例的热点账户的交易处理方法,属于对后端服务系统105内部的网络交互过程的优化,对客户透明,所以无需征得客户签订协议同意,而且不会延迟客户账户到账时间,在服务不降级的情况下,提升了分布式数据库热点账户吞吐速率。发现热点账户后,可以快速实施,保证了分布式数据库热点账户问题的解决时效,可以有效进行方案扩展。
101.基于上述各个实施例的热点账户的交易处理方法,本公开实施例还提供了一种热点账户的交易处理装置。以下将结合图7对该装置进行详细描述。
102.图7示意性示出了本公开实施例的热点账户的交易处理装置700的结构框图。
103.如图7所示,根据本公开一些实施例,该装置700可以包括请求接收模块710和热点事务处理模块720。其中,热点事务处理模块720可以包括业务功能模块调用单元721和业务功能模块执行单元722。
104.请求接收模块710用于接收对第一热点账户的第一交易处理请求。在一个实施例中,请求接收模块710可以执行前文描述的操作s210。
105.热点事务处理模块720用于响应于第一交易处理请求,执行第一交易处理请求对
应的第一事务。在一个实施例中,热点事务处理模块720可以执行前文描述的操作s220。
106.具体地,业务功能模块调用单元721用于调用第一事务对应的第一业务功能模块,其中,第一业务功能模块安装在分布式数据库中存储热点账户的节点中,第一业务功能模块为对第一事务中的多个操作封装得到的。在一个实施例中,业务功能模块调用单元721可以执行前文介绍的操作s221。
107.业务功能模块执行单元722用于执行第一业务功能模块,具体包括:当第一业务功能模块获取到对第一热点账户的访问权限时,先对第一热点账户上锁,然后执行第一业务功能模块中的所有操作,并在业务功能模块中的所有操作执行完成后再释放锁。在一个实施例中,业务功能模块执行单元722可以执行前文介绍的操作s222。
108.根据本公开另一些实施例,装置700还可以进一步包括分片规则设置模块730、业务功能模块打包单元506和性能报表单元505中的至少一个。
109.分片规则设置单元730用于:当第一业务功能模块中的所有操作所操作的数据记录除了第一热点账户外还包括其他记录时,预先配置其他记录所在的数据表的分片规则,与热点账户所在的数据表中的分片规则一致,以使得第一热点账户和其他记录均存储在分布式数据库中同一节点中。其中,每个数据表中的记录按照每个数据表的分片规则分别存储到分布式数据库的各个节点中。在一个实施例中,分片规则设置单元730可以执行前文介绍的操作s310。
110.业务功能模块打包单元506用于:封装第一事务中的第二类操作,以得到第一业务功能模块;以及安装第一业务功能模块到分布式数据库中记录热点账户的存储节点中,其中,第一事务中的操作被划分为第一类操作和第二类操作,其中,第一类操作为不受热点账户中的数据更新变化影响的操作。在一个实施例中,业务功能模块打包单元506可以执行前文介绍的操作s520和操作s530。
111.性能报表单元505用于:在封装第一事务中的第二类操作之前,从分布式数据库的sql运行性能报表中,查找出在执行第一事务时从对第一热点账户上锁到释放锁整个过程中的所有操作,以得到第一事务的所有操作。在一个实施例中,性能报表单元505可以执行前文介绍的操作s510。
112.性能报表单元505还用于:基于分布式数据库的sql运行性能报表中每个记录的上锁时间性能参数,筛选出热点账户;以及根据每个热点账户需要被上锁才能执行的至少一种事务的上锁时长记录,筛选出每个热点账户对应的热点事务。其中,第一热点账户为分布式数据库中的任意一个热点账户;以及第一事务为第一热点账户对应的任意一个热点事务。
113.根据本公开的实施例,装置700可以执行前述参考图2~图6所描述的分布式数据库中热点账户的交易处理方法,具体可以参考前文介绍,此处不再赘述。
114.根据本公开的实施例,请求接收模块710、热点事务处理模块720、业务功能模块调用单元721、业务功能模块执行单元722、分片规则设置模块730、业务功能模块打包单元506和性能报表单元505中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,请求接收模块710、热点事务处理模块720、业务功能模块调用单元721、业务功能模块执行单元722、分
片规则设置模块730、业务功能模块打包单元506和性能报表单元505中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,请求接收模块710、热点事务处理模块720、业务功能模块调用单元721、业务功能模块执行单元722、分片规则设置模块730、业务功能模块打包单元506和性能报表单元505中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
115.图8示意性示出了适于实现根据本公开实施例的热点账户的交易处理方法的电子设备800的方框图。
116.如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
117.在ram 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、rom 802以及ram 803通过总线804彼此相连。处理器801通过执行rom 802和/或ram 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 802和ram 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
118.根据本公开的实施例,电子设备800还可以包括输入/输出(i/o)接口805,输入/输出(i/o)接口805也连接至总线804。电子设备800还可以包括连接至i/o接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
119.本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
120.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的
rom 802和/或ram 803和/或rom 802和ram 803以外的一个或多个存储器。
121.本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
122.在该计算机程序被处理器801执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
123.在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分809被下载和安装,和/或从可拆卸介质811被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
124.在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
125.根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
126.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。电应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
127.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
128.以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实
施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

技术特征:
1.一种分布式数据库中热点账户的交易处理方法,包括:接收对第一热点账户的第一交易处理请求;以及响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务,包括:调用所述第一事务对应的第一业务功能模块,其中,所述第一业务功能模块安装在所述分布式数据库中存储所述热点账户的节点中,所述第一业务功能模块为对所述第一事务中的多个操作封装得到的;以及执行所述第一业务功能模块,包括:当所述第一业务功能模块获取到对所述第一热点账户的访问权限时,先对所述第一热点账户上锁,然后执行所述第一业务功能模块中的所有操作,并在所述第一业务功能模块中的所有操作执行完成后再释放锁。2.根据权利要求1所述的方法,其中,所述方法还包括预先配置所述第一业务功能模块,包括:封装所述第一事务中的第二类操作,以得到所述第一业务功能模块;以及安装所述第一业务功能模块到所述分布式数据库中记录所述热点账户的存储节点中;其中,所述第一事务中的操作被划分为第一类操作和所述第二类操作,其中,所述第一类操作为不受所述热点账户中的数据更新变化影响的操作。3.根据权利要求2所述的方法,其中,所述响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务还包括:在所述调用所述第一事务对应的第一业务功能模块之前,执行所述第一事务中的所述第一类操作,得到所述第一类操作的执行结果;以及在所述调用所述第一事务对应的第一业务功能模块时,将所述第一类操作的执行结果发送给所述第一业务功能模块。4.根据权利要求2所述的方法,其中,所述预先配置所述第一业务功能模块还包括:在所述封装所述第一事务中的第二类操作之前,从所述分布式数据库的sql运行性能报表中,查找出在执行所述第一事务时从对所述第一热点账户上锁到释放锁整个过程中的所有操作,以得到所述第一事务的所有操作。5.根据权利要求1所述的方法,其中,当所述第一业务功能模块中的所有操作所操作的数据记录除了所述第一热点账户外还包括其他记录时,在所述执行所述第一交易处理请求对应的第一事务之前,所述方法还包括:预先配置所述其他记录所在的数据表的分片规则,与所述热点账户所在的数据表中的分片规则一致,以使得所述第一热点账户和所述其他记录均存储在所述分布式数据库中同一节点中;其中,每个数据表中的记录按照每个数据表的分片规则分别存储到所述分布式数据库的各个节点中。6.根据权利要求1所述的方法,其中,所述方法还包括获取所述分布式数据库中的热点账户和每个热点账户对应的热点事务,包括:基于所述分布式数据库的sql运行性能报表中每个记录的上锁时间性能参数,筛选出热点账户;以及根据每个热点账户需要被上锁才能执行的至少一种事务的上锁时长记录,筛选出每个
热点账户对应的热点事务;其中,所述第一热点账户为所述分布式数据库中的任意一个热点账户;以及所述第一事务为所述第一热点账户对应的任意一个热点事务。7.根据权利要求1~6任意一项所述的方法,其中,所述第一业务功能模块为存储过程。8.一种分布式数据库中热点账户的交易处理装置,包括:请求接收模块,用于接收对第一热点账户的第一交易处理请求;以及热点事务处理模块,用于响应于所述第一交易处理请求,执行所述第一交易处理请求对应的第一事务;其中,所述热点事务处理模块包括:业务功能模块调用单元,用于调用所述第一事务对应的第一业务功能模块,其中,所述第一业务功能模块安装在所述分布式数据库中存储所述热点账户的节点中,所述第一业务功能模块为对所述第一事务中的多个操作封装得到的;以及业务功能模块执行单元,用于执行所述第一业务功能模块,包括:当所述第一业务功能模块获取到对所述第一热点账户的访问权限时,先对所述第一热点账户上锁,然后执行所述第一业务功能模块中的所有操作,并在所述第一业务功能模块中的所有操作执行完成后再释放锁。9.一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求1~7中任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现权利要求1~7中任一项所述的方法。11.一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1~7中任一项所述的方法。

技术总结
本公开提供了一种分布式数据库中热点账户的交易处理方法、装置、设备、存储介质和程序产品,可以应用于分布式技术领域。该方法包括:接收对第一热点账户的第一交易处理请求;以及响应于第一交易处理请求,执行第一交易处理请求对应的第一事务。其中,在执行第一事务时,首先调用第一事务对应的第一业务功能模块,其中,第一业务功能模块安装在分布式数据库中存储热点账户的节点中,第一业务功能模块为对第一事务中的多个操作封装得到的;然后当第一业务功能模块获取到对第一热点账户的访问权限时,先对第一热点账户上锁,然后执行第一业务功能模块中的所有操作,并在业务功能模块中的所有操作执行完成后再释放锁。所有操作执行完成后再释放锁。所有操作执行完成后再释放锁。


技术研发人员:李奇伟 杨诗平 孙迪 刘梦坷
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.07.13
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐