爱网站排行榜,网站建设 趋势,中国建设银行官网首页 网站,wordpress选择幻灯片模版没有用设计一个Go 定时任务调度系统的数据库表结构。这是一个完整的企业级设计方案#xff0c;包含任务管理、执行记录、调度节点、日志追踪等核心模块。 核心表结构设计 1. 任务表 (jobs) - 核心配置 sql 复制 CREATE TABLE jobs (id BIGINT UNSIGNED AUTO_I…设计一个Go 定时任务调度系统的数据库表结构。这是一个完整的企业级设计方案包含任务管理、执行记录、调度节点、日志追踪等核心模块。核心表结构设计1. 任务表 (jobs) - 核心配置sql复制CREATE TABLE jobs ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_key VARCHAR(64) NOT NULL COMMENT 业务唯一标识(如: order.auto_cancel), name VARCHAR(128) NOT NULL COMMENT 任务名称, description VARCHAR(500) DEFAULT NULL COMMENT 任务描述, -- 调度配置 cron_expr VARCHAR(64) NOT NULL COMMENT Cron表达式(如: 0 0 * * *), timezone VARCHAR(32) DEFAULT Asia/Shanghai COMMENT 执行时区, schedule_type TINYINT DEFAULT 1 COMMENT 调度类型:1-cron,2-固定间隔,3-一次性, interval_seconds INT DEFAULT NULL COMMENT 固定间隔秒数(schedule_type2), -- 执行配置 executor_type TINYINT DEFAULT 1 COMMENT 执行器类型:1-http,2-shell,3-gRPC,4-函数, executor_config JSON NOT NULL COMMENT 执行器配置(JSON格式), timeout_seconds INT DEFAULT 300 COMMENT 执行超时时间(秒), retry_times TINYINT DEFAULT 3 COMMENT 失败重试次数, retry_interval INT DEFAULT 60 COMMENT 重试间隔(秒), -- 路由策略 routing_policy TINYINT DEFAULT 1 COMMENT 路由策略:1-随机,2-轮询,3-一致性hash,4-指定节点, target_nodes JSON DEFAULT NULL COMMENT 指定节点ID列表, -- 状态控制 status TINYINT DEFAULT 0 COMMENT 状态:0-停用,1-启用,2-暂停, start_time DATETIME DEFAULT NULL COMMENT 生效开始时间, end_time DATETIME DEFAULT NULL COMMENT 生效结束时间, -- 告警配置 alarm_config JSON DEFAULT NULL COMMENT 告警配置: 超时/失败/成功通知, -- 统计字段 total_runs INT DEFAULT 0 COMMENT 总执行次数, success_runs INT DEFAULT 0 COMMENT 成功次数, fail_runs INT DEFAULT 0 COMMENT 失败次数, last_run_time DATETIME DEFAULT NULL COMMENT 最后执行时间, last_run_result TINYINT DEFAULT NULL COMMENT 最后执行结果:0-失败,1-成功, -- 审计字段 created_by VARCHAR(64) NOT NULL COMMENT 创建人, updated_by VARCHAR(64) NOT NULL COMMENT 更新人, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted_at DATETIME DEFAULT NULL COMMENT 软删除, UNIQUE KEY uk_job_key (job_key), INDEX idx_status (status), INDEX idx_schedule_type (schedule_type), INDEX idx_deleted_at (deleted_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT定时任务配置表;2. 任务执行记录表 (job_logs) - 执行历史sql复制CREATE TABLE job_logs ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_id BIGINT UNSIGNED NOT NULL COMMENT 任务ID, job_key VARCHAR(64) NOT NULL COMMENT 任务标识, -- 执行信息 trigger_type TINYINT DEFAULT 1 COMMENT 触发方式:1-自动调度,2-手动触发,3-失败重试, run_id VARCHAR(64) NOT NULL COMMENT 本次执行唯一ID(雪花ID), execute_node VARCHAR(64) NOT NULL COMMENT 执行节点ID, -- 调度时间 schedule_time DATETIME(3) NOT NULL COMMENT 计划执行时间(毫秒精度), actual_start DATETIME(3) DEFAULT NULL COMMENT 实际开始时间, actual_end DATETIME(3) DEFAULT NULL COMMENT 实际结束时间, duration_ms INT DEFAULT NULL COMMENT 执行耗时(毫秒), -- 执行结果 status TINYINT DEFAULT 0 COMMENT 状态:0-等待,1-运行中,2-成功,3-失败,4-超时,5-取消, exit_code INT DEFAULT NULL COMMENT 退出码, result_data TEXT DEFAULT NULL COMMENT 执行结果/返回值, error_msg TEXT DEFAULT NULL COMMENT 错误信息, -- 上下文 trace_id VARCHAR(64) DEFAULT NULL COMMENT 分布式追踪ID, input_params JSON DEFAULT NULL COMMENT 输入参数, output_logs LONGTEXT DEFAULT NULL COMMENT 执行日志输出, -- 重试信息 retry_count TINYINT DEFAULT 0 COMMENT 当前重试次数, parent_log_id BIGINT UNSIGNED DEFAULT NULL COMMENT 父执行记录ID(重试链), created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3), INDEX idx_job_id_schedule (job_id, schedule_time), INDEX idx_run_id (run_id), INDEX idx_trace_id (trace_id), INDEX idx_status_created (status, created_at), INDEX idx_execute_node (execute_node, created_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT任务执行记录表 PARTITION BY RANGE (TO_DAYS(created_at)) ( PARTITION p_current VALUES LESS THAN (TO_DAYS(2025-03-01)), PARTITION p_future VALUES LESS THAN MAXVALUE );3. 调度节点表 (scheduler_nodes) - 集群管理sql复制CREATE TABLE scheduler_nodes ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, node_id VARCHAR(64) NOT NULL COMMENT 节点唯一标识(机器指纹), node_name VARCHAR(128) NOT NULL COMMENT 节点名称, node_ip VARCHAR(32) NOT NULL COMMENT 节点IP, node_port INT NOT NULL COMMENT 服务端口号, -- 节点属性 node_role TINYINT DEFAULT 1 COMMENT 角色:1-worker,2-master,3-masterworker, node_group VARCHAR(64) DEFAULT default COMMENT 节点分组, labels JSON DEFAULT NULL COMMENT 标签(如: oslinux,zonebeijing), capabilities JSON DEFAULT NULL COMMENT 能力列表(如: [shell,http,docker]), -- 状态监控 status TINYINT DEFAULT 0 COMMENT 状态:0-离线,1-在线,2-忙碌,3-维护中, last_heartbeat DATETIME DEFAULT NULL COMMENT 最后心跳时间, cpu_usage DECIMAL(5,2) DEFAULT NULL COMMENT CPU使用率, memory_usage DECIMAL(5,2) DEFAULT NULL COMMENT 内存使用率, load_avg DECIMAL(5,2) DEFAULT NULL COMMENT 系统负载, running_jobs INT DEFAULT 0 COMMENT 当前运行任务数, -- 版本信息 version VARCHAR(32) DEFAULT NULL COMMENT 程序版本, start_time DATETIME DEFAULT NULL COMMENT 启动时间, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_node_id (node_id), INDEX idx_status_group (status, node_group), INDEX idx_heartbeat (last_heartbeat) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT调度节点表;4. 任务锁定表 (job_locks) - 分布式锁sql复制CREATE TABLE job_locks ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_id BIGINT UNSIGNED NOT NULL, run_id VARCHAR(64) NOT NULL COMMENT 执行ID, node_id VARCHAR(64) NOT NULL COMMENT 持有节点, lock_until DATETIME NOT NULL COMMENT 锁过期时间, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_job_id (job_id), INDEX idx_lock_until (lock_until) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT任务分布式锁(防止重复执行);5. 任务依赖表 (job_dependencies) - DAG 支持sql复制CREATE TABLE job_dependencies ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_id BIGINT UNSIGNED NOT NULL COMMENT 当前任务, parent_job_id BIGINT UNSIGNED NOT NULL COMMENT 父任务, dependency_type TINYINT DEFAULT 1 COMMENT 依赖类型:1-强依赖(父失败则跳过),2-弱依赖(仅等待), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_job_parent (job_id, parent_job_id), INDEX idx_parent_job (parent_job_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT任务依赖关系表;6. 告警记录表 (job_alarms) - 通知历史sql复制CREATE TABLE job_alarms ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_id BIGINT UNSIGNED NOT NULL, log_id BIGINT UNSIGNED DEFAULT NULL COMMENT 关联执行记录, alarm_type TINYINT NOT NULL COMMENT 告警类型:1-失败,2-超时,3-成功,4-节点离线, alarm_level TINYINT DEFAULT 1 COMMENT 级别:1-警告,2-严重,3-紧急, notify_channels JSON NOT NULL COMMENT 通知渠道: [email,sms,webhook], notify_targets JSON NOT NULL COMMENT 通知对象, notify_content TEXT NOT NULL COMMENT 通知内容, status TINYINT DEFAULT 0 COMMENT 状态:0-待发送,1-已发送,2-发送失败, sent_at DATETIME DEFAULT NULL, error_info VARCHAR(500) DEFAULT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_job_id_created (job_id, created_at), INDEX idx_status (status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT告警通知记录;7. 任务版本表 (job_versions) - 配置变更历史sql复制CREATE TABLE job_versions ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, job_id BIGINT UNSIGNED NOT NULL, version INT NOT NULL COMMENT 版本号, -- 变更内容 change_type TINYINT NOT NULL COMMENT 变更类型:1-创建,2-修改,3-启用,4-停用,5-删除, change_data JSON NOT NULL COMMENT 变更内容快照, change_reason VARCHAR(500) DEFAULT NULL COMMENT 变更原因, created_by VARCHAR(64) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_job_version (job_id, version), INDEX idx_created_at (created_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT任务配置版本历史;实体关系图 (ERD)复制┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ jobs │ │ job_logs │ │ scheduler_nodes │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ PK id │◄──────┤ FK job_id │ │ PK id │ │ job_key │ │ run_id │ │ node_id │ │ cron_expr │ │ execute_node │──────►│ node_ip │ │ executor_... │ │ status │ │ status │ │ status │ │ duration_ms │ │ last_heart...│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ job_dependencies│ │ job_alarms │ ├─────────────────┤ ├─────────────────┤ │ PK id │ │ PK id │ │ FK job_id │ │ FK job_id │ │ FK parent_job_id│ │ FK log_id │ │ dependency...│ │ alarm_type │ └─────────────────┘ └─────────────────┘ ┌─────────────────┐ ┌─────────────────┐ │ job_locks │ │ job_versions │ ├─────────────────┤ ├─────────────────┤ │ PK id │ │ PK id │ │ FK job_id │ │ FK job_id │ │ run_id │ │ version │ │ node_id │ │ change_data │ │ lock_until │ │ created_by │ └─────────────────┘ └─────────────────┘关键设计要点表格复制设计点说明雪花IDrun_id使用雪花算法支持分布式环境唯一标识分表分区job_logs按时间分区历史数据自动归档乐观锁job_locks实现分布式锁防止集群重复调度软删除所有表支持deleted_at软删除便于审计JSON字段灵活存储配置避免频繁 DDL毫秒精度时间字段使用DATETIME(3)支持毫秒级追踪需要我补充Go 结构体定义、DAO 层代码或者针对PostgreSQL/MongoDB的适配版本吗