当前位置: 首页 > news >正文

某投行日志记录解决方案二之日志异步落盘: 自定义注解+反射+AOP+异步多线程,实现高并发场景下的统一日志治理方案

一句话总结

自定义注解+反射+AOP+异步多线程

背景

在已经实现风控平台日志追踪实战解决方案的情况下,我们发现在关键操作节点(如交易提交、风控拦截),存在以下问题:

  1. 性能瓶颈突出:同步日志写入使核心交易接口RT增加200-300ms,QPS从2000骤降至800
  2. 可维护性差:日志格式不统一,关键字段缺失率达30%,审计追溯困难
  3. 对账困难:当出现节点数据异常,难快速定位问题

为此,我们更细粒度的统一日志记录表,实现高性能、低侵入的日志异步落盘。

架构设计

1. 整体架构

在这里插入图片描述

核心实现难点与解决方案

1. 零侵入日志采集

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {
    String bizType();  // 交易类型代码
    String operation();// 操作描述
    boolean saveParams() default true; // 是否记录入参
}

2. 高性能AOP切面

@Aspect
@Component
public class OperationLogAspect {
    
    @Around("@annotation(operationLog)")
    public Object around(ProceedingJoinPoint pjp, OperationLog operationLog) {
        // 反射获取方法元数据
        MethodSignature signature = (MethodSignature) pjp.getSignature();
        Object result = pjp.proceed();
        
        // 异步记录日志
        AsyncLogManager.submitLogTask(() -> {
            LogContext context = buildContext(pjp, operationLog);
            logService.save(context);
        });
        return result;
    }
}

3. 批量插入优化

INSERT INTO operation_log 
    (user_id,operation,params,result) 
VALUES 
    (?,?,?,?),
    (?,?,?,?),
    ... 
ON DUPLICATE KEY UPDATE retry_count=retry_count+1

实施效果(AB实验对比)

指标同步方案异步方案提升比例
平均RT235ms182ms↓22.5%
最大QPS1,2004,800↑300%
CPU使用率85%62%↓27%
日志丢失率-0.0023%<0.01%

相关文章:

  • 【Android】屏幕刷新机制(概览)
  • vs2017开启性能探测器失败
  • 【计算机操作系统】线程的概念和特点
  • 如何通过python将视频转换为字符视频
  • 优化 Docker 构建之方法(Methods for Optimizing Docker Construction)
  • 验证码通过“Canvas 绘制”与“Base64 图片”渲染两种不同的实现方式显示
  • 城电科技|零碳园区光伏太阳花绽放零碳绿色未来
  • 《论语别裁》第02章 为政(08) 诗的伟大
  • GenBI 中如何引入 LLM 做意图路由,区分查数据还是闲聊
  • 【ManiSkill】环境success条件和reward函数学习笔记
  • 解决HuggingFaceEmbeddings模型加载报错:缺少sentence-transformers依赖包
  • 作业(6)
  • WebGL图形编程实战【3】:矩阵操控 × 从二维到三维的跨越
  • 将网页操作的脚本自动保存成yaml ,然后修改使用
  • vueRouter的hash模式跟history的区别
  • pip show protobuf ValueError: invalid literal for int() with base 10: ‘‘
  • 小迪安全109-php模型动态调试,反序列化,变量覆盖,tp框架,原生pop链
  • 第30周Java分布式入门 分布式基础
  • C++20:make_shared_for_overwrite与make_unique_for_overwrite
  • 关于deepseek
  • 基于html+css的个人网站设计论文/专业全网优化
  • 会计上网站建设做什么费用/百度app官网下载
  • 网站搭建和网页设计/爱站seo工具包官网
  • 苏州园区人才网/宁波seo推广优化
  • 古董交易网站怎么做/百度人工服务
  • 网站建设合约具体内容/衡阳seo外包