Files
java-template/docs/redis_cache_deployment_guide.md
T
BrunoGaoandClaude e402548e45 fix: 修复customer_id字段缺失问题,完成数据库schema同步
数据库修复:
- t_user_health_data_daily: 添加customer_id字段(租户ID)
- t_user_health_data_weekly: 添加customer_id字段(租户ID)

ljwx-boot同步更新:
- TUserHealthDataDailyMapper.xml: 添加customer_id字段映射
- TUserHealthDataWeeklyMapper.xml: 添加customer_id字段映射

其他改进:
- 告警规则缓存优化
- Redis缓存性能提升
- 健康数据处理性能优化
- 添加完整的文档和工具脚本

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-10 13:49:59 +08:00

377 lines
8.1 KiB
Markdown

# Redis缓存告警系统部署指南
## 📋 部署概述
本指南用于部署基于Redis的告警规则缓存同步系统,实现ljwx-boot和ljwx-bigscreen之间的高效数据同步。
## 🏗️ 系统架构
```
ljwx-admin → ljwx-boot (Redis DB=1) → MySQL
↓ pub/sub
Redis服务器
↓ 订阅监听
ljwx-bigscreen (Redis DB=0) → generate_alerts
```
## ✅ 部署前检查
### 1. 系统要求
- **Redis版本**: 5.0+
- **Python版本**: 3.7+
- **Java版本**: JDK 8+
- **内存要求**: 至少2GB可用内存
### 2. 现有组件确认
```bash
# 检查Redis服务状态
redis-cli ping
# 检查ljwx-boot Redis配置
grep -n "redis" ljwx-boot/ljwx-boot-admin/src/main/resources/application-local.yml
# 检查ljwx-bigscreen Redis配置
python3 ljwx-bigscreen/bigscreen/redis_config.py
```
### 3. 网络连通性测试
```bash
# 测试Redis连接
redis-cli -h 127.0.0.1 -p 6379 -a 123456 ping
# 测试跨DB通信
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 0 ping
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 ping
```
## 🚀 部署步骤
### 步骤1: 更新ljwx-boot缓存策略
1. **备份现有文件**
```bash
cd ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/facade/impl/
cp TAlertRulesFacadeImpl.java TAlertRulesFacadeImpl.java.backup
```
2. **应用更新**
- 文件已在实施过程中更新
- 新增版本控制和分布式锁机制
- TTL设置为24小时(86400秒)
3. **验证更新**
```bash
# 重启ljwx-boot服务
cd ljwx-boot && ./run-local.sh restart
# 检查日志
tail -f ljwx-boot/logs/ljwx-boot-local.log | grep "告警规则缓存"
```
### 步骤2: 部署Python缓存管理器
1. **安装缓存管理器**
```bash
# 文件已创建在以下位置
ls -la ljwx-bigscreen/bigscreen/alert_rules_cache_manager.py
```
2. **安装依赖**
```bash
cd ljwx-bigscreen/bigscreen
pip3 install redis dataclasses typing
```
3. **权限设置**
```bash
chmod +x alert_rules_cache_manager.py
```
### 步骤3: 部署优化版生成器
1. **安装生成器**
```bash
# 文件已创建
ls -la utils/redis_cache_generate_alerts.py
chmod +x utils/redis_cache_generate_alerts.py
```
2. **测试基础功能**
```bash
cd utils
python3 redis_cache_generate_alerts.py
```
### 步骤4: 部署监控和测试工具
1. **部署测试套件**
```bash
ls -la utils/test_redis_cache_alerts.py
chmod +x utils/test_redis_cache_alerts.py
```
2. **部署监控工具**
```bash
ls -la utils/monitor_alert_cache_performance.py
chmod +x utils/monitor_alert_cache_performance.py
```
## 🧪 部署验证
### 1. 运行完整测试
```bash
cd utils
python3 test_redis_cache_alerts.py
```
**期望输出**:
```
🧪 启动Redis缓存告警系统完整测试
✅ PASS - Redis连接测试
✅ PASS - 告警规则获取测试
✅ PASS - 告警生成测试
✅ PASS - 批量处理性能测试
✅ PASS - 缓存统计测试
✅ PASS - 边界情况测试
总计: 6 | 通过: 6 | 失败: 0 | 通过率: 100.0%
🎉 测试通过!Redis缓存告警系统运行正常
```
### 2. 性能基准测试
```bash
# 监控10分钟并生成报告
python3 monitor_alert_cache_performance.py -d 600 -r
```
## 🔧 配置优化
### 1. Redis配置优化
```bash
# 编辑Redis配置文件
sudo vim /etc/redis/redis.conf
# 关键配置项
maxmemory 2gb
maxmemory-policy allkeys-lru
notify-keyspace-events Ex
save 900 1
save 300 10
save 60 10000
```
### 2. ljwx-boot配置调优
```yaml
# application-local.yml
spring:
data:
redis:
url: redis://default:123456@localhost:6379/1
connect-timeout: 10000ms
timeout: 30000ms
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
```
### 3. ljwx-bigscreen配置调优
```python
# redis_config.py
class RedisConfig:
def __init__(self):
self.host = '127.0.0.1'
self.port = 6379
self.db = 0
self.password = '123456'
self.socket_timeout = 30
self.retry_on_timeout = True
```
## 📊 性能目标
### 目标指标
- **缓存命中率**: >95%
- **告警规则TTL**: 24小时
- **处理延迟**: <5ms/record
- **QPS**: >1000 records/sec
- **Redis连接稳定性**: >99.9%
### 监控命令
```bash
# 实时性能监控
python3 monitor_alert_cache_performance.py -i 5
# 生成性能报告
python3 monitor_alert_cache_performance.py -d 3600 -r
```
## 🔒 安全配置
### 1. Redis安全
```bash
# 设置Redis密码
redis-cli CONFIG SET requirepass "your_secure_password"
# 禁用危险命令
redis-cli CONFIG SET rename-command FLUSHALL ""
redis-cli CONFIG SET rename-command EVAL ""
```
### 2. 网络安全
```bash
# 限制Redis访问IP
# 在redis.conf中配置
bind 127.0.0.1 192.168.1.0/24
protected-mode yes
```
## 🚨 故障排除
### 常见问题
#### 1. Redis连接失败
```bash
# 检查Redis服务状态
systemctl status redis
# 检查端口占用
netstat -tulpn | grep 6379
# 查看Redis日志
tail -f /var/log/redis/redis-server.log
```
#### 2. 缓存命中率低
```bash
# 检查缓存键
redis-cli -n 1 keys "alert_rules_*"
# 检查TTL
redis-cli -n 1 TTL "alert_rules_1"
# 检查订阅通道
redis-cli PUBSUB CHANNELS
```
#### 3. 订阅者不工作
```python
# 测试订阅者
python3 -c "
from ljwx_bigscreen.bigscreen.alert_rules_cache_manager import get_alert_rules_cache_manager
manager = get_alert_rules_cache_manager()
manager.start_subscriber()
import time; time.sleep(10)
print(manager.get_cache_stats())
"
```
### 诊断脚本
```bash
# 运行完整诊断
cat > diagnose_redis_cache.sh << 'EOF'
#!/bin/bash
echo "🔍 Redis缓存系统诊断"
echo "===================="
echo "1. Redis服务状态:"
systemctl status redis --no-pager
echo -e "\n2. Redis连接测试:"
redis-cli -h 127.0.0.1 -p 6379 -a 123456 ping
echo -e "\n3. DB分离测试:"
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 0 ping
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 ping
echo -e "\n4. 缓存键检查:"
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 keys "alert_rules_*"
echo -e "\n5. 订阅通道检查:"
redis-cli -h 127.0.0.1 -p 6379 -a 123456 PUBSUB CHANNELS
echo -e "\n6. Python组件测试:"
python3 utils/test_redis_cache_alerts.py
echo "===================="
echo "✅ 诊断完成"
EOF
chmod +x diagnose_redis_cache.sh
./diagnose_redis_cache.sh
```
## 📈 监控和维护
### 日常监控
```bash
# 启动持续监控(后台运行)
nohup python3 monitor_alert_cache_performance.py -i 30 > monitor.log 2>&1 &
# 定期生成报告
crontab -e
# 添加以下行,每小时生成一次报告
0 * * * * cd /path/to/utils && python3 monitor_alert_cache_performance.py -d 3600 -r
```
### 维护任务
```bash
# 每日维护脚本
cat > daily_maintenance.sh << 'EOF'
#!/bin/bash
echo "📅 每日Redis缓存维护 - $(date)"
# 清理过期键
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 0 --scan --pattern "*" | xargs -I {} redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 0 EXPIRE {} 86400
# 生成性能报告
cd /path/to/utils
python3 monitor_alert_cache_performance.py -d 600 -r
# 检查系统健康
python3 test_redis_cache_alerts.py > daily_test_$(date +%Y%m%d).log
echo "✅ 维护完成"
EOF
chmod +x daily_maintenance.sh
```
## 🔄 回滚方案
如果需要回滚到原始版本:
### 1. 恢复ljwx-boot
```bash
cd ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/facade/impl/
cp TAlertRulesFacadeImpl.java.backup TAlertRulesFacadeImpl.java
cd ljwx-boot && ./run-local.sh restart
```
### 2. 停用Python组件
```bash
# 停止监控
pkill -f monitor_alert_cache_performance.py
# 移除缓存管理器(可选)
mv ljwx-bigscreen/bigscreen/alert_rules_cache_manager.py ljwx-bigscreen/bigscreen/alert_rules_cache_manager.py.disabled
```
### 3. 清理Redis缓存
```bash
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 keys "alert_rules_*" | xargs redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 DEL
redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 keys "alert_rules_version_*" | xargs redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 1 DEL
```
## 📚 相关文档
- [告警规则缓存同步方案](./alert_rules_cache_sync_solutions.md)
- [generate_alerts性能分析](./generate_alerts_analysis.md)
- [Redis配置最佳实践](https://redis.io/documentation)
---
**部署负责人**: 系统架构团队
**最后更新**: 2025-09-09
**版本**: v1.0