基于配置中心的调用链数据采集系统、方法及存储介质技术方案

技术编号:29132834 阅读:17 留言:0更新日期:2021-07-02 22:28
本发明专利技术涉及一种基于配置中心的调用链数据采集系统、方法及存储介质,其中系统包括:配置定义模块,用于定义从Apollo配置中心映射得到的配置信息;对象装配模块,用于根据所述配置定义模块中的配置完成调用链采集端所需类的装配;配置刷新模块,用于从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;数据采集模块,用于拦截调用请求进行链路数据采集,并设置链路中包含的数据字段;数据输出模块,用于将最终形成的链路数据发送至Kafka数据总线。同时本发明专利技术也提供了与系统相对应的调用链数据采集方法、设备及存储介质,与现有技术相比,本发明专利技术具有配置灵活、支持动态开关以及方便拓展开发等优点。

【技术实现步骤摘要】
基于配置中心的调用链数据采集系统、方法及存储介质
本专利技术涉及计算机
,尤其是涉及一种基于配置中心的调用链数据采集系统、方法及存储介质。
技术介绍
在分布式系统中,一个请求会产生一个调用链,调用链通过全局的TraceID进行关联,记录了请求发生经过的系统和系统间的关系。对服务调用链的跟踪已经是卡中心分布式全栈监控系统中定位问题和性能分析的重要手段。一次完整的调用请求访问多个系统或中间件时会产生多条调用链数据,这些调用链数据包括服务调用服务,服务调用数据库,服务调用Redis,服务调用Kafka,服务调用Rabbitmq。采集调用链数据必须做到配置灵活,支持Plugin模式,支持动态开关,支持数据采样,数据缓冲,接入无感知的功能。1配置灵活调用链数据来源于不同的服务,采集端在配置调用链采集配置时还可以针对不同的服务配置是否开启数据采集。采集配置包括:采集功能全局开关,采样率配置,数据输出的kafkatopic,单条消息最大字节数,数据输出线程数,数据输出队列最大Span数,数据输出队列最大字节数,数据输出开关,数据输出kafka地址,不同服务的采集开关。不同服务的采集开关包括:数据库jdbc调用链开关,Redis调用链开关,Kafka调用链开关,Rabbitmq调用链开关。通过这些配置可以更加灵活的使用采集端的功能。2支持Plugin模式采集不同服务的调用链数据需要不同的实现,采集端基于io.zipkin.brave框架做扩展分别实现了http调用链,DB调用链,Redis调用链,Kafka调用链,Rabbitmq调用链数据的采集。后续扩展接入其他调用链数据也非常方便,只需基于brave重点实现新服务的数据采集。3支持动态开关调用链采集端的功能封装在SDK中,业务应用通过引入SDK包获得调用链采集功能。采集端的功能会与业务应用一起运行,会占用业务应用服务器一定的资源,出于对业务应用系统的保护,在一些极端情况下需要能够及时关闭采集端的功能以减少对业务应用服务器资源的损耗。采集端基于Apollo配置中心配置动态刷新功能实现了采集功能整体开关,不同服务调用链采集开关,数据输出开关的功能。4支持数据采样在服务的请求并发较高时如果调用链数据全采样,会导致输出到kafka的链路数据急剧增加,此时可以配置较低的采样率来减少链路数据的输出。5数据缓冲在链路数据输出的kafka不可用时,此时产生的链路数据不能在内存中无限制的增加,需要设置内存中数据的上限。当达到上限后,自动丢弃老数据,以防止物理内存被占满。6接入无感知调用链数据采集功能是通过切面编程的方式实现,对业务系统的接入可以做到透明无感知。在使用调用链采集端的功能时,业务开发人员无需开发多余的适配代码,只需专注业务逻辑的开发。本专利技术旨在设计一种能够含括以上各种需求的调用链数据采集系统及对应的采集操作方法。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种基于配置中心的调用链数据采集系统、方法及存储介质。本专利技术的目的可以通过以下技术方案来实现:一种基于配置中心的调用链数据采集系统,该系统包括:配置定义模块,用于定义从Apollo配置中心映射得到的配置信息;对象装配模块,用于根据所述配置定义模块中的配置完成调用链采集端所需类的装配;配置刷新模块,用于从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;数据采集模块,用于拦截调用请求进行链路数据采集,并设置链路中包含的数据字段;数据输出模块,用于将最终形成的链路数据发送至Kafka数据总线。进一步地,所述的配置定义模块包括:链路功能开关配置子模块,用于配置链路功能是否开启,对应数据是否输出;服务采集开关配置子模块,用于配置是否采集调用对应服务的链路数据;数据采样配置子模块,用于配置io.zipkin.brave框架以实现对不同服务客户端方法的拦截并生成调用链数据;数据输出配置子模块,用于配置数据输出的Kafka地址,对应数据是否输出。本专利技术还提供一种采用所述的基于配置中心的调用链数据采集系统的调用链数据采集方法,该方法包括以下步骤:步骤1:于所述配置定义模块中定义从Apollo配置中心映射得到的配置信息;步骤2:利用所述对象装配模块根据所述配置定义模块中的配置完成调用链采集端所需类的装配;步骤3:利用所述配置刷新模块,当其从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;步骤4:利用所述数据采集模块拦截调用请求进行链路数据采集,并设置链路中包含的数据字段,形成最终链路数据;步骤5:基于所述数据输出模块将最终形成的链路数据发送至Kafka数据总线,至此调用链数据采集完毕。进一步地,所述的步骤1中的配置定义模块包括:链路功能开关配置子模块,用于配置链路功能是否开启,对应数据是否输出;服务采集开关配置子模块,用于配置是否采集调用对应服务的链路数据;数据采样配置子模块,用于配置io.zipkin.brave框架以实现对不同服务客户端方法的拦截并生成调用链数据;数据输出配置子模块,用于配置数据输出的Kafka地址,对应数据是否输出。进一步地,所述的步骤2具体包括:所述对象装配模块基于Spring的AutoConfiguration功能,并根据所述配置定义模块中的配置完成调用链采集端所需类的装配。进一步地,所述的步骤3包括以下分步骤:步骤301:于所述配置刷新模块中将配置信息与调用链采集类的装配方法相关联;步骤302:通过实现Apollo配置中心客户端提供的ConfigChangeListener接口类注册监听器,以实现监听配置中心配置的变动;步骤303:当所述监听器收到配置变动时,根据配置找到对应的装配方法,使用类的反射调用该装配方法重新初始化对象,以实现配置的刷新功能。进一步地,所述的步骤4中的链路中包含的数据字段包括http、jdbc、rabbitmq、Kafka和redis的调用信息,其中,http调用信息的tags字段中包括请求url、状态码、异常信息、http请求方法和灰度标签;jdbc调用信息的tags字段中包括sql语句和jdbc连接url;rabbitmq调用信息的tags字段中包括rabbitmqbroker、exchange、routing_key和queue队列名;Kafka调用信息的tags字段中包括Kafkabroker和topic。进一步地,所述的步骤5具体包括:基于所述数据输出模块,通过封装类将数据发送到Kafka数据总线中,并由数据清洗项目将Kafka数据总线中的数据消费并存入数据分析引擎中,至此调用链数据采集完毕。本专利技术还提供一种终端设备,包括存储器、处理器以及存储本文档来自技高网
...

【技术保护点】
1.一种基于配置中心的调用链数据采集系统,其特征在于,该系统包括:/n配置定义模块,用于定义从Apollo配置中心映射得到的配置信息;/n对象装配模块,用于根据所述配置定义模块中的配置完成调用链采集端所需类的装配;/n配置刷新模块,用于从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;/n数据采集模块,用于拦截调用请求进行链路数据采集,并设置链路中包含的数据字段;/n数据输出模块,用于将最终形成的链路数据发送至Kafka数据总线。/n

【技术特征摘要】
1.一种基于配置中心的调用链数据采集系统,其特征在于,该系统包括:
配置定义模块,用于定义从Apollo配置中心映射得到的配置信息;
对象装配模块,用于根据所述配置定义模块中的配置完成调用链采集端所需类的装配;
配置刷新模块,用于从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;
数据采集模块,用于拦截调用请求进行链路数据采集,并设置链路中包含的数据字段;
数据输出模块,用于将最终形成的链路数据发送至Kafka数据总线。


2.根据权利要求1所述的一种基于配置中心的调用链数据采集系统,其特征在于,所述的配置定义模块包括:
链路功能开关配置子模块,用于配置链路功能是否开启,对应数据是否输出;
服务采集开关配置子模块,用于配置是否采集调用对应服务的链路数据;
数据采样配置子模块,用于配置io.zipkin.brave框架以实现对不同服务客户端方法的拦截并生成调用链数据;
数据输出配置子模块,用于配置数据输出的Kafka地址,对应数据是否输出。


3.一种采用如权利要求1所述的基于配置中心的调用链数据采集系统的调用链数据采集方法,其特征在于,该方法包括以下步骤:
步骤1:于所述配置定义模块中定义从Apollo配置中心映射得到的配置信息;
步骤2:利用所述对象装配模块根据所述配置定义模块中的配置完成调用链采集端所需类的装配;
步骤3:利用所述配置刷新模块,当其从Apollo配置中心接收配置变更事件,实时刷新本地配置信息并重新装配调用链采集端所需的类;
步骤4:利用所述数据采集模块拦截调用请求进行链路数据采集,并设置链路中包含的数据字段,形成最终链路数据;
步骤5:基于所述数据输出模块将最终形成的链路数据发送至Kafka数据总线,至此调用链数据采集完毕。


4.根据权利要求3所述的一种采用所述的基于配置中心的调用链数据采集系统的调用链数据采集方法,其特征在于,所述的步骤1中的配置定义模块包括:
链路功能开关配置子模块,用于配置链路功能是否开启,对应数据是否输出;
服务采集开关配置子模块,用于配置是否采集调用对应服务的链路数据;
数据采样配置子模块,用于配置io.zipkin.brave框架以实现对不同服务客户端方法的拦截并生成调用链数据;
数据输出配置子模块,用于配置数据输出的Kafka地址,对应数据是否输出。


5.根据权利要求3所述...

【专利技术属性】
技术研发人员:李虎曾毅峰刘佳利夏海虎
申请(专利权)人:上海浦东发展银行股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1