一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式事务处理方法、装置、设备和介质与流程

2023-09-20 18:10:41 来源:中国专利 TAG:


1.本公开涉及信息安全领域或金融领域,更具体地,涉及一种分布式事务处理方法、装置、设备、介质和程序产品。


背景技术:

2.互联网时代下,主机集中式架构难以适应新形势下的业务快速发展,软件系统开始向分布式架构转型探索,分布式事务作为基础技术成为了转型关键所在。
3.在分布式事务实际开发过程中,需要开发人员按照分布式开发规范作为标准设计分布式事务。目前只能依靠开发人员自行遵守分布式事务开发相应规范,后续可以人工核查开发人员是否遵守规范。但是,对核查人员的专业要求高,并且核查慢、耗时长。


技术实现要素:

4.鉴于上述问题,本公开提供了一种分布式事务处理方法、装置、设备、介质和程序产品。
5.本公开实施例的一个方面,提供了一种分布式事务处理方法,包括:获取分布式系统的系统日志,其中,所述系统日志包括n个分布式事务的属性信息,以及至少两个分布式事务之间的调用关系,n为大于或等于2的整数;根据所述属性信息和所述调用关系,生成分布式调用有向图;基于图搜索算法,从所述分布式调用有向图中获取分布式调用信息;将所述分布式调用信息与分布式开发规范进行比对,获得比对结果。
6.根据本公开的实施例,所述属性信息包括每个分布式事务的创建记录,所述根据所述属性信息和所述调用关系,生成分布式调用有向图包括:根据所述每个分布式事务的创建记录,确定所述分布式调用有向图中的n个顶点;根据所述调用关系,生成各顶点之间的有向边;根据所述n个顶点和所述各顶点之间的有向边,生成所述分布式调用有向图。
7.根据本公开的实施例,所述属性信息包括主事务属性或子事务属性,所述根据所述每个分布式事务的创建记录,确定所述分布式调用有向图中的n个顶点包括:根据具有所述主事务属性的创建记录,确定m个主事务顶点,m为大于或等于1的整数;根据具有所述子事务属性的创建记录,确定k个子事务顶点,k为大于或等于1的整数,且k大于或等于m;根据所述调用关系,将所述m个主事务顶点各自作为m条调用链路的起始顶点,基于所述k个子事务顶点形成所述m条调用链路。
8.根据本公开的实施例,所述基于所述k个子事务顶点形成所述m条调用链路包括:确定所述k个子事务顶点中每个子事务顶点的父事务顶点,其中,所述父事务顶点对应的分布式事务为调用该子事务的上一个分布式事务;根据所述每个子事务顶点的父事务顶点,确定所述每个子事务顶点的所属调用链路以及位于所属调用链路中的位置。
9.根据本公开的实施例,所述属性信息包括执行所述每个分布式事务的节点位置信息,所述根据所述调用关系,生成各顶点之间的有向边包括:对于任两个具有调用关系的顶点,若该两个顶点各自对应的分布式事务具有相同的节点位置信息,生成第一类有向边;若
该两个顶点各自对应的分布式事务具有不同的节点位置信息,生成第二类有向边,所述第二类有向边与所述第一类有向边具有不同的边属性。
10.根据本公开的实施例,所述分布式调用有向图中包括m条调用链路,其中每条调用链路包括单个主事务顶点和至少一个子事务顶点,m为大于或等于1的整数;所述分布式调用信息包括事务异地调用次数,所述基于图搜索算法,从所述分布式调用有向图中获取分布式调用信息包括:对于任一条调用链路,获取该条调用链路中所述第二类有向边的数量,作为所述事务异地调用次数。
11.根据本公开的实施例,所述分布式调用有向图中包括m条调用链路,其中每条调用链路包括单个主事务顶点和至少一个子事务顶点,m为大于或等于1的整数;所述分布式调用信息包括子事务个数,所述基于图搜索算法,从所述分布式调用有向图中获取分布式调用信息包括:对于任一条调用链路,获取该条调用链路中所述有向边的数量,作为所述子事务个数。
12.根据本公开的实施例,在获得比对结果之后,若所述比对结果表征所述分布式调用信息不符合所述分布式开发规范,所述方法还包括:确定不符合所述分布式开发规范的至少一个主事务顶点;定位出所述至少一个主事务顶点中每个主事务顶点的维护人员;向所述每个主事务顶点的维护人员发送通知。
13.本公开实施例的另一方面提供了一种分布式事务处理装置,包括:日志获取模块,用于获取分布式系统的系统日志,其中,所述系统日志包括n个分布式事务的属性信息,以及至少两个分布式事务之间的调用关系,n为大于或等于2的整数;有向图模块,用于根据所述属性信息和所述调用关系,生成分布式调用有向图;图搜索模块,用于基于图搜索算法,从所述分布式调用有向图中获取分布式调用信息;规范比对模块,用于将所述分布式调用信息与分布式开发规范进行比对,获得比对结果。
14.所述装置包括分别用于执行如上所述任意一项所述的方法的各个步骤的模块。
15.本公开实施例的另一方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
16.本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
17.本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
18.上述一个或多个实施例具有如下有益效果:一方面,以系统日志为数据处理对象,适用于采用分布式架构进行开发的多种业务系统,对现有开发环境无改动或小改动,不额外占用开发资源。另一方面,根据所述属性信息和所述调用关系,生成分布式调用有向图,实现了对各分布式事务进行全量监测,有效提升了审计效率。再一方面,通过图搜索算法获取分布式调用信息,并与分布式开发规范进行比对,能够及时发现开发不规范行为,从而达到有效控制项目安全风险的目的,大幅度降低了人工核查成本。
附图说明
19.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特
征和优点将更为清楚,在附图中:
20.图1示意性示出了根据本公开实施例的分布式事务处理方法的应用场景图;
21.图2示意性示出了根据本公开实施例的分布式事务处理方法的流程图;
22.图3示意性示出了根据本公开实施例的生成分布式调用有向图的流程图;
23.图4示意性示出了根据本公开实施例的形成调用链路的流程图;
24.图5示意性示出了根据本公开另一实施例的形成调用链路的流程图;
25.图6示意性示出了根据本公开实施例的分布式调用有向图;
26.图7示意性示出了根据本公开实施例的发送通知的流程图;
27.图8示意性示出了根据本公开另一实施例的分布式事务处理方法的流程图;
28.图9示意性示出了根据本公开实施例的分布式事务处理装置的结构框图;以及
29.图10示意性示出了根据本公开实施例的适于实现分布式事务处理方法的电子设备的方框图。
具体实施方式
30.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
31.需要说明的是,本公开一些实施例中提供的分布式事务处理方法可用于金融领域或信息安全领域在分布式事务开发过程中开发规范比对方面,也可用于除金融领域或信息安全领域之外的任意领域,本公开技术方案的应用领域不做限定。
32.图1示意性示出了根据本公开实施例的分布式事务处理方法的应用场景图。需要注意的是,图1所示仅为可以应用本公开实施例的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
33.如图1所示,该实施例的应用场景100可以包括终端设备111、112、113,网络120,a主节点服务器130,b主节点服务器140。其中,a主节点服务器130通信连接有一个或多个从节点服务器,如a1从节点服务器131、a2从节点服务器132、a3从节点服务器133。b主节点服务器140也通信连接有一个或多个从节点服务器,如b1从节点服务器141、b2从节点服务器142、b3从节点服务器143。
34.网络120用以在终端设备111、112、113和a主节点服务器130,或b主节点服务器140之间提供通信链路的介质。网络120可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。可以在a主节点服务器130与从节点服务器之间,在b主节点服务器130与从节点服务器之间设置网络120,来实现通信连接(图1未示出)。
35.用户可以使用终端设备111、112、113通过网络120与a主节点服务器130,或b主节点服务器140交互,以接收或发送消息等。终端设备111、112、113上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
36.终端设备111、112、113可以是具有显示屏并且支持网页浏览的各种电子设备,包
括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
37.图1中任一服务器可以是提供各种服务的服务器,例如对用户利用终端设备111、112、113所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
38.图1中任一服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或分布式系统,还可以是提供云服务、云计算、网络服务、中间件服务等基础云计算服务的云服务器。
39.应该理解,图1中的终端设备、网络、主节点服务器和从节点服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、主节点服务器和从节点服务器。
40.一些实施例中,本公开实施例所提供的分布式事务处理方法可以由图1中的任一服务器执行,也可以由图1中未示出的服务器执行。分布式事务处理装置可以集成在执行分布式事务处理方法的服务器中。另一些实施例中,本公开实施例所提供的分布式事务处理方法可以由图1中的任一终端设备执行,也可以由图1中未示出的终端设备执行。分布式事务处理装置可以集成在执行分布式事务处理方法的终端设备中。
41.在如图1的分布式系统中,每个节点仅可以知悉本节点的操作结果,而无法知晓其他节点的操作结果,当一个业务跨越多个节点时,即为涉及多个分布式事务。分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式节点之上。
42.以金融信息系统举例,在分布式架构的金融信息系统提供的一项应用服务中,调用端为使用者对应的设备,可以为银行的自动柜员机(atm,automatedteller machine),还可以是使用者使用的终端设备,如移动终端、计算机等。使用者通过该调用端发起分布式事务的处理请求,以及输入分布式事务的各个事务参数。分布式事务包括多个分支事务(即下述的子事务),每个分支事务由一个处理节点处理。事务参数可以包括分布式事务对应的交易金额、账号,还可以包括该分布式事务对应的各个参与者。
43.示例性的,以分布式事务为汇款为例,a客户需要在银行系统中办理一笔第三方汇款业务,则该分布式事务的事务参数可以为a客户的账户、第三方的账户以及汇款金额。
44.举例而言,a主节点服务器130用于接收分布式事务的开启请求,根据开启请求,将事务标识和对应的开启状态记录到主事务表中,分配一个主事务标识,生成了主事务。然后可以根据汇款的分布式事务编排顺序,向其他一个或多个节点发送执行一个或多个子事务的指令,指令中包括分配的子事务标识和执行顺序。当其他任一节点执行完自身被分配的子事务后或执行过程中,可以继续调用其他任一节点执行后续子事务,最后可以返回执行结果给主事务节点,即a主节点服务器130。
45.以下将基于图1描述的场景,通过图2~图8对本公开实施例的分布式事务处理方法进行详细描述。
46.图2示意性示出了根据本公开实施例的分布式事务处理方法的流程图。如图2所示,该实施例的分布式事务处理方法包括:
47.在操作s210,获取分布式系统的系统日志,其中,系统日志包括n个分布式事务的
属性信息,以及至少两个分布式事务之间的调用关系,n为大于或等于2的整数。
48.例如,在分布式事务开发完成后进行分布式系统的测试,测试过程中运行分布式系统,并采集分布式系统运行中产生的系统日志。又例如,不局限于测试过程,于任一分布式系统在生产环境中向用户提供服务的过程中采集系统日志。
49.n个分布式事务的属性信息包括每个分布式事务的属性,例如包括事务标识、事务方法、主事务标识、节点位置信息和事务状态中的至少一个。
50.至少两个分布式事务之间的调用关系与各个分支事务的执行顺序相关,基于执行顺序以发起调用请求的方式执行各个分支事务。当一个分支事务失败时,执行该分支事务对应的补偿流程,从而恢复已执行或已完成的各个分支事务,从而使得仅当全部的分支事务执行成功时,该分布式事务方为成功,即实现了分布式事务的一致性。
51.在操作s220,根据属性信息和调用关系,生成分布式调用有向图。
52.示例性的,对系统日志进行清洗和标准化处理后,保留日志中属性信息和调用关系,并后续可以利用python的networkx库(仅为示例),基于画出分布式调用有向图。有向图是具有指向性的图,是由一组顶点和若干有方向的边组成,每个有方向的边都连着两个有序的顶点。
53.以转账类型的分布式事务举例,即客户向第三方转账的多个分布式事务包括:付款账户冻结服务、收款账户发起汇款服务、付款账户解冻服务、银行账户收费服务和转账服务。任两个分布式事务之间具有调用关系,例如付款账户冻结服务执行完后,发起调用请求执行收款账户发起汇款服务,例如是一个分布式节点向另一个分布式节点发起调用请求。
54.例如,分布式调用有向图中以顶点和有向边的形式表征出转账类型的各个分布式事务、调用关系和执行顺序。
55.在操作s230,基于图搜索算法,从分布式调用有向图中获取分布式调用信息。
56.示例性地,可以使用图遍历的深度优先搜索算法,遍历分布式调用有向图中各个顶点和边,并获取分布式调用信息。分布式调用信息包括例如事务异地调用次数、服务非异地调用次数、服务总调用次数、子事务个数、可用性或并发度等信息。相当于从日志文本形式以有向图的方式表征,从而更好的展示分布式事务之间的关系。而分布式调用信息可以从日志中提取出来,在形成有向图过程中嵌入到各顶点、边、以及顶点属性和边属性中。
57.在操作s240,将分布式调用信息与分布式开发规范进行比对,获得比对结果。
58.示例性地,分布式开发规范是一种用于指导开发人员进行分布式事务开发的标准或指南,旨在提高分布式事务的执行性能,以确保分布式系统在执行分布式事务过程中能够满足预期的性能、安全和效率要求。
59.分布式开发规范中涉及分布式调用信息中各项信息的具体参数或约束条件,可以直接进行比对,从而获得是否符合规范的比对结果。
60.根据本公开的实施例,一方面,以系统日志为数据处理对象,适用于采用分布式架构进行开发的多种业务系统,对现有开发环境无改动或小改动,不额外占用开发资源。另一方面,根据属性信息和调用关系,生成分布式调用有向图,实现了对各分布式事务进行全量监测,有效提升了审计效率。再一方面,通过图搜索算法获取分布式调用信息,并与分布式开发规范进行比对,能够及时发现开发不规范行为,从而达到有效控制项目安全风险的目的,大幅度降低了人工核查成本。
61.图3示意性示出了根据本公开实施例的生成分布式调用有向图的流程图。属性信息包括每个分布式事务的创建记录,如图3所示,该实施例是操作s220的其中一个实施例,生成分布式调用有向图包括:
62.在操作s310,根据每个分布式事务的创建记录,确定分布式调用有向图中的n个顶点。
63.示例性的,创建记录表征了有新的分布式事务创建,故与每个分布式事务具有一一对应的关系,因此n个顶点是与n个分布式事务一一对应的。
64.在操作s320,根据调用关系,生成各顶点之间的有向边。
65.例如执行a事务的节点向执行b事务的节点发起调用请求,则a顶点为起点,有向边为从a顶点指向b顶点的线段。a顶点和b顶点分别对应a事务和b事务。
66.在操作s330,根据n个顶点和各顶点之间的有向边,生成分布式调用有向图。
67.示例性地,代码开发有向图可以基于上述的python的networkx库生成,还可以使用其他编程语言或工具基于邻接矩阵法、邻接表法或十字链表法等生成,本公开不进行限定。
68.根据本公开的实施例,通过分布式调用有向图实现分布式事务执行的可视化,便于用户理解整体的分布式事务的信息,如执行流程,图的形式能展示更多的信息,便于提取更丰富的分布式调用信息。
69.图4示意性示出了根据本公开实施例的形成调用链路的流程图。属性信息包括主事务属性或子事务属性,如图4所示,该实施例是操作s310的其中一个实施例,确定分布式调用有向图中的n个顶点包括:
70.在操作s410,根据具有主事务属性的创建记录,确定m个主事务顶点,m为大于或等于1的整数。
71.在操作s420,根据具有子事务属性的创建记录,确定k个子事务顶点,k为大于或等于1的整数,且k大于或等于m。
72.主事务是指发起整个事务执行的事务,可以具有主事务标识、主事务id等作为主事务属性。子事务是指参与执行的事务,也可以具有子事务标识、子事务id等作为子事务属性。
73.在操作s430,根据调用关系,将m个主事务顶点各自作为m条调用链路的起始顶点,基于k个子事务顶点形成m条调用链路。
74.根据本公开的实施例,通过调用链路的形式厘清系统日志中各个分布式事务之间的联系,便于后续提取出准确的分布式调用信息。
75.图5示意性示出了根据本公开另一实施例的形成调用链路的流程图。如图5所示,该实施例是操作s430的其中一个实施例,包括:
76.在操作s510,确定k个子事务顶点中每个子事务顶点的父事务顶点,其中,父事务顶点对应的分布式事务为调用该子事务的上一个分布式事务。
77.例如,转账类型的分布式事务中:付款账户冻结服务、收款账户发起汇款服务、付款账户解冻服务、银行账户收费服务和转账服务。该转账类型的5个分布式事务分别对应5个顶点,并形成一条调用链路。在该条调用链路中,银行账户收费服务的顶点位于转账服务的顶点之前,即为父事务顶点。
78.在操作s520,根据每个子事务顶点的父事务顶点,确定每个子事务顶点所属调用链路以及位于所属调用链路的位置。
79.根据本公开的实施例,以每条调用链路为粒度,厘清调用链路中各个顶点之间的联系,便于后续提取出准确的分布式调用信息。
80.图6示意性示出了根据本公开实施例的分布式调用有向图。
81.例如,利用python的networkx库,将同一主事务中的所有子事务画出有向图,见附图6,基本逻辑如下:
82.a.主事务:按照主事务id出现时间排序,从事务管理器vmanager开始,第一个分支是主事务,新建顶点vmain[1],从顶点vmanager画出指向vmain[1]的有向线段。
[0083]
b.子事务:从顶点vmain[1]画出父事务id为主事务id的sub[1-1]分支并指向vsub[1-1],根据园区字段判断,若sub[1-1]与其父事务是相同园区为细线段,不同园区为粗线段。同理,再从顶点vsub[1-1]画出父事务id为子事务sub[1-1]的sub[1-2]分支并指向vsub[1-2],根据园区字段判断,相同园区为细线段,不同园区为粗线段。依次画出交易链路中的所有子事务分支。
[0084]
c.以此类推,画出所有主事务id的交易链路(即调用链路)。
[0085]
在一些实施例中,在根据每个子事务顶点的父事务顶点,确定每个子事务顶点的所属调用链路以及位于所属调用链路中的位置之后,还包括:确定同一调用链路下,每个子事务顶点的节点位置信息,根据不同的节点位置信息,将每个子事务顶点置于该条调用链路下的不同分支。每个子事务顶点的节点位置信息为执行对应子事务的节点的位置。
[0086]
参照图6,节点位置信息可以包括园区a和园区b,例如a主节点服务器130及其各从节点在园区a,b主节点服务器140及其各从节点在园区b。可以理解,园区a和园区b仅是表征不同位置的示例,各个节点还可以在不同的楼栋、不同的城市或不同的地区等。
[0087]
根据本公开的实施例,根据节点位置信息将各个顶点置于不同的分支,能够展示出更丰富的信息,有利于后续进行节点位置信息对比,更为直观,便于图搜索算法高效处理。
[0088]
在一些实施例中,属性信息包括执行每个分布式事务的节点位置信息,根据调用关系,生成各顶点之间的有向边包括:对于任两个具有调用关系的顶点,若该两个顶点各自对应的分布式事务具有相同的节点位置信息,生成第一类有向边(如图6中的细边)。若该两个顶点各自对应的分布式事务具有不同的节点位置信息,生成第二类有向边(如图6中的粗边),第二类有向边与第一类有向边具有不同的边属性。
[0089]
边属性可以包括指向(即方向)、处理记录类型和处理标识等。处理标识可以用于以不同的形式表征各类边,例如不同粗细、颜色、实线虚线或直线曲线等形式。可以理解,分布式调用有向图还可以包括第三类有向边、第四类有向边或第五类有向边等,视日志中的属性信息灵活设置。
[0090]
根据本公开的实施例,通过不同的边属性对相同节点位置和不同节点位置中的事务调用进行区分,能够更有序地展示出代码分支之间的关系,有利于后续图搜索和比对操作。
[0091]
在一些实施例中,分布式调用有向图中包括m条调用链路,其中每条调用链路包括单个主事务顶点和至少一个子事务顶点,m为大于或等于1的整数。分布式调用信息包括事
务异地调用次数,基于图搜索算法,从分布式调用有向图中获取分布式调用信息包括:对于任一条调用链路,获取该条调用链路中第二类有向边的数量,作为事务异地调用次数。
[0092]
例如,进行事务异地调用次数检查:检查主事务的交易分支异地调用次数是否不超过2次(仅为示例)。
[0093]
异地调用次数的检查逻辑:检查从vmain[i]出发,依次检查指向下一顶点vsub[j-i]的有向粗线段,每出现一条粗线段则累加1次,i,j皆为大于或等于1的整数。参照表1示出的异地调用次数判断规则,若累计次数超过2次,给异地调用次数不合规的主事务的参与者(主事务顶点、整条调用链路和每个子事务)打上“异地调用次数不合规”的标签。若从任一顶点出发存在多条指向下一顶点的有向线段,则需逐条线段进行检查,全部检查完再转到下一步。
[0094]
表1异地调用次数判断规则
[0095]
规则描述规则特征标签t不同园区服务调用次数超过2次粗线段超过2条异地调用次数不合规
[0096]
在分布式事务实际执行过程中,如表2所示,跨异地调用次数将影响服务响应时间。例如当子事务个数为2个时,若没有跨异地事务协调,则平均耗时为177ms,tps为553,若存在跨异地事务协调,则平均耗时为314ms,tps为312。可见,耗时显著增加,而tps急剧降低。而随着子事务个数增加,平均耗时和tps发生更多变化,性能比对更为明显。
[0097]
表2异地事务响应表
[0098][0099]
根据本公开的实施例,通过第二类有向边的数量获得事务异地调用次数,更加简便快捷。并能够将事务异地调用次数与规范中的次数进行比对,及时发现事务异地调用次数过多的开发不规范行为。
[0100]
在一些实施例中,分布式调用有向图中包括m条调用链路,其中每条调用链路包括单个主事务顶点和至少一个子事务顶点,m为大于或等于1的整数。分布式调用信息包括子事务个数,基于图搜索算法,从分布式调用有向图中获取分布式调用信息包括:对于任一条调用链路,获取该条调用链路中有向边的数量,作为子事务个数。
[0101]
例如,子事务个数检查:检查子事务个数是否不超过10个(仅为示例)。
[0102]
子事务个数的检查逻辑:检查从主事务顶点出发,遍历该调用链路中指向下一顶点的所有有向线段(包含粗线段和细线段),每出现一条线段则累加1次。参照表3,若累加次数超过10次,给子分支事务数不合规的主事务的参与者(主事务顶点、整条调用链路和每个子事务)打上“子事务个数不合规”的标签。若从任一顶点出发存在多条指向多个顶点的有向线段,则需逐条线段进行检查,全部遍历完再转到下一步。
[0103]
表3子事务个数判断规则
[0104]
规则描述规则特征标签t子事务个数超过10个所有有向线段的个数子事务个数不规范
[0105]
在分布式事务实际执行过程中,如表4所示,跨异地调用次数将影响服务响应时间。例如当子事务个数为2个时,若没有事务协调,则平均耗时为129ms,tps为761,若引入事务协调,则平均耗时为136ms,tps为719。可见,耗时有所增加,而tps有所降低。而随着子事务个数增加,平均耗时和tps发生更多变化,性能降低明显。
[0106]
表4事务数量压测表
[0107][0108]
根据本公开的实施例,通过所有有向边的数量获得子事务个数,更加简便快捷。并能够将子事务个数与规范中的个数进行比对,及时发现子事务个数过多的开发不规范行为。
[0109]
图7示意性示出了根据本公开实施例的发送通知的流程图。在获得比对结果之后,若比对结果表征分布式调用信息不符合分布式开发规范,如图7所示,该实施例发送通知包括:
[0110]
在操作s710,确定不符合分布式开发规范的至少一个主事务顶点。
[0111]
参照表1和表3,打上“异地调用次数不合规”的标签,或者打上“子事务个数不合规”的标签,则为不符合分布式开发规范。
[0112]
在操作s720,定位出至少一个主事务顶点中每个主事务顶点的维护人员。
[0113]
维护人员可以是开发人员,或者开发人员之外的运维人员等,例如通过分布式事务平台中调用配置清单定位到开发人员。
[0114]
在操作s730,向每个主事务顶点的维护人员发送通知。
[0115]
可以将发送至操作人、部门代码管理员和安全审计人员邮箱,提示及时关注并处理。还可以通过电话、手机应用内部信息、企业应用内部信息或其他方式通知。
[0116]
根据本公开的实施例,能够将不符合分布式事务设计规范的违规行为及时邮件通
知到维护人员,以便及时解决,防止出现甚至扩大损失。
[0117]
图8示意性示出了根据本公开另一实施例的分布式事务处理方法的流程图。如图8所示,该实施例的分布式事务处理方法包括:
[0118]
在操作s810,从分布式事务管理平台中获取分支事务的创建记录和其主事务、父事务等信息。
[0119]
分布式事务管理平台属于分布式系统的管理应用,用于对分布式事务进行配置、修改和存储等功能。从分布式事务管理平台中导出日志数据,获取分支事务的创建记录和其主事务、父事务等信息。
[0120]
在操作s820,将数据进行清洗、标准化处理后存储。
[0121]
例如,实现数据的格式化处理。负责对分布式事务平台中批量导出的日志数据信息进行清洗和标准化处理,保留表中子事务id、父事务id、主事务id、园区、事务状态。用python去读取数据,筛选出事务状态为提交成功的信息,标准化处理后通过sql语句按操作时间排序存入数据库中,预处理后的日志见表5。
[0122]
表5处理后数据示例
[0123][0124]
在操作s830,画出分布式调用有向图。
[0125]
利用python的networkx库,将同一主事务中的所有子事务画出有向图,通过分布式事务平台中的子事务创建记录和及其主事务、父事务(交易链路的上一个分支服务),按不同主事务id画出其分支事务的有向图,如图6所示。
[0126]
在操作s840,利用图遍历的深度优先搜索算法,检查事务异地调用次数和子事务个数。依次对每条调用链路进行检查,得到第二类边的数量和所有有向边的数量。旨在利用收集的分布式事务管理平台中各分支事务的调用日志发现分布式事务开发中分支事务服务数量过多和异地调用过多的情况,从而避免引发交易响应时间缓慢的风险。
[0127]
检查完后,输出所有带有标签t的数据,示例见表6。
[0128]
表6输出数据示例
[0129][0130]
在操作s850,定位主事务的开发部门和违规开发人员。
[0131]
在操作s860,发送违规通知邮件至相关人员。
[0132]
根据表6输出的主事务id、主事务方法,定位该主事务的维护部门、维护人、安全审计人员。将表6的输出内容,邮件发送至维护人、部门事务管理员、安全审计人员邮箱,提示及时关注并处理。
[0133]
根据本公开的实施例,运用图遍历算法检查主事务调用的子事务的数量及跨园区异地调用的次数,再通过事务配置清单定位到主事务对应的违规开发人员,并将不合规信息的邮件通知到违规开发人员和管理部门。
[0134]
基于上述分布式事务处理方法,本公开还提供了一种分布式事务处理装置。以下将结合图9对该装置进行详细描述。
[0135]
图9示意性示出了根据本公开实施例的分布式事务处理装置的结构框图。
[0136]
如图9所示,该实施例的分布式事务处理装置900包括日志获取模块910、有向图模块920、图搜索模块930和规范比对模块940。
[0137]
日志获取模块910可以执行操作s210,用于获取分布式系统的系统日志,其中,系统日志包括n个分布式事务的属性信息,以及至少两个分布式事务之间的调用关系,n为大于或等于2的整数。
[0138]
有向图模块920可以执行操作s220,用于根据属性信息和调用关系,生成分布式调用有向图。
[0139]
图搜索模块930可以执行操作s230,用于基于图搜索算法,从分布式调用有向图中获取分布式调用信息。
[0140]
规范比对模块940可以执行操作s240,用于将分布式调用信息与分布式开发规范进行比对,获得比对结果。
[0141]
需要说明的是,分布式事务处理装置900包括分别用于执行如上图2~图8描述的任意一个实施例的各个步骤的模块。装置部分实施例中各模块/单元/子单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
[0142]
根据本公开的实施例,日志获取模块910、有向图模块920、图搜索模块930和规范比对模块940中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。
[0143]
根据本公开的实施例,日志获取模块910、有向图模块920、图搜索模块930和规范
比对模块940中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,日志获取模块910、有向图模块920、图搜索模块930和规范比对模块940中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0144]
图10示意性示出了根据本公开实施例的适于实现分布式事务处理方法的电子设备的方框图。
[0145]
如图10所示,根据本公开实施例的电子设备1000包括处理器1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0146]
在ram 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、rom 1002以及ram 1003通过总线1004彼此相连。处理器1001通过执行rom 1002和/或ram 1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除rom 1002和ram 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0147]
根据本公开的实施例,电子设备1000还可以包括输入/输出(i/o)接口1005,输入/输出(i/o)接口1005也连接至总线1004。电子设备1000还可以包括连接至i/o接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006。包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007。包括硬盘等的存储部分1008。以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
[0148]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0149]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 1002和/或ram 1003和/或rom 1002和ram 1003以外的一个或多个存储器。
[0150]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
[0151]
在该计算机程序被处理器1001执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0152]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0153]
在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0154]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c ,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0155]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表