- 迁移 000251~000254:运营商账户调度参数、请求检查场景(预置 8 个)、卡轮询失败告警表,以及调度模式、步骤、退避、告警等受控系统配置(默认 legacy,行为不变);并发配置表注释标记废弃 - 受控系统配置注册与 JSON 结构校验:步骤只能是 4 种检查类型且不重复、退避序列递增 - yaml 增加 NSQ 地址、msg_timeout、租约、续期间隔、分发间隔、默认执行上限与 max_in_flight;引入 go-nsq - 测试环境 docker-compose 增加 nsqlookupd 与 nsqd,Worker 注入 NSQ 地址 - 账户队列 Redis 结构与 Lua:领取(执行上限、优先占比、按限流组剩余 QPS 估算)、抢执行权、续期、收尾、请求检查(合并、冷却、执行中打优先标记)、移出、发布失败释放
43 lines
3.1 KiB
SQL
43 lines
3.1 KiB
SQL
-- 运营商账户调度参数(add-carrier-polling-scheduler)。
|
||
-- 背景:新调度按运营商账户领取与执行卡任务,每个账户的执行上限、每进程并发、优先占比需要可单独配置。
|
||
--
|
||
-- 设计选择:
|
||
-- 1. carrier_id 唯一,一个账户一行;未配置的账户没有记录、使用 yaml 全局默认,不改 tb_carrier。
|
||
-- 2. 各参数可空,空表示该项使用全局默认。
|
||
-- 3. stop_resume_* 与 sr_inflight_limit 供停复机指令队列(add-stop-resume-command-queue)使用,本次只建列。
|
||
-- 4. 不使用数据库外键(ENG-MODEL-001);软删除,后台维护。
|
||
|
||
CREATE TABLE tb_carrier_polling_param (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
carrier_id BIGINT NOT NULL,
|
||
inflight_limit INTEGER,
|
||
card_max_in_flight INTEGER,
|
||
stop_resume_max_in_flight INTEGER,
|
||
sr_inflight_limit INTEGER,
|
||
priority_max_ratio NUMERIC(4, 3),
|
||
stop_resume_min_interval INTEGER,
|
||
stop_resume_confirm_delay INTEGER,
|
||
creator BIGINT NOT NULL DEFAULT 0,
|
||
updater BIGINT NOT NULL DEFAULT 0,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
deleted_at TIMESTAMPTZ,
|
||
CONSTRAINT ck_carrier_polling_param_positive CHECK (
|
||
(inflight_limit IS NULL OR inflight_limit > 0) AND (card_max_in_flight IS NULL OR card_max_in_flight > 0)
|
||
AND (stop_resume_max_in_flight IS NULL OR stop_resume_max_in_flight > 0) AND (sr_inflight_limit IS NULL OR sr_inflight_limit > 0)
|
||
AND (stop_resume_min_interval IS NULL OR stop_resume_min_interval > 0) AND (stop_resume_confirm_delay IS NULL OR stop_resume_confirm_delay > 0)),
|
||
CONSTRAINT ck_carrier_polling_param_ratio CHECK (priority_max_ratio IS NULL OR (priority_max_ratio > 0 AND priority_max_ratio <= 1))
|
||
);
|
||
|
||
CREATE UNIQUE INDEX uk_carrier_polling_param_carrier ON tb_carrier_polling_param (carrier_id) WHERE deleted_at IS NULL;
|
||
|
||
COMMENT ON TABLE tb_carrier_polling_param IS '运营商账户调度参数:未配置的账户使用全局默认';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.carrier_id IS '运营商账户ID';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.inflight_limit IS '该账户同时执行卡任务的上限(跨 Worker 实例)';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.card_max_in_flight IS '每个 Worker 进程消费该账户卡任务 topic 的 max_in_flight';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_max_in_flight IS '每个 Worker 进程消费该账户停复机 topic 的 max_in_flight';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.sr_inflight_limit IS '该账户同时执行停复机指令的上限';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.priority_max_ratio IS '卡任务每轮领取中优先队列的最大占比(0~1),空表示不限';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_min_interval IS '单卡两次停复机网关调用的最小间隔(秒)';
|
||
COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_confirm_delay IS '停复机结果未知后查卡状态确认的延迟(秒)';
|