概述
项目采用 生产者-消费者 架构实现日志的异步持久化。admin 模块负责生产日志消息并发送到 Kafka,async 模块负责消费 Kafka 消息并双写 MySQL 和 Elasticsearch,实现业务请求与日志落库的解耦。
整体架构
系统组件关系
生产者端 (admin 模块):
HTTP 请求
├── ApiLoggerFilter (OncePerRequestFilter)
│ └── ApiLoggerService.sendApiLogToDBMQ/ESMQ
│ └── @Async("loggerTaskExecutor")
│ └── KafkaTemplate.send()
└── Controller (标注 @ApiOperationLog 的方法)
└── ApiOperationLogAspect (AOP 环绕通知)
└── OperationLoggerService.sendOperationLogToDBMQ/ESMQ
└── @Async("loggerTaskExecutor")
└── KafkaTemplate.send()

