一种基于日志应用实现多系统多业务串联的方法转让专利

申请号 : CN202211534500.4

文献号 : CN115700502A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张培亮彭刚李国鹏任明晖李毓祥吕寒燕李欣洋车峰

申请人 : 山西建投云数智科技有限公司

摘要 :

本发明涉及一种基于日志应用实现多系统多业务串联的方法,属于多系统业务信息处理技术领域,具体包括通过日志协议在不同业务环节加入不同的日志信息,该日志信息增加流水标识,在不同系统间的业务流转过程中,客户端模块通知日志插件模块获取日志信息,日志插件模块将日志信息加入流水标识,同时将日志信息发送至日志接收服务端;日志接收服务端接收到日志信息后,写入kafka,并将日志信息缓存至日志解析模块;日志解析模块利用流数据处理程序对日志信息进行格式解析处理,并将解析后的日志数据存储至日志存储模块;kafka消费日志接收服务端队列中的日志,并把有效的日志按照约定的同一流水和不同环节类型来实现统一业务的环节串联。

权利要求 :

1.一种基于日志应用实现多系统多业务串联的方法,其特征在于:包括

通过日志协议在不同业务环节加入不同的日志信息,该日志信息增加流水标识,且同一笔业务操作的各个环节使用同一操作流水标识,在不同系统间的业务流转过程中,客户端模块通知日志插件模块获取日志信息,所述日志插件模块用于获取所述客户端模块的日志信息,并将日志信息加入流水标识,同时将日志信息发送至日志接收服务端;

所述日志接收服务端用于接收所述日志插件模块输出的日志信息,并将该日志信息写入kafka,并将所述日志信息缓存至日志解析模块;

所述日志解析模块利用流数据处理程序对所述日志信息进行格式解析处理,并将解析后的日志数据存储至日志存储模块;

所述kafka消费日志接收服务端队列中的日志,并把有效的日志按照约定的同一流水和不同环节类型来实现统一业务的环节串联。

2.根据权利要求1所述的一种基于日志应用实现多系统多业务串联的方法,其特征在于:所述日志插件模块将加入流水标识的日志信息进行avro序列化转换形成json串,然后获取日志接收服务端的地址信息,并将日志信息发送至日志接收服务端。

3.根据权利要求1所述的一种基于日志应用实现多系统多业务串联的方法,其特征在于:所述日志插件模块增加了缓冲队列,在发生异常情况时,将失败的数据暂时缓冲;当持续失败且缓冲队列满的情况下,按照日志生成时间顺序,逐个抛弃老的日志。

4.根据权利要求1所述的一种基于日志应用实现多系统多业务串联的方法,其特征在于:所述日志接收服务端接收到所述日志插件模块输出的日志信息后,按照日志信息的流水标志,把同类型的业务数据发送到同一个topic容器中,然后再将相同业务的topic统一发送给kafka消费。

说明书 :

一种基于日志应用实现多系统多业务串联的方法

技术领域

[0001] 本发明涉及一种基于日志应用实现多系统多业务串联的方法,属于多系统业务信息处理技术领域。

背景技术

[0002] 如果要在现有投入使用的生产不同系统或多个接口之间实现业务受理留痕,但是在不影响现有系统或者不改变入参情况下,比较困难,而这种场景在信息技术服务行业解决不知情业务受理尤为重要。例如用户订购某个服务产品,现有流程一般只记录用户订购结果,忽略和用户的交互流程。当用户投诉时,只能拿着业务办理结果和用户沟通,而用户并不一定认可,也较难说服用户。但是如果对其办理过程进行监控,展示系统和用户的交互过程,能较好说服用户,但是目前要实现记录和用户交互过程,主要方案主要有以下几种:(1)梳理出某个业务办理全流程,各个系统之间建立唯一标识机制,通过接口实现业务的串连(2)接口入参变动,通过新加入参实现统一业务办理不同流程之间的关系建立,从接口的发起方到落地方都需要同时统一约定接口出入参变更,接口的原始入参规则遭到破坏,如果涉及多客户端接口调用,则需要各客户端发起改造。例如:购买产品,从产品选择——》用户是否有购买权限——》购买落地,如果需要建立用户从产品选择到购买之间一套操作流程,现有办法主要从发起端产品选择接口、购买校验结构和落地接口同时增加同一个接触流水,客户端记录各个服务的和流水,从而实现查询功能。

发明内容

[0003] 为解决现有技术存在的技术问题,本发明提供了一种基于日志应用实现多系统多业务串联的方法,其能够在接口不变动的情况下,实现业务轨迹的查询,并且业务办理轨迹日志发送过程中异常不会影响业务受理,而且还能够实现插拔式业务开发,不同系统之间只需要引入日志、flume相关jar包,则可向Elasticsearchs发送日志,利用Elasticsearchs的高可读性则可实现各个系统或者业务之间的关联关系。
[0004] 为实现上述目的,本发明所采用的技术方案为一种基于日志应用实现多系统多业务串联的方法,其特征在于包括:通过日志协议在不同业务环节加入不同的日志信息,该日志信息增加流水标识,且同一笔业务操作的各个环节使用同一操作流水标识,在不同系统间的业务流转过程中,客户端模块通知日志插件模块获取日志信息,
所述日志插件模块用于获取所述客户端模块的日志信息,并将日志信息加入流水标识,同时将日志信息发送至日志接收服务端;
所述日志接收服务端用于接收所述日志插件模块输出的日志信息,并将该日志信息写入kafka,并将所述日志信息缓存至日志解析模块;
所述日志解析模块利用流数据处理程序对所述日志信息进行格式解析处理,并将解析后的日志数据存储至日志存储模块;
所述kafka消费日志接收服务端队列中的日志,并把有效的日志按照约定的同一流水和不同环节类型来实现统一业务的环节串联。
[0005] 优选的,所述日志插件模块将加入流水标识的日志信息进行avro序列化转换形成json串,然后获取日志接收服务端的地址信息,并将日志信息发送至日志接收服务端。
[0006] 优选的,所述日志插件模块增加了缓冲队列,在发生异常情况时,将失败的数据暂时缓冲;当持续失败且缓冲队列满的情况下,按照日志生成时间顺序,逐个抛弃老的日志。
[0007] 优选的,所述日志接收服务端接收到所述日志插件模块输出的日志信息后,按照日志信息的流水标志,把同类型的业务数据发送到同一个topic容器中,然后再将相同业务的topic统一发送给kafka消费。
[0008] 与现有技术相比,本发明具有以下技术效果:本发明通过在不同环节不同场景进行对各种日记按照一定的协议进行标记,异步发送给flume,通过扩展flume处理日志标记的能力,对杂乱的日志按照日志标签进行分类,从而实现在不影响现有业务和破坏接口正确性情况下实现多系统、多业务、多接口之间串联。

具体实施方式

[0009] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0010] 一种基于日志应用实现多系统多业务串联的方法,采用重写log4j的Appender插件,增加flume日志分类处理功能,采用kafka异步机制,三者之间相互协同,各个系统或者接口之间按照约定好日志格式协议,异步把日志发送到flume,确保日志发送异常不影响现有系统的使用,flume接受到任务后,按统一流失标识和分类整理业务请求过程。
[0011] 具体的利用Log4j的异步日志输出机制,重写Log4j的Appender插件,对日志数据正式输出前进行拦截、分析处理,将原有日志内容封装为约定协议数据结构,结构中补充了客户端的环境信息、系统信息等内容。日志数据的发送过程为了避免网络或服务端异常原因影响运行中的业务应用程序,在发送前增加了缓冲队列,当发生异常情况下,会将失败的数据暂时缓冲起来,当持续失败并且缓冲队列满的情况下,采取按照日志生成时间顺序,逐个抛弃老的日志数据,整个处理机制与业务主进程采用异步机制。
[0012] 在需要实现业务串联的系统上,通过对输出日志增加必要的接入标识(例如系统标志、功能标志、接口标志),客户端信息(JDK版本、MDC信息、IP地址、主机名、用户名…),业务受理过程中的业务信息(例如业务订购、退订、查询等),将这些日志数据进行avro序列化后发送到应用指定的flume服务端。2)flume服务端接收日志,通过新写的插件加工处理后,再写入kafka,flink实时流处理程序作为消费者从kafka获取日志数据,之后存储ElasticSearch。
[0013] 本发明通过对日志插件的扩展,增加flume日志处理分类功能,从而实现从日志中获取业务串联的流程,具体实现方式如下:(1)日志协议约定,需要实现业务串联的客户端只需引入本次重写的log4j插件,然后按照新的日志协议在不同环节放入不同的日志信息,但是同一笔业务操作的各个环节必须使用同一个操作流水标志,后续业务串联查询主要通过该流水实现。客户端准备好日志后,主动通知日志插件获取日志,插件会将业务办理过程中系统日志、来源信息和业务办理过程中的日志信息按照特定格式统一转成json串,然后获取到flume地址信息,再把json串发送给flume。如果发送给flume过程中异常,插件直接丢掉发送的日志,不影响现有生产系统运行。整个过程中,业务端不需要做接口出入参改造,只需要引入重写的日志插件,准备好不同环节需要输出的日志即可。
[0014] (2)使用Flume插件接受log4j发送的日志,再转发给kafka,现有Flume是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具,但是对接收日志缺乏共性有效分析,本提案通过对log4j发送日志进行环节标记,不同环节给予不同标记,Flume接收到日志后,会按照日志的标记把相同的类型业务数据发到同一个topic,Flume再把相同业务的topic统一发送给kafka消费。业务办理过程的所有日志为同一个topic,接入信息为另一个topic,这种分类能有效得获取日志分析过程中需要的数据。例如资费订购流程使用同一个业务标签,从用户选择订购资费、资费校验和资费最终提交的日志都加上资费订购业务标签的标记,flume接受到日志后,会把有相同标签的日志放到同一个topic容器中,保障同一个业务在不同业务场景下的日志格式一致,便于后续分析。
[0015] (3)Kafka消费flume队列中日志,把有效的日志,按照约定的“同一流水”和不同“环节类型”来实现统一业务的环节串联。
[0016] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明范围内。