基于自研框架的服务调用链实现方法技术

技术编号:27807701 阅读:12 留言:0更新日期:2021-03-30 09:27
本发明专利技术公开了一种基于自研框架的服务调用链实现方法,该方法包括:运用Spring Boot+AOP框架,创建一个自定义配置文件,然后新建配置类来映射自定义配置,通过生成的配置类进行注解,在Spring中将注解声明为组件,Spring Boot提示添加AOP依赖;基于服务端发起调用日志追踪,生成唯一的标记调用链,并记录调用链中的时间信息及关键信息;根据代码注入注解标识,服务发起调用日志追踪,并记录数据后存储,判断日志追踪是否异常,若异常,则记录异常信息,若未见异常,则追踪结束查看日志;微服务调用链请求实现方式,其中,同一调用链,不同微服务通过http请求进行调用,对于同一微服务内不同请求的调用量通过自研框架工具获取当前调用链,从而实现多请求调用微服务。从而实现多请求调用微服务。从而实现多请求调用微服务。

【技术实现步骤摘要】
基于自研框架的服务调用链实现方法


[0001]本专利技术涉及微服务调用链追踪和分析
,具体来说,涉及一种基于自研框架的服务调用链实现方法。

技术介绍

[0002]从技术角度来说,容器和Serverless 编程方式的诞生极大提升了软件交付与部署的效率,在架构的演化过程中,应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之而来就变成微服务之间的请求与调用,从资源角度来看,传统服务器这个物理单位也逐渐淡化,变成了看不见摸不到的虚拟资源模式,从以上两个变化可以看到这种弹性、标准化的架构背后,运维与诊断的需求也变得越来越复杂且难以支撑,为了应对这种变化趋势,诞生了一系列面向 DevOps 的诊断与分析系统,包括集中式日志系统(Logging),集中式度量系统(Metrics)和分布式追踪系统(Tracing),在今天的分布式应用环境中,日志记录、服务监控和异常的定位分析仍然是当前应用面临的重要问题。
[0003]OpenTracing是分布式跟踪系统,当我们把系统拆成服务化,分布式系统的时候,查询一个问题,很可能需要登录多台机器,OpenTracing通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现,OpenTracing是一种用于分析和监视应用程序的方法,特别是那些使用微服务体系结构构建的应用程序,IT和DevOps团队可以使用分布式追踪来监视应用程序,有助于查明故障发生的位置以及导致性能低下的原因,同时开发人员可以使用分布式追踪来帮助调试和优化他们的代码,但是,OpenTraing API只是作为位于应用程序/代码库和使用追踪及因果关系数据的各种系统之间轻薄的标准化层,为上层(应用程序)定义标准接口,其底层具体实现对应用透明,因此,OpenTracing实现需要一个较为复杂的过程,如目前已知著名分布式追踪系统CNCF Jaeger、DataLog和Zipkin等。

技术实现思路

[0004]针对相关技术中的上述技术问题,本专利技术提出一种基于自研框架的服务调用链实现方法,能够解决业务服务化形成的业务,数据交互网状调用关系中实现异常快速定位、调用链分析和日志记录问题。
[0005]为实现上述技术目的,本专利技术的技术方案是这样实现的:一种基于自研框架的服务调用链实现方法,该方法包括以下步骤:S1运用Spring Boot + AOP框架结构,运用Spring Boot + AOP框架结构,创建一个自定义配置文件,然后新建配置类来映射自定义配置,通过生成的配置类进行注解,在Spring中将注解声明为组件,Spring Boot提示添加面向切面编程AOP依赖;S2 根据服务请求调用链追踪并记录,基于服务端发起调用日志追踪,生成唯一的标记调用链,并记录调用链中的时间信息及关键信息;S3 调用链生成方式,根据代码注入注解标识,服务发起调用日志追踪,并记录数
据后存储,判断日志追踪是否异常,若异常,则记录异常信息,若未见异常,则追踪结束查看日志, 所述调用链由代码埋点、数据存储及查询分析三部分组成;S4 微服务调用链请求实现方式,其中,同一调用链,不同微服务通过http请求进行调用,对于同一微服务内不同请求的调用量通过自研框架工具获取当前调用链,从而实现多请求调用微服务。
[0006]进一步地,所述S1中自研框架进一步包括:S1.1运用特定的方式对Spring Boot框架进行添加AOP依赖,使得开发人员不再需要定义样板化进行配置;S1.2 面向切面编程AOP,通过预编译方式运行期间动态代理,完成程序的统一维护,利用面向切面编程AOP对业务逻辑各个部分进行隔离,使得业务逻辑各部分之间的耦合度降低,提高程序的重用性;S1.3面向切面编程AOP注解,当在Spring框架IOC容器中初始化 Aspect切面后, Spring 框架IOC 容器就会为与 Aspect 切面相匹配的 Bean 创建代理,其中Aspect支持五种类型的通知注解,包含前置通知、后置通知、返回通知、异常通知、环绕通知。
[0007]进一步地,所述S1.3中Aspect支持五种类型进一步包含:S1.3.1 @Before注解为前置通知, 在服务调用链执行之前执行;S1.3.2 @After注解为后置通知, 在服务调用链执行之后执行;S1.3.3 @AfterRunning注解为返回通知, 在服务调用链返回结果之后执行;S1.3.4 @AfterThrowing注解为异常通知, 在服务调用链抛出异常之后执行;S1.3.5 @Around注解为环绕通知, 围绕着服务调用链执行。
[0008]进一步地,所述S2中调用链进一步包含:S2.1 根据TraceId在发起追踪时生成唯一Id,基于唯一Id标记一条调用链,发起追踪的过程是一次请求或者一次方式调用,若TraceId一旦生成,随着调用链一直往下传递,直到本次调用结束;S2.2在发起一次调用时,调用链的step等于0,之后每进入一次微服务或者微服务内部,则step加1,返回方式或者微服务时,step

1,最后根据step分析本次调用的深度及进行异常定位和性能优化;S2.3时间戳,用于记录调用链在调用过程的时间信息,统计调用链中各个模块执行时间,便于整个系统的性能优化;S2.4日志信息,记录一条调用链中的关键信息,包含调用链相关信息、微服务相关信息和请求相关信息。
[0009]进一步地,所述S2.4关键信息进一步包含:S2.4.1调用链相关信息进一步包含调用链TraceId、调用链step;S2.4.2微服务相关信息包含微服务Id、微服务名称、微服务IP地址、微服务方式名称;S2.4.3请求相关信息包括http请求地址、Header内容和参数信息。
[0010]进一步地,所述S3中的代码埋点、数据存储、查询分析进一步包含:S3.1代码埋点:引入自研框架,在业务代码开发时首先在前加入注解@BizLog;S3.2数据存储:基于调用链启动后,自动记录日志信息,包括微服务Id、微服务名
称、IP地址、微服务方式名称和时间戳信息,同时在程序发生异常时,记录异常信息及发生异常时的TraceId和Step,利于开发人员快速定位;S3.3查询分析:开发人员根据TraceId、微服务信息和调用时间等信息查询日志信息和异常信息,用于开发人员快速分析定位问题,以及优化代码。
[0011]进一步地,所述S4中微服务调用进一步包含:S4.1 跨微服务调用链唯一性,通过http中Header的参数TracingId传递调用链的TraceId和step,参数格式类似TRCID 12345

3,其中,TRCID是指调用链参数标志,12345指传入的TraceId,3是指当前调用链的深度step;S4.2通过自研框架工具RequestContextUtil获取当前request实例,以记录并获取当前调用链的TraceId和step,使得多个请求调用微服务时,各调用链的TraceId和step彼此互相独立;S4.3 记录本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于自研框架的服务调用链实现方法,其特征在于,该方法包括以下步骤:S1 运用Spring Boot + AOP框架结构,创建一个自定义配置文件,然后新建配置类来映射自定义配置,通过生成的配置类进行注解,在Spring中将注解声明为组件,Spring Boot提示添加面向切面编程AOP依赖;S2 根据服务请求调用链追踪并记录,基于服务端发起调用日志追踪,生成唯一的标记调用链,并记录调用链中的时间信息及关键信息;S3 调用链生成方式,根据代码注入注解标识,服务发起调用日志追踪,并记录数据后存储,判断日志追踪是否异常,若异常,则记录异常信息,若未见异常,则追踪结束查看日志, 所述调用链由代码埋点、数据存储及查询分析三部分组成;S4 微服务调用链请求实现方式,其中,同一调用链,不同微服务通过http请求进行调用,对于同一微服务内不同请求的调用量通过自研框架工具获取当前调用链,从而实现多请求调用微服务。2.根据权利要求1所述的基于自研框架的服务调用链实现方法,其特征在于,所述S1中自研框架进一步包括:S1.1运用特定的方式对Spring Boot框架进行添加AOP依赖,使得开发人员不再需要定义样板化进行配置;S1.2 面向切面编程AOP,通过预编译方式运行期间动态代理,完成程序的统一维护,利用面向切面编程AOP对业务逻辑各个部分进行隔离,使得业务逻辑各部分之间的耦合度降低,提高程序的重用性;S1.3面向切面编程AOP注解,当在Spring框架IOC容器中初始化 Aspect切面后, Spring 框架IOC 容器就会为与 Aspect 切面相匹配的 Bean 创建代理,其中Aspect支持五种类型的通知注解,包含前置通知、后置通知、返回通知、异常通知、环绕通知。3.根据权利要求2所述的基于自研框架的服务调用链实现方法,其特征在于,所述S1.3中Aspect支持五种类型进一步包含:S1.3.1 @Before注解为前置通知, 在服务调用链执行之前执行;S1.3.2 @After注解为后置通知, 在服务调用链执行之后执行;S1.3.3 @AfterRunning注解为返回通知, 在服务调用链返回结果之后执行;S1.3.4 @AfterThrowing注解为异常通知, 在服务调用链抛出异常之后执行;S1.3.5 @Around注解为环绕通知, 围绕着服务调用链执行。4.根据权利要求1所述的基于自研框架的服务调用链实现方法,其特征在于,所述S2中调用链进一步包含:S2.1 根据TraceId在发起追踪时生成唯一Id,基于唯一Id标记一条调用链,发起追踪的过程...

【专利技术属性】
技术研发人员:谢水庚贺彩玲
申请(专利权)人:北京航天云路有限公司
类型:发明
国别省市:

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

1