跳到主要内容

黑名单主表结构

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档详细解析黑名单主表(blacklisted)的结构设计,涵盖黑名单实体表的核心字段定义、数据类型规范、业务逻辑实现以及系统集成架构。该系统采用MySQL作为主存储,TDengine作为时序数据存储,实现了黑名单管理的完整生命周期。

项目结构

黑名单模块在整体项目架构中的位置如下:

Mermaid Diagram Code:

graph TB
subgraph "黑名单模块"
A[blacklist-api]
B[blacklist-biz]
end
subgraph "数据存储层"
C[MySQL数据库]
D[TDengine时序数据库]
end
subgraph "业务逻辑层"
E[黑名单管理服务]
F[设备管理服务]
G[应用管理服务]
end
A --> B
B --> C
B --> D
C --> E
C --> F
C --> G
D --> E

图表来源

章节来源

核心组件

黑名单类型枚举

黑名单类型枚举定义了系统支持的黑名单类别:

枚举值代码描述业务含义
DELETE0卸载应用被用户主动卸载
KILL1杀死(闪退)应用异常崩溃或被系统杀死

主要数据模型

AppBlacklistedDO - 黑名单主表实体

黑名单主表的核心字段定义:

字段名数据类型长度限制允许为空默认值说明
idBIGINT--自增主键
applicationNameVARCHAR255NULL应用名称
packageNameVARCHAR255-应用包名(唯一标识)
statusINT-1状态:1启用,0禁用
typeINT-0黑名单类型(DELETE/KILL)
versionVARCHAR50NULL版本号
remarkTEXT-NULL备注说明
createByVARCHAR64NULL创建人
updateByVARCHAR64NULL更新人
bpmStatusINT-NULL工作流状态
processInstanceIdVARCHAR50NULL流程实例ID
validINT-NULL生效状态

AppKillRecordDO - 杀死记录实体

时序数据表字段定义:

字段名数据类型长度限制允许为空默认值说明
tsTIMESTAMP--记录日期
dataKeyVARCHAR1000-主键:mac+cpu_id
macVARCHAR20-设备MAC地址
cpuIdVARCHAR255-CPU序列号
frequencyINT--杀死次数
createTimeTIMESTAMP--创建时间
blackListIdINT--关联黑名单ID

章节来源

架构概览

黑名单系统的整体架构设计:

Mermaid Diagram Code:

sequenceDiagram
participant Client as 应用客户端
participant API as 黑名单API
participant Biz as 业务逻辑层
participant MySQL as MySQL数据库
participant TDengine as TDengine数据库
Client->>API : 查询黑名单状态
API->>Biz : 校验黑名单规则
Biz->>MySQL : 查询黑名单配置
MySQL-->>Biz : 返回黑名单配置
Biz->>TDengine : 查询设备行为数据
TDengine-->>Biz : 返回杀死记录
Biz-->>API : 组装返回结果
API-->>Client : 返回黑名单状态
Note over Client,Biz : 黑名单验证流程

图表来源

详细组件分析

数据模型关系图

Mermaid Diagram Code:

erDiagram
BLACKLISTED {
bigint id PK
varchar application_name
varchar package_name UK
int status
int type
varchar version
text remark
varchar create_by
varchar update_by
int bpm_status
varchar process_instance_id
int valid
timestamp created_at
timestamp updated_at
}
APP_KILL_RECORD {
timestamp ts
varchar data_key PK
varchar mac
varchar cpu_id
int frequency
timestamp create_time
int black_list_id FK
}
BLACKLISTED ||--o{ APP_KILL_RECORD : contains

图表来源

字段详细说明

核心标识字段

  • id: 主键,自增设计,确保每条黑名单记录的唯一性
  • packageName: 唯一索引,作为应用的唯一标识符

业务状态字段

  • status: 控制黑名单的启用/禁用状态,默认启用
  • type: 黑名单类型,支持应用卸载和应用杀死两种模式
  • valid: 生效状态管理,支持草稿、生效、移除标记等状态

版本控制字段

  • version: 版本号,用于并发控制和审计追踪
  • bpmStatus: 工作流状态,支持审批流程集成

审计字段

  • createBy/updateBy: 操作人员追踪
  • created_at/updated_at: 时间戳自动维护

章节来源

数据类型设计原则

数值类型选择

  • 使用BIGINT存储主键,支持大规模数据量
  • INT类型用于状态和类型字段,占用空间小且语义明确
  • 时序数据使用TIMESTAMP精确到毫秒级别

字符串类型设计

  • VARCHAR(255)满足大多数应用名称和包名需求
  • TEXT类型用于备注说明,支持长文本存储
  • 主键组合使用VARCHAR(1000),确保足够的字符空间

约束设计

  • 主键约束确保数据唯一性
  • 唯一约束保证应用包名的唯一性
  • 外键约束关联时序数据表

章节来源

业务流程分析

Mermaid Diagram Code:

flowchart TD
Start([黑名单创建]) --> Validate[验证应用包名唯一性]
Validate --> CheckType{检查黑名单类型}
CheckType --> |应用卸载| InstallRule[应用安装规则]
CheckType --> |应用杀死| KillRule[应用杀死规则]
InstallRule --> SetStatus[设置状态为启用]
KillRule --> SetStatus
SetStatus --> SaveConfig[保存配置]
SaveConfig --> CreateStable[创建时序表]
CreateStable --> End([完成])
SaveConfig -.-> Audit[Audit Trail]
Audit -.-> End

图表来源

依赖关系分析

组件间依赖关系

Mermaid Diagram Code:

graph LR
subgraph "黑名单模块内部"
A[AppBlacklistedDO]
B[BlacklistedTypeEnum]
C[AppKillRecordDO]
end
subgraph "外部依赖"
D[MyBatis-Plus]
E[TDengine驱动]
F[Lombok注解]
end
A --> D
A --> F
B --> F
C --> E
C --> F

图表来源

外部依赖分析

依赖项版本用途重要性
MyBatis-Plus最新版本ORM映射和数据库操作
Lombok最新版本简化Java代码
TDengine驱动兼容版本时序数据访问
Jackson最新版本JSON序列化

章节来源

性能考虑

查询优化策略

  1. 索引设计

    • 主键索引:id字段
    • 唯一索引:packageName字段
    • 状态索引:status字段用于快速筛选启用的黑名单
  2. 分页查询

    • 支持大数据量的分页查询
    • 优化WHERE条件的索引使用
  3. 缓存策略

    • 热点数据缓存
    • 配置信息缓存
    • 查询结果缓存

存储优化

  1. 时序数据分区

    • 按日期分区存储杀死记录
    • 支持历史数据清理
  2. 压缩策略

    • 时序数据压缩
    • 历史数据归档

故障排除指南

常见问题及解决方案

数据重复问题

问题描述: 应用包名重复导致插入失败 解决方案:

  • 检查packageName唯一性约束
  • 使用批量去重处理
  • 实施数据验证流程

性能问题

问题描述: 查询响应时间过长 解决方案:

  • 添加适当的索引
  • 优化查询条件
  • 实施分页查询

数据一致性问题

问题描述: 黑名单状态不同步 解决方案:

  • 实施事务处理
  • 添加数据校验机制
  • 实施补偿机制

章节来源

结论

黑名单主表结构设计充分考虑了业务需求、性能要求和扩展性。通过合理的字段设计、约束定义和索引策略,实现了黑名单管理的高效运作。系统采用双存储架构,结合MySQL的结构化数据管理和TDengine的时序数据优势,为黑名单功能提供了完整的解决方案。

未来可以考虑的改进方向:

  • 增加更多的状态类型支持
  • 实施更精细的权限控制
  • 优化大数据量下的查询性能
  • 增强审计和监控能力
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答