# log-system **Repository Path**: fslq/log-system ## Basic Information - **Project Name**: log-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # log-system #### 介绍 高并发 Web 应用共享日志缓存系统设计方案 ## 系统架构 ```mermaid flowchart TD subgraph 多实例层 A[实例A] -->|调用| C1[LogCollector] B[实例B] -->|调用| C2[LogCollector] D[实例C] -->|调用| C3[LogCollector] end subgraph 采集层 C1 -->|本地缓存| E[本地日志缓存] C2 -->|本地缓存| E C3 -->|本地缓存| E E -->|定时触发| F1[10秒] E -->|批量触发| F2[100条] F1 -->|发送| G[RabbitMQ] F2 -->|发送| G LogTimerTrigger[LogTimerTrigger] -->|定时刷新| E end subgraph 消费层 G -->|监听| H[LogConsumerService] H -->|解析| I[解析日志消息] I -->|去重| J[本地缓存+Redis去重] J -->|存储| K[存储到Redis] end subgraph 存储层 K -->|全局存储| L1[Hash:logs:global:hash] K -->|行为索引| L2[Set:logs:index:action] K -->|时间索引| L3[ZSet:logs:index:time] L1 -->|过期| M[7天过期] L2 -->|过期| M L3 -->|过期| M end subgraph 查询层 L1 -->|查询| N[LogQueryController] L2 -->|查询| N L3 -->|查询| N N -->|按ID| O1[getLogById] N -->|多维度| O2[searchLogs] O1 -->|返回| P[日志结果] O2 -->|返回| P end ``` ### 架构说明 1. **多实例层**:多个应用实例同时调用 LogCollector 进行日志采集 2. **采集层**: - LogCollector 负责本地缓存日志 - 支持定时触发(10秒)和批量触发(100条) - LogTimerTrigger 每10秒定时刷新本地缓存 - 将日志发送到 RabbitMQ 3. **消费层**: - LogConsumerService 监听 RabbitMQ 队列 - 解析日志消息 - **去重逻辑**: - 本地缓存去重:使用 ConcurrentHashMap 存储已处理的日志ID - Redis 分布式去重:使用 Set 结构 `logs:processed:set` 存储已处理的日志ID - 存储到 Redis 4. **存储层**: - 全局存储:Hash 结构 (logs:global:hash) - 行为索引:Set 结构 (logs:index:action) - 时间索引:ZSet 结构 (logs:index:time) - 7天过期时间 5. **查询层**: - LogQueryController 提供查询接口 - 按 ID 查询 (getLogById) - 多维度查询 (searchLogs):支持按业务域、行为类型、时间范围查询 ### 核心组件 - **LogCollector**:日志采集/写入工具,多实例调用,本地缓存+RabbitMQ 生产者 - **LogConsumerService**:独立消费者进程,RabbitMQ 消费者,核心处理逻辑 - **LogTimerTrigger**:定时触发任务,每10秒执行一次 - **LogQueryController**:日志查询接口 - **LogSystemConfig**:系统核心配置(Redis + RabbitMQ) - **UserActionLog**:日志数据模型 - **LogIdGenerator**:日志ID生成器 ###