本申请涉及计算机技术领域,具体而言,本申请涉及一种交易信息的获取方法、装置、电子设备及可读存储介质。
背景技术:
金融机构中存在对客户一段时间内的资金往来信息进行统计、分析,并最终进行可视化展示的需求,目前多通过如下方式实现:金融机构的各业务系统每天将各自的数据汇总到数据仓库或者大数据平台,数据仓库或者大数据平台依据统计规则将这些汇总的数据按照各个维度进行统计分析,最终进行展示。
上述这种方式需要等待各业务系统进行数据汇总后,再由数据仓库或者大数据平台进行统计分析以及展示,其时效性较差,无法及时的获取用户的交易信息,无法满足实际使用需求。
技术实现要素:
本申请的目的旨在至少能解决上述的技术缺陷之一。本申请所采用的技术方案如下:
第一方面,本申请实施例提供了一种交易信息的获取方法,该方法包括:
当接收到第一交易请求时,确定第一交易请求中是否存在交易流水号;
若存在,则获取交易流水号,并将交易流水号与从第一交易请求读取的第一交易信息绑定后发送给第二服务器;
若不存在,则通过java代理agent向第一交易请求中添加交易流水号,将交易流水号与从第一交易请求读取的第二交易信息关联并发送给第二服务器。
可选地,上述方法还包括:
基于第一交易请求生成第二交易请求,第二交易请求携带有交易流水号;
将第二交易请求发送给第三服务器,以使第三服务器将交易流水号与从第二交易请求读取的第三交易信息关联并发送给第二服务器。
可选地,第一交易信息包括第一交易请求的标签;第三交易信息包括第一交易请求的标签以及第二交易请求的标签。
可选地,上述方法还包括:
获取配置文件,配置文件中配置有第一交易请求对应的字段信息;
基于字段信息,确定第一交易请求。
可选地,通过java代理agent向第一交易请求中添加交易流水号,包括:
通过javaagent拦截第一交易请求的通信函数;
在述第一交易请求的通信报文中添加交易流水号。
第二方面,本申请实施例提供了一种交易信息的获取装置,该装置包括:
交易流水号确定模块,用于在接收到第一交易请求时,确定第一交易请求中是否存在交易流水号;
交易信息发送模块,用于在第一交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从第一交易请求读取的第一交易信息绑定后发送给第二服务器;用于在第一交易请求中不存在交易流水号时,则通过java代理agent向第一交易请求中添加交易流水号,将交易流水号与从第一交易请求读取的第二交易信息关联并发送给第二服务器。
可选地,交易信息发送模块还用于:
基于第一交易请求生成第二交易请求,第二交易请求携带有交易流水号;
将第二交易请求发送给第三服务器,以使第三服务器将交易流水号与从第二交易请求读取的第三交易信息关联并发送给第二服务器。
可选地,第一交易信息包括第一交易请求的标签;第三交易信息包括第一交易请求的标签以及第二交易请求的标签。
可选地,上述装置还包括交易请求获取模块,用于:
获取配置文件,配置文件中配置有第一交易请求对应的字段信息;
基于字段信息,确定第一交易请求。
可选地,交易信息发送模块在通过java代理agent向第一交易请求中添加交易流水号时,具体用于:
通过javaagent拦截第一交易请求的通信函数;
在述第一交易请求的通信报文中添加交易流水号。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行如本申请的第一方面的任一实施方式中所示的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请的第一方面的任一实施方式中所示的方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例提供的方案,在接收到交易请求时,确定交易请求中是否存在交易流水号,当交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从交易请求读取的第一交易信息绑定后发送给第二服务器;当交易请求中不存在交易流水号时,通过java代理agent向交易请求中添加交易流水号,将交易流水号与从交易请求读取的交易信息关联并发送给第二服务器。基于本方案,能够实现对交易信息的及时获取,具有较强的时效性,能够满足实际使用需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种交易信息的获取方法的流程示意图;
图2为本申请实施例提供的一种交易信息的获取装置的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
目前,随着金融机构业务的发展,用户对及时获取数据的需求越来越高,传统的由各业务系统进行数据汇总后由数据仓库或者大数据平台进行统计分析以及展示的方式,由于其时效性较差已无法满足用户的使用需求,亟需一种能够及时获取交易信息的统计方式。
通过数据库复制同步方式可以快速获取交易信息。如可以通过数据库变更捕获(changedatacapture,cdc)获取原始业务数据,同步到数据加工层中数据库的同构表中进行分析。该方式需要在分析系统中建立与源表对应的变化表,对源系统数据结构的改造量较大,开发成本较高。
通过数据库链接直接访问源数据系统的数据库的方式可以快速获取交易信息,该方式存在开发量较大的缺点,并且可能会影响源系统数据库性能。
通过应用系统交易日志文件可以及时采集交易信息,如在各个应用部署客户端程序(如filebeat),收集各个应用系统日志文件的信息简单处理后传到数据加工层。该方式中由于各业务系统的日志格式存在差异,并且日志中可能存在信息缺失,格式错误等现象,导致信息抓取存在困难。
通过网络设备旁路监听的方式可以及时采集交易信息。该方式一般是基于现有网络设备,通过配置镜像端口的方式实现信息流量汇聚,通过对信息流量进行解码,可以实现对网络数据报文的完整解析,从而实现业务数据分析。该方式中多用于监控系统中,需要交换机或者路由支持“端口镜像”功能,并且由于是通过网络层旁路抓取报文,通过预先定义好的解码策略对报文进行解码,如果报文是是加密传输,就可能无法进行解码。
另外,目前金融系统中的一笔交易可能会拆分为多笔子交易并由多个业务系统分别进行处理,例如,跨境转账交易被拆分为转账交易、手续费结算交易以及跨境电讯费结算交易,其可能涉及的业务系统包括网银系统、渠道服务系统、手续费系统、跨境支付系统、核心系统等。由于多笔子交易的存在,提升了交易信息的统计难度。多笔子交易由多个业务系统分别进行处理,多个业务系统对交易的处理是相对独立的,可能会导致交易信息的重复统计。
为了便于对分散在各个业务系统的交易信息进行统计,可以采取对交易定义一个全局唯一关键字,用于串联整个交易链路,从而便于对交易信息的收集。但是实际使用中,在金融机构内定义全局关键字需要对系统源码进行统一修改,工作量巨大,开发成本高,并且存在系统变更风险。
本申请实施例提供的交易信息的获取方法、装置、电子设备及可读存储介质,旨在解决现有技术的如上技术问题中的至少一个。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1示出了本申请实施例提供的一种交易信息的获取方法的流程示意图,如图1所示,该方法主要可以包括:
步骤s110:当接收到第一交易请求时,确定第一交易请求中是否存在交易流水号;
步骤s120:若存在,则获取交易流水号,并将交易流水号与从第一交易请求读取的第一交易信息绑定后发送给第二服务器;
步骤s130:若不存在,则通过java代理(javaagent)向第一交易请求中添加交易流水号,将交易流水号与从第一交易请求读取的第二交易信息关联并发送给第二服务器。
本申请实施例中,第一服务器可以为对交易请求进行处理的业务服务器,第二服务器可以为对交易信息进行汇总、分析等的数据分析服务器。
本申请实施例中,交易流水号可以为在金融系统内被唯一定义的关键字,用于对交易请求的标识。交易流水号可以根据预设规则生成,例如;根据交易名称、交易时间等数据按照预设的格式生成。
作为一个示例,交易流水号的字段可以为“tradetarceid”。
本申请实施例中,交易请求可以由终端设备发起,用户可以通过在客户端上进行操作发起交易请求。交易请求可以根据实际需要由金融系统内部发起。
本申请实施例中,第一服务器在接收到第一交易请求后,可以确定第一交易请求中是否存在交易流水号,如果存在,则可以认为交易流水号已经在发送至第一服务器之前被生成,可以获取交易流水号,并从第一交易请求中读取第一交易信息,将交易流水号与第一交易信息绑定并发送给第二服务器。
如果第一交易请求中不存在交易流水号,则可以则通过javaagent向第一交易请求中添加交易流水号,并将交易流水号与从第一交易请求读取的第二交易信息关联并发送给第二服务器。
javaagent能够在不影响正常编译的情况下,修改编译好的java字节码。通过javaagent在字节码对类和方法进行修改,从而在不影响各应用系统现有代码的情况下,无侵入的在交易请求中增加交易流水号,有效降低开发成本。
基于交易流水号可以实现对交易请求在各业务系统的追踪,针对各业务系统的子交易请求的交易信息分被进行采集,使得获取的交易信息准确,并且能够避免出现重复获取交易信息的情况。
本申请实施例中,交易信息可以包括渠道类型、交易金额、地区号、机构号,组织交易链路以及交易请求的标签信息标签等。
第二服务器对接收到的交易信息进行汇总并分析,并且可以将分析结果进行各维度的可视化展示。
本申请实施例提供的方法,在接收到交易请求时,确定交易请求中是否存在交易流水号,当交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从交易请求读取的第一交易信息绑定后发送给第二服务器;当交易请求中不存在交易流水号时,通过java代理agent向交易请求中添加交易流水号,将交易流水号与从交易请求读取的交易信息关联并发送给第二服务器。基于本方案,能够实现对交易信息的及时获取,具有较强的时效性,能够满足实际使用需求。
本申请实施例的一种可选方式中,上述方法还包括:
基于第一交易请求生成第二交易请求,第二交易请求携带有交易流水号;
将第二交易请求发送给第三服务器,以使第三服务器将交易流水号与从第二交易请求读取的第三交易信息关联并发送给第二服务器。
在实际使用中,可能会存在将交易请求拆分为多个子请求的情况。
本申请实施例中,第二交易请求即第一交易请求的子请求,第三服务器为针对第二交易请求进行处理的业务服务器。第三服务器可以将与第二交易请求读取的第三交易信息关联并发送给第二服务器。
本申请实施例中,第一服务器或者第三服务器均可以将交易流水号保存在进程的上下文(context)中,以便于在生成子请求时向子请求中增加交易流水号。
本申请实施例的一种可选方式中,上述方法还包括:第一交易信息包括第一交易请求的标签;第三交易信息包括第一交易请求的标签以及第二交易请求的标签。
本申请实施例中,交易请求不存在父请求时,即交易请求并非子请求时,交易请求的交易信息中标签信息可以仅包括交易请求的标签,如第一交易信息中可以包括第一交易请求的标签。
本申请实施例中,交易请求存在父请求时,即交易请求为某交易请求的子请求时,交易请求的交易信息中标签信息可以仅包括该交易请求的标签以及其父请求的标签(即父标签),如第三交易信息中可以包括第二交易请求的标签以及第一交易信息的标签。
作为一个示例,标签的字段可以为“spanid”,父标签的字段可以为“parrentspanid”。
本申请实施例的一种可选方式中,上述方法还包括:
获取配置文件,配置文件中配置有第一交易请求对应的字段信息;
基于字段信息,确定第一交易请求。
本申请实施例中,可以通过对交易请求中指定字段信息的监控来确定第一交易请求。
用户可以根据实际需要对字段信息进行指定,配置文件中包含用户指定的字段信息。
本申请实施例的一种可选方式中,通过java代理agent向第一交易请求中添加交易流水号,包括:
通过javaagent拦截第一交易请求的通信函数;
在述第一交易请求的通信报文中添加交易流水号。
本申请实施例中,javaagent可以对第一交易请求的通信函数进行拦截,并在通信报文中添加交易流水号,以实现向第一交易请求中添加交易流水号。
基于与图1中所示的方法相同的原理,图2示出了本申请实施例提供的一种交易信息的获取装置的结构示意图,如图2所示,该交易信息的获取装置20可以包括:
交易流水号确定模块210,用于在接收到第一交易请求时,确定第一交易请求中是否存在交易流水号;
交易信息发送模块220,用于在第一交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从第一交易请求读取的第一交易信息绑定后发送给第二服务器;用于在第一交易请求中不存在交易流水号时,则通过java代理agent向第一交易请求中添加交易流水号,将交易流水号与从第一交易请求读取的第二交易信息关联并发送给第二服务器。
本申请实施例提供的装置,在接收到交易请求时,确定交易请求中是否存在交易流水号,当交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从交易请求读取的第一交易信息绑定后发送给第二服务器;当交易请求中不存在交易流水号时,通过java代理agent向交易请求中添加交易流水号,将交易流水号与从交易请求读取的交易信息关联并发送给第二服务器。基于本方案,能够实现对交易信息的及时获取,具有较强的时效性,能够满足实际使用需求。
可选地,交易信息发送模块还用于:
基于第一交易请求生成第二交易请求,第二交易请求携带有交易流水号;
将第二交易请求发送给第三服务器,以使第三服务器将交易流水号与从第二交易请求读取的第三交易信息关联并发送给第二服务器。
可选地,第一交易信息包括第一交易请求的标签;第三交易信息包括第一交易请求的标签以及第二交易请求的标签。
可选地,上述装置还包括交易请求获取模块,用于:
获取配置文件,配置文件中配置有第一交易请求对应的字段信息;
基于字段信息,确定第一交易请求。
可选地,交易信息发送模块在通过java代理agent向第一交易请求中添加交易流水号时,具体用于:
通过javaagent拦截第一交易请求的通信函数;
在述第一交易请求的通信报文中添加交易流水号。
可以理解的是,本实施例中的交易信息的获取装置的上述各模块具有实现图1中所示的实施例中的交易信息的获取方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述交易信息的获取装置的各模块的功能描述具体可以参见图1中所示实施例中的交易信息的获取方法的对应描述,在此不再赘述。
本申请实施例提供了一种电子设备,包括处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请任一实施方式中所提供的交易信息的获取方法。
作为一个示例,图3示出了本申请实施例所适用的一种电子设备的结构示意图,如图3所示,该电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选的,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。
其中,处理器2001应用于本申请实施例中,用于实现上述方法实施例所示的方法。收发器2004可以包括接收机和发射机,收发器2004应用于本申请实施例中,用于执行时实现本申请实施例的电子设备与其他设备通信的功能。
处理器2001可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现本申请任一实施方式中所提供的交易信息的获取方法。
本申请实施例提供的电子设备,适用于上述方法任一实施例,在此不再赘述。
本申请实施例提供了一种电子设备,与现有技术相比,在接收到交易请求时,确定交易请求中是否存在交易流水号,当交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从交易请求读取的第一交易信息绑定后发送给第二服务器;当交易请求中不存在交易流水号时,通过java代理agent向交易请求中添加交易流水号,将交易流水号与从交易请求读取的交易信息关联并发送给第二服务器。基于本方案,能够实现对交易信息的及时获取,具有较强的时效性,能够满足实际使用需求。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的交易信息的获取方法。
本申请实施例提供的计算机可读存储介质,适用于上述方法任一实施例,在此不再赘述。
本申请实施例提供了一种计算机可读存储介质,与现有技术相比,在接收到交易请求时,确定交易请求中是否存在交易流水号,当交易请求中存在交易流水号时,获取交易流水号,并将交易流水号与从交易请求读取的第一交易信息绑定后发送给第二服务器;当交易请求中不存在交易流水号时,通过java代理agent向交易请求中添加交易流水号,将交易流水号与从交易请求读取的交易信息关联并发送给第二服务器。基于本方案,能够实现对交易信息的及时获取,具有较强的时效性,能够满足实际使用需求。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。