背景技术
业务流程,又称为流水。一次业务调用关联的各个系统调用,构成一条完整流水。在一些大型系统中,经常需要实时采集一些流水数据,用于观察、实验等目的。但是在分布式系统中,由于完整流水数据是分布在系统的各个独立部分中,采集到一笔完整的流水数据具有相当大的困难,采集到的流水数据往往混乱无序,不利于研发人员观察和实验。
申请内容
本申请的一个目的是提供分布式系统中采集业务流程数据的方法、系统及其服务器,以解决现有技术的流水数据采集混乱的问题。
根据本申请的第一方面,提供一种分布式系统中采集业务流程数据的方法,包括:
响应于业务调用,采集所述业务的业务数据;
响应于在分布式缓存中查询到所述业务数据的业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请所述的方法,还包括:
响应于所述业务数据不具有所述业务流程编号,在所述分布式缓存中查询所述业务数据是否符合预设业务特征;
如果所述业务数据符合预设业务特征,通过所述分布式缓存为所述业务数据设立新的业务流程编号;
否则,丢弃所述业务数据。
进一步,本申请所述的方法,在通过所述分布式缓存为所述业务数据设立新的业务流程编号之后,还包括:
将所述新的业务流程编号和所述业务数据发送至所述第一服务器。
根据本申请的第二方面,提供一种分布式系统中采集业务流程数据的方法,包括:
接收业务流程编号和业务数据;
将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
进一步,本申请所述的方法,将具有相同的所述业务流程编号的所述业务数据组合为一个完整业务流程的步骤具体包括:
根据所述业务数据的调用时间或者调用顺序,将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
根据本申请的第三方面,提供一种分布式系统中采集业务流程数据的方法,包括:
响应于第二服务器发送的业务流程编号查询请求,向所述第二服务器返回查询结果;其中,所述第二服务器响应于查询到业务数据的所述业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请所述的方法,还包括:
响应于所述第二服务器发送的业务流程编号设立请求,向所述第二服务器返回新的业务流程编号并记录所述新的业务流程编号;其中,所述第二服务器响应于业务数据不具有所述业务流程编号,发送业务流程编号设立请求。
根据本申请的第四方面,提供第二服务器,包括:
采集模块,用于响应于业务调用,采集所述业务的业务数据;
第一查询模块,用于响应于在分布式缓存中查询到所述业务数据的业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请所述的第二服务器,还包括:
第一流程设立模块,用于:
响应于所述业务数据不具有所述业务流程编号,在所述分布式缓存中查询所述业务数据是否符合预设业务特征;
如果所述业务数据符合预设业务特征,通过所述分布式缓存为所述业务数据设立新的业务流程编号;
否则,丢弃所述业务数据。
进一步,本申请所述的第二服务器,所述第一查询模块还用于:
在通过所述分布式缓存为所述业务数据设立新的业务流程编号之后,将所述新的业务流程编号和所述业务数据发送至所述第一服务器。
根据本申请的第五方面,提供第一服务器,包括:
接收模块,用于接收业务流程编号和业务数据;
流程整理模块,用于将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
进一步,本申请所述的第一服务器,所述流程整理模块具体用于:
根据所述业务数据的调用时间或者调用顺序,将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
根据本申请的第六方面,提供第三服务器,包括:
第二查询模块,用于响应于第二服务器发送的业务流程编号查询请求,向所述第二服务器返回查询结果;
其中,所述第二服务器响应于查询到业务数据的所述业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请所述的第三服务器,还包括:
第二流程设立模块,用于:
响应于所述第二服务器发送的业务流程编号设立请求,向所述第二服务器返回新的业务流程编号并记录所述新的业务流程编号;
其中,所述第二服务器响应于业务数据不具有所述业务流程编号,发送业务流程编号设立请求。
根据本申请的第七方面,提供一种分布式系统中采集业务流程数据的系统,包括:本申请所述的第二服务器、本申请所述的第一服务器、以及本申请所述的第三服务器。
根据本申请的第八方面,提供一种存储设备,所述存储设备存储计算机程序指令,所述计算机程序指令根据本申请所述的方法进行执行。
根据本申请的第九方面,提供一种计算设备,包括:用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述计算设备执行本申请所述的方法。
本申请提供的分布式系统中采集业务流程数据的方法、系统及其服务器,通过分布式缓存查询业务数据的业务流程编号,可便于第一服务器根据业务流程编号将相关的业务数据整理为一笔完整的流水数据,避免采集的流水数据混乱无序的问题。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
图1为本申请实施例一的分布式系统中采集业务流程数据的方法的流程示意图,如图1所示,本申请实施例一的分布式系统中采集业务流程数据的方法,应用于本申请实施例的第二服务器,该方法包括:
步骤S101,响应于业务调用,采集所述业务的业务数据。
其中,第二服务器为用于采集业务数据的服务器,第二服务器设有采集组件。在分布式系统中,一条完整的业务流程一般会经过若干计算处理系统进行处理。例如,一笔完整的购物交易业务流程,需要经过订单系统接收用户订单,经过支付系统完成用户支付,经过物流程序向用户发货,通过售后处理系统确认用户是否要退货,通过商铺管理系统向商铺支付价款及监督等。当需要对分布在不同处理系统中的一笔完整业务流程进行跟踪和分析时,需要采集该完整业务流程分布在不同系统中的数据,以便于观察整个业务流程的实际运行情况,找出需要改进的地方。一笔完整业务流程经历的全部计算处理系统可被统一被定义为被观察系统。可以通过在各个系统附加的采集组件,收集被观察系统的业务流程数据。当被观察系统发生业务调用时,采集组件采集本次业务调用的相关业务数据。当被观察系统的业务调用结束时,通知采集组件本次业务调用的相关业务数据采集完毕,采集组件停止采集。
步骤S102,响应于在分布式缓存中查询到所述业务数据的业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
其中,有部分业务数据已经被预设有业务流程编号,关于在业务数据预设业务流程编号的方法将在后续实施例介绍。采集组件根据采集到的业务数据的业务流程编号在分布式缓存中查询,如果在分布式缓存中查询到该业务流程编号,说明系统中需要对与该业务流程编号相对应的业务数据进行采集,以观察与该业务数据相对应的业务流程的运行情况。此时,采集组件将采集得到的业务数据和业务流程编号一起发送至第一服务器,第一服务器可根据业务流程编号,将若干具有相同业务流程编号的业务数据组合为一个完整业务流程,以便于分析该业务流程的具体情况。如果在分布式缓存中没有查询到该业务流程编号,说明不需要对与该业务流程编号相对应的业务数据进行采集,丢弃本次采集的业务数据。
进一步,本申请实施例一所述的方法,还包括:
响应于所述业务数据不具有所述业务流程编号,在所述分布式缓存中查询所述业务数据是否符合预设业务特征;
如果所述业务数据符合预设业务特征,通过所述分布式缓存为所述业务数据设立新的业务流程编号;
否则,丢弃所述业务数据。
其中,上述方法应用于业务数据没有预设的业务流程编号的情况。如果采集组件发现业务数据不具有业务流程编号,则采集组件在分布式缓存中根据分布式缓存提供的预设业务特征,判断业务数据是否为需要采集的业务。例如,需要采集小额金融支付业务流程数据,则根据金融支付业务在分布式缓存中设置业务类型、支付数值等预设业务特征,当采集组件采集的某项业务数据的业务类型为支付业务时,其符合预设业务特征的业务类型,并且该业务数据的支付数值为10万以下,符合预设业务特征的小额支付数值。即采集的业务数据虽然不具有业务流程编号,但是该业务数据仍然符合预设业务特征,则分布式缓存为该业务数据设立新的业务流程编号并储存,当下次采集组件查询业务流程编号时,连同新的业务流程编号一起查询,可以基于新的业务流程编号查询后续的业务流程。如果采集的业务数据不具有业务流程编号并且不符合预设业务特征,说明该业务数据不需要采集,丢弃此次采集的业务数据。其中,预设业务特征为研发人员根据需要观察的业务流程进行自定义设置得到,设置方式能够满足定位该具体业务即可,具体可根据业务标识、业务名称、业务类型、业务数值等进行自定义设置,并没有限制。
进一步,本申请实施例一所述的方法,在通过所述分布式缓存为所述业务数据设立新的业务流程编号之后,还包括:
将所述新的业务流程编号和所述业务数据发送至所述第一服务器。
其中,对于不具有业务流程编号但是符合预设业务特征的业务数据,在通过分布式缓存分配新的业务流程编号后,将新的业务流程编号和业务数据发送至所述第一服务器,第一服务器可根据新的业务流程编号,将若干具有相同业务流程编号的业务数据组合为一个完整业务流程,以便于分析该业务流程的具体情况。
图2为本申请实施例二的分布式系统中采集业务流程数据的方法的流程示意图,如图2所示,本申请实施例二提供的分布式系统中采集业务流程数据的方法,应用于本申请实施例的第一服务器,该方法包括:
步骤S201,接收业务流程编号和业务数据。
步骤S202,将具有相同所述业务流程编号的所述业务数据组合为一个完整业务程。
其中,第一服务器为用于将业务数据整合为完整的业务流程的服务器,研发人员通过第一服务器观察分析业务流程。第二服务器采集业务数据后,将业务流程编号和业务数据发送至第一服务器,第一服务器根据业务流程编号,将若干具有相同业务流程编号的业务数据组合为一个完整业务流程,以便于分析该业务流程的具体情况。
进一步,本申请实施例二所述的方法,将具有相同的所述业务流程编号的所述业务数据组合为一个完整业务流程的步骤具体包括:
根据所述业务数据的调用时间或者调用顺序,将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
其中,业务数据可包括业务调用发生时的调用时间或调用顺序等信息,第一服务器可根据调用时间或调用顺序,按照调用发生的时间或先后顺序整理业务数据,形成一条顺序排布的完整业务流程。
图3为本申请实施例三的分布式系统中采集业务流程数据的方法的流程示意图,如图3所示,本申请实施例三提供的分布式系统中采集业务流程数据的方法,应用于本申请实施例的第三服务器,该方法包括:
步骤S301,响应于第二服务器发送的业务流程编号查询请求,向所述第二服务器返回查询结果;其中,所述第二服务器响应于查询到业务数据的所述业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
其中,第三服务器即为分布式缓存,用于存储业务流程编号和预设业务特征。第二服务器的采集组件采集到业务数据后,向第三服务器的分布式缓存请求查询该业务数据的业务流程编号,第三服务器根据该请求向第二服务器返回查询结果。如果查询到业务流程编号,第二服务器将业务流程编号和业务数据发送至第一服务器,否则,丢弃本次采集的业务数据。
进一步,本申请实施例三的方法,还包括:
响应于所述第二服务器发送的业务流程编号设立请求,向所述第二服务器返回新的业务流程编号并记录所述新的业务流程编号;其中,所述第二服务器响应于业务数据不具有所述业务流程编号,发送业务流程编号设立请求。
其中,如果第二服务器的采集组件发现业务数据不具有业务流程编号,则采集组件在分布式缓存中根据第三服务器的分布式缓存提供的预设业务特征,判断业务数据是否为需要采集的业务。如果业务数据符合预设业务特征,采集组件向第三服务器请求设立新的业务流程编号,第三服务器设立新的业务流程编号后将业务流程编号返回至第二服务器,第二服务器将新的业务流程编号和业务数据发送至所述第一服务器,第一服务器可根据新的业务流程编号,将若干具有相同业务流程编号的业务数据组合为一个完整业务流程。
图4为本申请实施例四的第二服务器的结构示意图,如图4所示,本申请实施例四的第二服务器,包括:采集模块41和第一查询模块42。
采集模块41,用于响应于业务调用,采集所述业务的业务数据;
第一查询模块42,用于响应于在分布式缓存中查询到所述业务数据的业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请实施例四的第二服务器,还包括:第一流程设立模块。
第一流程设立模块,用于:
响应于所述业务数据不具有所述业务流程编号,在所述分布式缓存中查询所述业务数据是否符合预设业务特征;
如果所述业务数据符合预设业务特征,通过所述分布式缓存为所述业务数据设立新的业务流程编号;
否则,丢弃所述业务数据。
进一步,本申请实施例四的第二服务器,所述第一查询模块42还用于:
在通过所述分布式缓存为所述业务数据设立新的业务流程编号之后,将所述新的业务流程编号和所述业务数据发送至所述第一服务器。
本申请实施例四的第二服务器,为图1所示的分布式系统中采集业务流程数据的方法的实现装置,具体可参考图1实施例,此处不再赘述。
图5为本申请实施例五的第一服务器的结构示意图,如图5所示,本申请实施例五的第一服务器,包括:接收模块51和流程整理模块52。
接收模块51,用于接收业务流程编号和业务数据;
流程整理模块52,用于将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
进一步,本申请实施例五的第一服务器,所述流程整理模块52具体用于:
根据所述业务数据的调用时间或者调用顺序,将具有相同所述业务流程编号的所述业务数据组合为一个完整业务流程。
本申请实施例五的第一服务器,为图2所示的分布式系统中采集业务流程数据的方法的实现装置,具体可参考图2实施例,此处不再赘述。
图6为本申请实施例六的第三服务器的结构示意图,如图6所示,本申请实施例六的第三服务器,包括:第二查询模块61。
第二查询模块61,用于响应于第二服务器发送的业务流程编号查询请求,向所述第二服务器返回查询结果;
其中,所述第二服务器响应于查询到业务数据的所述业务流程编号,将所述业务流程编号和所述业务数据发送至第一服务器。
进一步,本申请实施例六的第三服务器,还包括:第二流程设立模块。
第二流程设立模块,用于:
响应于所述第二服务器发送的业务流程编号设立请求,向所述第二服务器返回新的业务流程编号并记录所述新的业务流程编号;
其中,所述第二服务器响应于业务数据不具有所述业务流程编号,发送业务流程编号设立请求。
本申请实施例六的第三服务器,为图3所示的分布式系统中采集业务流程数据的方法的实现装置,具体可参考图3实施例,此处不再赘述。
图7为本申请实施例七的分布式系统中采集业务流程数据的系统的结构示意图,如图7所示,本申请实施例七的分布式系统中采集业务流程数据的系统,包括:本申请所述的第二服务器72、本申请所述的第一服务器71、以及本申请所述的第三服务器73。
图8为本申请实施例七的分布式系统中采集业务流程数据的系统的原理示意图,如图8所示,本申请实施例七的分布式系统中采集业务流程数据的系统的工作流程如下:
步骤S801,响应于业务调用,第二服务器通过采集组件采集所述业务的业务数据;
步骤S802,第二服务器判断业务数据是否具有业务流程编号;
步骤S803,如果具有业务流程编号,第二服务器向第三服务器发送业务流程编号查询请求;
步骤S804,第三服务器向第二服务器返回查询结果;
步骤S805,响应于在分布式缓存中查询到业务流程编号,第二服务器向第一服务器发送业务流程编号和业务数据;
步骤S806,第一服务器将具有相同业务流程编号的业务数据组合为一个完整业务流程;
步骤S807,响应于业务数据不具有业务流程编号,第二服务器在第三服务器的分布式缓存中查询业务数据是否符合预设业务特征;
步骤S808,如果业务数据符合预设业务特征,第二服务器向第三服务器发送业务流程编号设立请求;
步骤S809,第三服务器向第二服务器返回新的业务流程编号并记录新的业务流程编号;
步骤S810,第二服务器向第一服务器发送新的业务流程编号和业务数据;
步骤S811,第一服务器将具有相同业务流程编号的业务数据组合为一个完整业务流程;
步骤S812,如果业务数据不符合预设业务特征,丢弃业务数据。
其中,第一服务器为用于将业务数据整合为完整的业务流程的若干服务器之一,技术人员可以通过第一服务器观察完整展示的业务流程及其具体数据。第二服务器为用于采集业务数据的若干服务器之一,在被观察系统发生调用时,可以通过第二服务器采集业务数据并进行是否需要采集的判断。第三服务器为分布式缓存计算集群中的若干服务器之一,全部业务流程编号汇总于分布式缓存中,便于集中管理维护,任何服务器均可利用分布式缓存获取业务流程编号以判断是否为需要采集的业务数据。此外,技术人员还可通过分布式缓存自由设置预设业务特征,对于不具有业务流程编号的业务数据判断是否需要采集并赋予业务流程编号。
根据本申请的一实施例,还提供一种存储设备,所述存储设备存储计算机程序指令,所述计算机程序指令根据本申请图1至图3中任一项的方法进行执行。
根据本申请的一实施例,还提供一种计算设备,包括:用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述计算设备执行本申请图1至图3中任一项的方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。