概述
项目采用 生产者-消费者 架构实现日志的异步持久化。admin 模块负责生产日志消息并发送到 Kafka,async 模块负责消费 Kafka 消息并双写 MySQL 和 Elasticsearch,实现业务请求与日志落库的解耦。
整体架构
flowchart TD
subgraph "admin 模块(生产者)"
A[HTTP 请求] --> B[ApiLoggerFilter]
B --> C[ApiLoggerService.sendApiLogToDBMQ/ESMQ]
C --> D["@Async(\"loggerTaskExecutor\")"]
D --> E[KafkaTemplate.send()]
A --> F[Controller @ApiOperationLog]
F --> G[ApiOperationLogAspect]
G --> H[OperationLoggerService]
H --> I[sendOperationLogToDBMQ/ESMQ]
I --> J["@Async(\"loggerTaskExecutor\")"]
J --> K[KafkaTemplate.send()]
end
subgraph "Kafka Broker"
L["Topics:\n- api-log-db-topic\n- api-log-es-topic\n- operation-log-db-topic\n- operation-log-es-topic"]
end
subgraph "async 模块(消费者)"
M[ApiLoggerDBListener] --> N[MySQL api_log_yyyyMMdd]
O[ApiLoggerESListener] --> P[ES api_log_yyyyMMdd]
Q[OperationLoggerDBListener] --> R[MySQL opl_log_yyyyMMdd]
S[OperationLoggerESListener] --> T[ES opl_log_yyyyMMdd]
end
E --> L
K --> L
L --> M
L --> O
L --> Q
L --> S

