从AOP到分布式链路追踪

1、aop介绍

面向切面的编程Aspect Oriented Programming,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

2.1 spring aop

三个基础概念:

  • advice:定义拦截行为,以及执行时机。比较常见的,方法执行之前进行拦截,执行之后,环绕,以及发生异常之后等执行时机。
  • pointcut:切入点。哪些方法需要增强,通常使用execution表达式进行增强。
  • weaving:代码织入。通常代表spring对advice和pointcut的集合处理。
    在这里插入图片描述
    SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,并没有提供一种新的AOP实现方式,其底层逻辑为jdk与cglib动态代理。

2.2 jdk动态代理

package spring.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;

public class ProxyTest {
    
//    private static Log logProxy = new LogD();
//    private Advice advice;
    public static void main(String[] args) {
        Log log = (Log) Proxy.newProxyInstance(ProxyTest.class.getClassLoader(), LogD.class.getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                System.out.println("pre invoke log");
                Object result = method.invoke(new LogD(), args);
                System.out.println("after invoke log");
                return result;
            }
        });
        log.info("this is test !!1",222);
    }

}

interface Log {
    void info(Object... args);
}

class LogD implements Log {

    @Override
    public void info(Object... args) {
        System.out.println(String.format("log info %s", Arrays.toString(args)));
    }
}


2、分布式链路追踪

Dapper

故障快速定位:可以通过调用链结合业务日志快速定位错误信息。

链路性能可视化:各个阶段链路耗时、服务依赖关系可以通过可视化界面展现出来。

链路分析:通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景。

在这里插入图片描述
https://pics2.baidu.com/feed/7af40ad162d9f2d3fd977039b26b8a1a6127ccf6.png?token=30fa37fc2fd2aef6c3d0274b2b3fc173

2.1 日志规范

主要记录TraceId,SpanId等链路分析标识。

2.2 Spring Log组件

有时间再来更新吧。。

2.3 MDC介绍以及使用

logback自定义MessageConverter

3、接入

3.1 侵入式接入

3.2 aop接入

4、中间件skywalking

4.1 基本原理介绍

4.2 agent示例

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值