(中等)SQL练习30:使用子查询的方式找出属于Action分类的所有电影对应的title,description

本文通过SQL子查询技巧,指导如何从film, category, film_category表中查找所有Action分类电影的title和description,适合初学者理解子查询应用。

SQL练习30:使用子查询的方式找出属于Action分类的所有电影对应的title,description

题目描述

你能使用子查询的方式找出属于 Action 分类的所有电影对应的 titledescription 吗。

film表

字段说明
film_id电影id
title电影名称
description电影描述信息

category表

字段说明
category_id电影分类id
name电影分类名称
last_update电影分类最后更新时间

film_category表

字段说明
film_id电影id
category_id电影分类id
last_update电影id和分类id对应关系的最后更新时间

考察知识点

子查询


解题思路

根据题中要求使用子查询的方式,先从 category 表中查询 category_id ,再根据 category_idfilm_category 表中查询分类中电影的 film_id ,最后按照 film_idfilm 表中查询 titledescription

SELECT title, description
FROM film
WHERE film_id IN (SELECT film_id
                FROM film_category
                WHERE category_id IN (SELECT category_id
                                    FROM category
                                    WHERE name = 'Action'))

题目来源:牛客网-SQL数据库实战题

每日打卡,❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

# 慢日志平台概要设计方案 ## 一、全局可视化大屏 ### 1.1 设计目标 为管理者和运维人员提供数据库性能的全景视图,实现实时监控和快速问题发现。采用深色主题设计,布局遵循"总-分-重点"的信息层次,顶部展示关键指标,中部呈现趋势分析,底部聚焦资源消耗和告警信息。 ### 1.2 数据更新机制 采用双引擎驱动:实时数据通过WebSocket每30秒推送增量更新,历史统计数据每分钟定时轮询刷新。核心数据存储在Redis缓存中,确保快速响应。统计模块定时从MySQL聚合计算后写入Redis,大屏直接读取缓存数据展示。 ### 1.3 核心展示模块 #### 慢SQL趋势分析区 展示最近24小时慢SQL数量曲线,支持1小时/6小时/12小时/24小时视图切换。曲线采用渐变色填充,超过阈值自动变为警示色。右上角显示增长率指标,对比昨日和上周同期数据。 配套展示执行时长分布环形图,按0-1秒、1-3秒、3-10秒、10秒以上四个区间统计。同时展示影响行数趋势的双轴折线图,左轴为扫描行数,右轴为返回行数,直观反映查询效率。 所有图表支持交互下钻,点击曲线任意时间点弹出该时段详细SQL列表。 #### 资源消耗TOP排行榜 以分页卡片形式展示四个维度的TOP10排名,通过标签页切换: - 执行时长TOP10:展示平均执行时长最长的SQL指纹 - 执行次数TOP10:展示调用频率最高的SQL,标注每日总耗时 - 扫描行数TOP10:展示全表扫描或大范围扫描的SQL,标注扫描返回比 - 锁等待TOP10:展示Lock_time最长的SQL 每条记录以卡片呈现,包含排名、SQL指纹、所属实例、业务标签和关键指标。提供快速操作按钮:查看详情、添加白名单、创建优化任务。使用Redis的Sorted Set存储TOP榜,每分钟通过WebSocket推送变化。 #### 实例健康度矩阵 采用热力图展示所有MySQL实例健康状况,每个方块代表一个实例,颜色深浅反映健康评分。 健康度评分规则:SQL数量40%、平均执行时长30%、锁等待时长20%、扫描行数10%。评分区间:90-100分绿色(健康)、70-89分黄色(预警)、70分以下红色(告警)。 支持鼠标悬停显示详细指标tooltip,点击方块跳转实例详情页。顶部提供业务线筛选器,按业务维度过滤实例范围。 #### 告警统计面板 以信息卡片组合展示告警关键指标: - 今日告警总数及与昨日对比趋势,附带最近7天告警曲线 - 告警级别分布堆叠柱状图(严重/警告/提示) - 未处理告警数量红色高亮显示,配合闪烁动画 - 告警响应时长平均值,超过目标值显示红色预警 - 告警TOP5来源实例横向条形图 告警数据实时更新,点击未处理告警数量弹出详细列表。告警触发后自动记录并通过钉钉、邮件、短信多渠道通知。 ### 1.4 技术要点 前端采用ECharts图表库和DataV大屏组件库。WebSocket实现实时推送,后端定时任务从Redis获取数据推送给所有在线客户端。Redis缓存键采用层次化设计如"slowsql:trend:日期",便于管理和过期控制。历史时序数据可选用InfluxDB或MySQL分区表存储。 ## 二、下钻分析能力 ### 2.1 分析模型设计 基于OLAP多维分析模型,支持从宏观趋势逐层深入到具体SQL和执行细节,最终定位性能根因。 核心分析维度: - 时间维度:年/月/日/小时/分钟多级粒度 - 业务维度:业务线/应用/模块三层级 - 数据库维度:实例/数据库名/表名 - SQL维度:SQL指纹/SQL类型(SELECT/UPDATE/DELETE/INSERT) - 性能维度:执行时长区间/扫描行数区间 维度间可自由组合,支持复杂的交叉分析查询。 ### 2.2 页面布局结构 采用"筛选-展示-详情"三段式布局: **筛选条件区域**(顶部固定): 第一行:业务线选择、实例选择、数据库选择、时间范围选择 第二行:执行时长阈值、扫描行数阈值、SQL类型、标签筛选 支持级联联动,选择业务线后实例和数据库自动过滤。提供保存筛选方案、一键清空、导出结果功能。实时显示当前结果数量。 **分析结果展示区域**(中部): 采用多标签页组织,包括SQL指纹列表、时序趋势分析、分布分析、原始日志查询四个视图。 ### 2.3 SQL指纹列表视图 表格形式展示聚合后的SQL指纹,每行包含: - SQL指纹(脱敏后模板,支持点击展开完整SQL) - 执行次数 - 平均/最大执行时长(超过阈值显示警示色) - 平均扫描行数/返回行数 - 平均锁等待时长 - 涉及表名 - 所属实例和业务标签 - 操作按钮(详情/加白名单/创建任务) 支持按任意列排序,默认按平均执行时长降序。支持多选批量操作。SQL指纹采用代码高亮提升可读性。 ### 2.4 时序趋势分析视图 双轴折线图展示慢SQL时间维度变化: - 横轴:时间,根据筛选范围自动调整刻度 - 左轴:执行次数(柱状图) - 右轴:平均执行时长(折线图) 支持时间范围缩放,在时间轴上拖动选择子区间放大查看。提供按分钟/小时/天/周四种粒度切换。支持对比上周或上月同期数据,使用虚线叠加显示。点击数据点弹出该时刻详细信息。 ### 2.5 分布分析视图 通过统计图表揭示多维度分布特征: - 执行时长分布直方图:显示SQL在各时长区间的数量分布 - 扫描行数分布直方图:采用对数尺度区间,识别全表扫描SQL - 数据库/表维度同心圆饼图:外圈显示数据库分布,内圈显示表分布,支持点击下钻 - SQL类型占比饼图:按SELECT/UPDATE/DELETE/INSERT分类统计 所有图表支持联动交互,点击一个图表的某个区域,其他图表自动过滤对应数据。 ### 2.6 原始日志查询视图 详细表格展示每条原始慢日志记录: - 执行时间戳 - 完整SQL语句(带参数值,代码高亮) - 执行时长/锁等待时长 - 扫描行数/返回行数 - 执行用户/客户端IP 支持二次筛选和全文搜索,高亮关键词。采用虚拟滚动技术处理大数据量。提供导出CSV功能,大数据量采用异步任务处理,完成后通知下载。 ### 2.7 根因分析功能 点击SQL指纹详情按钮进入深度分析页面,包含多个分析维度: **执行计划分析**:调用在线SQL分析模块,连接数据库执行EXPLAIN,展示执行计划结果,高亮全表扫描、filesort、临时表等问题点,给出索引优化建议。 **时间分布分析**:按小时/天/周展示该SQL执行时长波动,识别性能突变时间点,可关联数据库负载指标分析。 **参数分析**:对参数化查询,展示不同参数值的性能差异,识别导致慢查询的特定参数。 **关联分析**:展示同时间段其他慢SQL,分析是否存在锁竞争或资源争抢。 **历史对比**:对比该SQL在过去7天/30天的性能趋势,识别性能退化。 **智能建议引擎**:基于规则给出优化建议,如全表扫描建议加索引、高锁等待建议检查事务、高扫描返回比建议优化条件等。 ### 2.8 技术实现要点 数据库采用分区表设计,按天或月分区,在时间戳、SQL指纹、实例、业务标签等字段上建立复合索引,加速多维查询。热点查询结果缓存到Redis,TTL设置5分钟。大结果集不缓存,避免内存压力。异步导出使用后台任务队列处理,生成文件后上传到文件服务器或OSS,通知用户下载链接。 ## 三、任务跟踪看板 ### 3.1 任务管理架构 采用工作流引擎管理优化任务全生命周期,状态流转:待处理 → 已分配 → 进行中 → 待验证 → 已完成,支持驳回和搁置状态。 ### 3.2 看板视图设计 提供看板视图和列表视图双模式: **看板视图**(默认):类似Jira的泳道看板,按状态分列展示任务卡片。支持拖拽卡片改变状态,直观反映任务流转。 任务卡片内容: - 任务编号和标题 - 业务/实例信息 - SQL指纹摘要 - 当前性能指标 → 目标指标 - 负责人/截止时间 - 优先级(P0/P1/P2/P3)和标签 **列表视图**:传统表格形式,支持按任意字段排序和高级筛选,适合查找特定任务。 ### 3.3 任务创建流程 四个创建入口:大屏TOP榜、下钻分析页、告警通知、手动新建。 创建表单包含: - 任务标题(自动生成或手动输入) - 关联SQL指纹(自动关联或搜索) - 所属实例和业务 - 问题描述(富文本,支持截图) - 当前性能指标(平均时长/执行次数/影响用户数) - 优化目标(目标时长/预计收益) - 优先级/负责人/协作人 - 计划时间和标签 ### 3.4 任务详情页设计 **顶部信息区**:任务编号、标题、状态徽章、创建人、负责人、协作人、优先级、截止时间。 **Tab页内容**: - 任务详情:问题描述、关联SQL、性能指标对比、附件列表 - 优化方案:富文本记录根因分析、优化方案(支持多备选)、EXPLAIN对比、预期效果 - 执行记录:时间轴展示任务进展,记录创建、分配、方案添加、SQL变更、验证等关键节点 - 性能对比:图表展示优化前后执行时长、次数、扫描行数、数据库负载对比 **底部操作区**:根据任务状态显示不同操作按钮,如分配、开始处理、提交验证、验证通过/失败、驳回、搁置、重新打开、归档等。 ### 3.5 智能提醒推送 提醒规则: - 任务分配:即时钉钉/邮件通知负责人 - 即将到期:提前2天钉钉提醒 - 任务逾期:每日钉钉提醒,抄送Leader - 状态变更:通知相关人员 - 评论@:即时通知被@人员 ### 3.6 统计看板 看板顶部展示统计数据: - 本周新增/完成任务数 - 任务完成率 - 平均处理时长 - 逾期任务数(红色高亮) - 我的待办任务数 ### 3.7 自动化功能 **自动性能验证**:任务提交验证后,系统自动查询最近1小时该SQL指纹的平均执行时长,对比目标值,生成验证结果建议(通过/未达标)。 **定时监控**:每天定时检查逾期任务,向负责人发送提醒,高优先级任务抄送Leader。 **任务推荐**:分析历史优化任务效果,为新出现的慢SQL推荐相似的优化方案。 ### 3.8 技术实现要点 数据库设计包含任务主表、协作人关联表、操作日志表、附件表。任务主表在负责人、状态、截止时间等字段建立索引,优化查询性能。 看板拖拽基于前端拖拽组件实现,拖拽后调用API更新任务状态,通过WebSocket通知其他在线用户刷新看板,保证多人协作时数据一致性。 任务操作日志完整记录每次变更,包含操作人、操作类型、变更内容、时间戳,支持任务审计和回溯。 ## 四、系统集成方案 ### 4.1 整体架构 前端采用Vue3 + ECharts + DataV + Element Plus,应用层使用Spring Boot + WebSocket,数据层包含MySQL(业务数据)、Redis(缓存/队列)、可选InfluxDB(时序数据)。 ### 4.2 核心数据流 慢日志从Kafka消费后,采集模块生成SQL指纹并写入文件,pt工具解析后统计数据入库MySQL。定时聚合任务和准实时流式统计双轨运行,结果写入Redis缓存。大屏和下钻分析从Redis和MySQL读取数据展示。 ### 4.3 中间件选型 - 消息队列:Kafka(已有) - 缓存:Redis(热点数据、实时指标、分布式锁) - 实时通信:WebSocket(Spring Boot内置) - 任务调度:Spring @Scheduled - 通知推送:钉钉机器人/企业微信机器人 - 文件存储:本地文件系统或MinIO/OSS ### 4.4 关键特性 - 实时性:WebSocket推送保证大屏30秒延迟,告警即时通知 - 可扩展:多维分析模型支持灵活增加新维度 - 易用性:丰富的交互下钻,一键创建优化任务 - 智能化:自动性能验证,智能优化建议 - 协作性:任务看板支持多人协作,状态实时同步
最新发布
11-25
你提供的是一份非常完整、专业的**慢日志平台概要设计方案**,涵盖了从**全局可视化大屏 → 下钻分析能力 → 任务跟踪看板 → 系统集成方案**的全流程设计。我将基于这份方案进行**系统性解读与补充实现细节**,并提供关键模块的代码示例(如 WebSocket 实时推送、SQL 指纹生成、ECharts 图表渲染等),帮助你更好地落地该系统。 --- ## 一、全局可视化大屏 ### ✅ 核心功能总结 - 实时监控:通过 WebSocket 推送 Redis 缓存中的统计结果。 - 趋势分析:慢 SQL 数量、执行时长分布、影响行数对比。 - TOP排行榜:使用 Redis Sorted Set 存储和更新。 - 健康度矩阵:热力图 + 多维评分算法。 - 告警面板:多渠道通知 + 数据聚合展示。 ### 🔧 关键代码实现 #### 1. 使用 Python + Flask-SocketIO 实现 WebSocket 实时推送 ```python from flask import Flask, render_template from flask_socketio import SocketIO, emit import redis import json import time app = Flask(__name__) socketio = SocketIO(app, cors_allowed_origins="*") redis_client = redis.StrictRedis(host='localhost', port=6379, db=0) @app.route('/') def index(): return render_template('dashboard.html') # 大屏前端页面 @socketio.on('connect') def handle_connect(): print('Client connected') # 连接后立即发送一次数据 send_realtime_data() def send_realtime_data(): while True: # 从 Redis 获取最新趋势数据 trend_data = redis_client.get("slowsql:trend:24h") top_exec_time = redis_client.zrevrange("top:exec_time", 0, 9, withscores=True) data = { "trend": json.loads(trend_data) if trend_data else [], "top_exec_time": [{"sql_fingerprint": item[0].decode(), "avg_time": item[1]} for item in top_exec_time] } socketio.emit('update_dashboard', data) time.sleep(30) # 每30秒推送一次 if __name__ == '__main__': socketio.start_background_task(send_realtime_data) socketio.run(app, host='0.0.0.0', port=5000) ``` > **说明**: > - 后端定时从 Redis 读取 `slowsql:trend:24h` 和 `top:exec_time` 等缓存数据。 > - 使用 `start_background_task` 在后台持续推送。 > - 前端监听 `update_dashboard` 事件更新图表。 --- #### 2. Redis 中存储 TOP 榜(Sorted Set) ```python # 示例:插入一条慢 SQL 统计记录 redis_client.zincrby("top:exec_time", avg_exec_time, sql_fingerprint) redis_client.zincrby("top:scan_rows", scan_count, sql_fingerprint) redis_client.zincrby("top:lock_wait", lock_time, sql_fingerprint) # 获取 Top 10 top_10 = redis_client.zrevrange("top:exec_time", 0, 9, withscores=True) ``` > **建议 TTL 设置**: ```python redis_client.expire("top:exec_time", 60) # 每分钟刷新,过期时间略大于刷新周期 ``` --- #### 3. ECharts 渲染趋势图(前端) ```html <div id="trendChart" style="width: 100%; height: 300px;"></div> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script> const chart = echarts.init(document.getElementById('trendChart')); let option = { tooltip: { trigger: 'axis' }, xAxis: { type: 'category', data: [] }, yAxis: { type: 'value', name: '慢SQL数量' }, series: [{ name: '慢SQL数量', type: 'line', areaStyle: {}, color: '#FF6B6B' }] }; chart.setOption(option); // WebSocket 接收更新 socket.on('update_dashboard', function(data) { const times = data.trend.map(t => t.time); const counts = data.trend.map(t => t.count); chart.setOption({ xAxis: { data: times }, series: [{ data: counts }] }); }); </script> ``` > 支持渐变色填充、阈值告警变色可配置 `areaStyle.color` 为渐变对象。 --- #### 4. 实例健康度评分计算(Python 示例) ```python def calculate_health_score(instance_id): weights = { 'slow_count': 0.4, 'avg_duration': 0.3, 'lock_time': 0.2, 'scan_rows': 0.1 } slow_count = redis_client.get(f"metric:{instance_id}:slow_count") or 0 avg_duration = float(redis_client.get(f"metric:{instance_id}:avg_duration") or 0) lock_time = float(redis_client.get(f"metric:{instance_id}:lock_time") or 0) scan_rows = int(redis_client.get(f"metric:{instance_id}:scan_rows") or 0) # 归一化到 0-100 分(假设已知最大可能值或动态滑动窗口) score = ( normalize(slow_count, max_slow=1000, reverse=True) * weights['slow_count'] + normalize(avg_duration, max_dur=10, reverse=True) * weights['avg_duration'] + normalize(lock_time, max_lock=5, reverse=True) * weights['lock_time'] + normalize(scan_rows, max_scan=1e6, reverse=True) * weights['scan_rows'] ) * 100 return min(max(score, 0), 100) def normalize(value, max_val, reverse=False): n = min(float(value) / max_val, 1.0) return 1 - n if reverse else n ``` > 可以每5分钟调度一次,写入 Redis 或 MySQL。 --- ## 二、下钻分析能力 ### ✅ 核心功能总结 - 多维 OLAP 分析模型(时间、业务、实例、SQL 类型等) - 四种视图切换:列表、趋势、分布、原始日志 - 根因分析:执行计划、参数差异、历史对比 ### 🔧 关键实现 #### 1. SQL 指纹生成(用于聚合相同模板的 SQL) ```python import re def generate_sql_fingerprint(sql): # 移除所有常量(数字、字符串) sql = re.sub(r'\b\d+\b', '?', sql) # 数字 sql = re.sub(r"'[^']*'", "'?'", sql) # 单引号字符串 sql = re.sub(r'"[^"]*"', '"?"', sql) # 双引号字符串 sql = re.sub(r"`[^`]*`", "`?`", sql) # 反引号标识符(保留结构) sql = re.sub(r'\s+', ' ', sql).strip() # 多空格合并 return sql.lower() ``` > 示例: ```python sql = "SELECT * FROM users WHERE id = 123 AND name = 'Alice'" fingerprint = generate_sql_fingerprint(sql) # 输出: select * from users where id = ? and name = '?' ``` > 将指纹作为聚合键,可用于统计执行次数、平均耗时等。 --- #### 2. MySQL 表结构设计(分区表 + 索引优化) ```sql CREATE TABLE slow_log_records ( id BIGINT AUTO_INCREMENT PRIMARY KEY, instance_id VARCHAR(64) NOT NULL, db_name VARCHAR(64), table_name VARCHAR(64), sql_type ENUM('SELECT','UPDATE','DELETE','INSERT'), sql_fingerprint TEXT NOT NULL, original_sql LONGTEXT, exec_time FLOAT NOT NULL, -- seconds lock_time FLOAT, rows_sent INT, rows_examined INT, user_host VARCHAR(128), client_ip VARCHAR(45), timestamp DATETIME NOT NULL, app_name VARCHAR(64), business_line VARCHAR(64), INDEX idx_time (timestamp), INDEX idx_fingerprint (sql_fingerprint(255)), INDEX idx_instance_time (instance_id, timestamp), INDEX idx_biz_sql_type (business_line, sql_type) ) ENGINE=InnoDB PARTITION BY RANGE (YEAR(timestamp) * 100 + MONTH(timestamp)) ( PARTITION p202401 VALUES LESS THAN (202402), PARTITION p202402 VALUES LESS THAN (202403), PARTITION p202403 VALUES LESS THAN (202404) ); ``` > 分区按月划分,提升查询效率;复合索引支持多维筛选。 --- #### 3. 执行计划分析(调用 EXPLAIN) ```python import pymysql def explain_sql(instance_config, sql): conn = pymysql.connect(**instance_config) try: with conn.cursor() as cursor: cursor.execute(f"EXPLAIN {sql}") result = cursor.fetchall() columns = [desc[0] for desc in cursor.description] return [dict(zip(columns, row)) for row in result] finally: conn.close() # 高亮问题点 def analyze_explain(explain_rows): issues = [] for row in explain_rows: if row['type'] == 'ALL': issues.append("全表扫描 detected") if 'filesort' in (row['Extra'] or ''): issues.append("需要 filesort") if 'temporary' in (row['Extra'] or ''): issues.append("使用临时表") return issues ``` > 可结合前端高亮显示,并给出“建议添加索引”提示。 --- ## 三、任务跟踪看板 ### ✅ 功能亮点 - 工作流状态机管理(待处理 → 已完成) - 看板拖拽 + 列表双模式 - 自动验证 + 提醒机制 ### 🔧 数据库设计(MySQL) ```sql CREATE TABLE optimization_tasks ( id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, status ENUM('pending', 'assigned', 'in_progress', 'pending_verify', 'completed', 'rejected', 'archived') DEFAULT 'pending', priority ENUM('P0','P1','P2','P3') DEFAULT 'P2', sql_fingerprint TEXT NOT NULL, instance_id VARCHAR(64), business_line VARCHAR(64), current_avg_duration FLOAT, target_avg_duration FLOAT, owner_user_id VARCHAR(64), assignee_user_id VARCHAR(64), due_date DATETIME, created_by VARCHAR(64), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_status (status), INDEX idx_assignee (assignee_user_id), INDEX idx_due_date (due_date), INDEX idx_fingerprint (sql_fingerprint(255)) ); -- 协作人关联表 CREATE TABLE task_collaborators ( task_id BIGINT, user_id VARCHAR(64), FOREIGN KEY (task_id) REFERENCES optimization_tasks(id) ON DELETE CASCADE ); -- 操作日志 CREATE TABLE task_logs ( id BIGINT AUTO_INCREMENT PRIMARY KEY, task_id BIGINT, operator VARCHAR(64), action VARCHAR(64), -- e.g., 'assigned', 'started', 'verified' details JSON, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES optimization_tasks(id) ); ``` --- #### 1. WebSocket 实现看板状态同步(Vue + Socket.IO) ```javascript // Vue 组件中监听任务状态变化 socket.on('task_updated', (updatedTask) => { const task = this.tasks.find(t => t.id === updatedTask.id); if (task) Object.assign(task, updatedTask); }); ``` 后端在任务状态变更后广播: ```python socketio.emit('task_updated', task_dict, room=f"board_{business_line}") ``` --- #### 2. 自动性能验证逻辑 ```python def auto_verify_task(task_id): task = get_task(task_id) recent_data = query_mysql(f""" SELECT AVG(exec_time) as avg_time FROM slow_log_records WHERE sql_fingerprint = %s AND timestamp > DATE_SUB(NOW(), INTERVAL 1 HOUR) """, (task.sql_fingerprint,)) current_avg = recent_data[0]['avg_time'] if current_avg <= task.target_avg_duration: return {"result": "passed", "current": current_avg} else: return {"result": "failed", "current": current_avg, "target": task.target_avg_duration} ``` > 提交验证时自动调用此函数,辅助判断是否达标。 --- ## 四、系统集成方案(架构图补充) ``` +------------------+ +-------------------+ | MySQL Slow Log | --> | Kafka (日志采集) | +------------------+ +---------+---------+ | v +----------------------------+ | Log Processor (Python) | | - 生成指纹 | | - 写入 MySQL & Redis | +-------------+--------------+ | +-----------------------v------------------------+ | 应用服务层 | | Spring Boot / Flask | | - WebSocket 推送 | | - REST API 提供查询 | | - 定时任务聚合统计 | +-----------------------+------------------------+ | +--------------------------v----------------------------+ | 前端 (Vue3 + ECharts + Element Plus) | | - 大屏 / 下钻 / 任务看板 | +-------------------------------------------------------+ 通知系统:钉钉机器人 → Webhook 发送消息 文件导出:Celery 异步任务 → MinIO/OSS 存储 → 返回下载链接 ``` --- ## 总结与优势 | 模块 | 技术亮点 | |------|----------| | 大屏 | WebSocket + Redis + ECharts 实现实时可视化 | | 下钻 | 多维 OLAP + SQL指纹 + 分区表加速查询 | | 任务 | 工作流引擎 + 自动验证 + 协作提醒 | | 架构 | 解耦清晰、扩展性强、支持高并发 | --- ##
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值