- 迁移 000251~000254:运营商账户调度参数、请求检查场景(预置 8 个)、卡轮询失败告警表,以及调度模式、步骤、退避、告警等受控系统配置(默认 legacy,行为不变);并发配置表注释标记废弃 - 受控系统配置注册与 JSON 结构校验:步骤只能是 4 种检查类型且不重复、退避序列递增 - yaml 增加 NSQ 地址、msg_timeout、租约、续期间隔、分发间隔、默认执行上限与 max_in_flight;引入 go-nsq - 测试环境 docker-compose 增加 nsqlookupd 与 nsqd,Worker 注入 NSQ 地址 - 账户队列 Redis 结构与 Lua:领取(执行上限、优先占比、按限流组剩余 QPS 估算)、抢执行权、续期、收尾、请求检查(合并、冷却、执行中打优先标记)、移出、发布失败释放
32 lines
3.9 KiB
SQL
32 lines
3.9 KiB
SQL
-- 按运营商账户调度的受控系统配置(add-carrier-polling-scheduler),module = polling。
|
||
-- 配置的权威定义(类型、取值范围、默认值、JSON 结构校验)在代码注册表中;本迁移只落库初始值。
|
||
-- 已存在同名 Key 时不覆盖(ON CONFLICT DO NOTHING),避免覆盖运营已修改的值。
|
||
--
|
||
-- 1. polling.scheduler.mode:legacy 旧分片调度(默认)/ carrier 按运营商账户调度;全局整体切换,不按账户灰度。
|
||
-- 2. polling.scheduler.step_order:卡任务步骤顺序,只能是 card_status / carddata / realname / package 且不重复。
|
||
-- 3. polling.scheduler.step_timeout_seconds:各检查类型单步超时(秒)。
|
||
-- 4. polling.scheduler.task_timeout_margin_seconds:卡任务总超时 = 各步骤超时之和 + 余量。
|
||
-- 5. polling.scheduler.skip_package_after_flow:同轮流量步骤已触发停复机评估时跳过套餐步骤。
|
||
-- 6. polling.failure.backoff_seconds:失败退避序列(秒,递增),可按检查类型覆盖 default;最长不超过该类型正常间隔。
|
||
-- 7. polling.failure.alert_fail_count:连续失败告警阈值,可按检查类型覆盖 default。
|
||
-- 8. polling.failure.alert_fail_duration_seconds:持续失败时长告警阈值(秒)。
|
||
-- 9. polling.failure.immediate_alert_categories:首次出现即告警的错误类别。
|
||
-- 10. polling.failure.account_alert_window_seconds / account_alert_threshold:账户级告警窗口与阈值。
|
||
-- 同时把 tb_polling_concurrency_config 表注释标记为废弃(新调度按账户执行上限与限流取代全局并发配置),不删表。
|
||
|
||
INSERT INTO tb_system_config (config_key, config_value, value_type, module, description, is_readonly, is_sensitive, creator, updater, created_at, updated_at) VALUES
|
||
('polling.scheduler.mode', 'legacy', 'string', 'polling', '卡轮询调度模式:legacy 旧分片调度,carrier 按运营商账户调度(整体切换)', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.scheduler.step_order', '["card_status","carddata","realname","package"]', 'json', 'polling', '卡任务步骤顺序', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.scheduler.step_timeout_seconds', '{"card_status":15,"carddata":15,"realname":15,"package":20}', 'json', 'polling', '各检查类型单步超时(秒)', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.scheduler.task_timeout_margin_seconds', '10', 'int', 'polling', '卡任务总超时余量(秒):总超时 = 各步骤超时之和 + 余量', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.scheduler.skip_package_after_flow', 'true', 'bool', 'polling', '同轮流量步骤已触发停复机评估时跳过套餐步骤', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.backoff_seconds', '{"default":[60,300,900,1800,3600]}', 'json', 'polling', '失败退避序列(秒,递增),可按检查类型覆盖 default', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.alert_fail_count', '{"default":5}', 'json', 'polling', '连续失败告警阈值,可按检查类型覆盖 default', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.alert_fail_duration_seconds', '21600', 'int', 'polling', '持续失败时长告警阈值(秒)', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.immediate_alert_categories', '["account_config"]', 'json', 'polling', '首次出现即告警的错误类别', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.account_alert_window_seconds', '600', 'int', 'polling', '账户级告警统计窗口(秒)', FALSE, FALSE, 0, 0, NOW(), NOW()),
|
||
('polling.failure.account_alert_threshold', '50', 'int', 'polling', '账户级告警阈值:窗口内同账户新增失败告警数', FALSE, FALSE, 0, 0, NOW(), NOW())
|
||
ON CONFLICT (config_key) DO NOTHING;
|
||
|
||
COMMENT ON TABLE tb_polling_concurrency_config IS '已废弃:按运营商账户调度后由账户执行上限与网关限流取代,仅旧分片调度使用';
|