供应商管理
批量操作
批量操作
批量操作功能让你能够同时对多个供应商执行相同的操作,大幅提升管理效率。当你需要对大量供应商进行统一的配置调整、状态变更或故障恢复时,批量操作比逐个编辑节省大量时间。
批量操作仅对管理员开放。所有批量操作都有 500 个供应商的数量上限,防止误操作影响过多资源。
支持的批量操作
系统支持以下三种批量操作:
| 操作类型 | 功能说明 | 使用场景 |
|---|---|---|
| 批量更新 | 同时修改多个供应商的字段值 | 统一调整优先级、权重、启用状态等 |
| 批量删除 | 同时删除多个供应商 | 清理废弃或测试用的供应商 |
| 批量重置熔断器 | 同时重置多个供应商的熔断状态 | 故障恢复后批量恢复服务 |
进入批量操作模式
启用批量选择
- 进入 设置 > 供应商管理 页面
- 点击页面顶部的「批量编辑」按钮
- 列表进入多选模式,每个供应商卡片左侧显示复选框
选择供应商
进入批量模式后,你可以通过以下方式选择供应商:
单选:点击单个供应商卡片的复选框
全选:点击工具栏的「全选」复选框,选择当前筛选结果中的所有供应商
反选:点击「反选」按钮,选中当前未选中的供应商,取消已选中的供应商
选择供应商时会显示已选数量。如果已选数量超过 500,系统会提示超出限制,需要减少选择数量。
退出批量模式
点击工具栏的「退出」按钮或关闭底部的操作栏,即可退出批量选择模式。
批量更新
批量更新允许你同时修改多个供应商的配置字段。
可更新的字段
| 字段 | 类型 | 说明 |
|---|---|---|
| 启用状态 | 布尔值 | 启用或禁用供应商 |
| 优先级 | 整数 | 数值越小优先级越高 |
| 权重 | 整数(1-100) | 同优先级内的流量分配比例 |
| 成本倍数 | 小数 | 成本计算的调整系数 |
| 分组标签 | 字符串 | 供应商所属的分组标识 |
操作步骤
- 选择需要更新的供应商(1-500 个)
- 点击底部操作栏的「编辑」按钮
- 在弹出的对话框中,启用需要修改的字段开关
- 设置新的字段值
- 点击「下一步」查看变更预览
- 确认无误后点击「确认更新」
字段开关机制
批量更新对话框采用字段开关设计,只有启用的字段才会被更新:
☐ 启用状态 [开关按钮]
☑ 优先级 [数值输入: 5]
☐ 权重 [数值输入]
☑ 成本倍数 [数值输入: 1.2]
☐ 分组标签 [文本输入]
上例中,只有「优先级」和「成本倍数」会被更新,其他字段保持原值不变。
如果所有字段开关都未启用,系统会拒绝执行更新并提示「请指定要更新的字段」。
使用示例
场景一:批量禁用维护中的供应商
选择供应商:Provider A, Provider B, Provider C
启用字段:启用状态
设置值:禁用
结果:三个供应商全部禁用,不再参与请求调度
场景二:统一调整供应商优先级
选择供应商:所有生产环境供应商(10 个)
启用字段:优先级
设置值:1
结果:所有生产供应商优先级统一设为 1
场景三:标记供应商分组
选择供应商:所有测试环境供应商(5 个)
启用字段:分组标签
设置值:testing
结果:五个供应商都标记为 testing 分组
批量删除
批量删除用于同时移除多个不再需要的供应商。
删除特性
- 软删除:批量删除使用软删除机制,设置
deleted_at时间戳而非物理删除 - 数据保留:历史请求日志和统计数据继续保留,便于审计
- 状态清理:自动清理被删除供应商的熔断器状态和配置缓存
操作步骤
- 选择需要删除的供应商(1-500 个)
- 点击底部操作栏的「删除」按钮
- 在确认对话框中查看即将删除的供应商列表
- 输入确认提示中的文字进行二次确认
- 点击「确认删除」执行操作
批量删除操作不可逆。虽然数据被软删除保留,但供应商配置无法通过界面恢复。请谨慎操作。
删除后的影响
- 被删除的供应商立即从调度池中移除
- 活跃的会话不会受到影响,直到会话结束
- 相关的熔断器状态被清除
- 缓存被失效,所有实例同步更新
批量重置熔断器
当多个供应商因连续错误触发熔断后,你可以使用批量重置功能快速恢复服务。
熔断器状态说明
| 状态 | 说明 | 是否需要重置 |
|---|---|---|
| 已熔断(Open) | 供应商被暂时隔离,不接收请求 | 是 |
| 半开(Half-open) | 尝试有限请求验证恢复 | 是 |
| 正常(Closed) | 正常运行,接收请求 | 否 |
操作步骤
- 选择需要重置熔断器的供应商(1-500 个)
- 点击底部操作栏的「重置熔断器」按钮
- 在确认对话框中查看即将重置的供应商列表
- 点击「确认重置」执行操作
重置效果
批量重置熔断器会执行以下操作:
- 将熔断器状态设为「正常(Closed)」
- 清除失败计数器
- 重置失败时间戳
- 清除半开状态的成功计数
- 同步更新 Redis 中的状态(多实例环境)
手动重置熔断器需谨慎。如果供应商的根本问题未解决,重置后可能很快再次熔断。建议在确认供应商服务恢复正常后再执行重置。
自动排序优先级
除了手动批量更新,系统还提供自动排序功能,根据成本倍数智能调整供应商优先级。
功能说明
自动排序按照以下规则批量更新供应商优先级:
- 分组排序:按
group_tag将供应商分组 - 成本排序:在每个分组内,按
cost_multiplier从小到大排序 - 优先级分配:成本越低的供应商,优先级越高(数值越小)
使用场景
当你配置了多个成本不同的供应商时,自动排序可以:
- 让成本最低的供应商优先被选中
- 自动优化整体请求成本
- 避免手动逐个调整优先级的繁琐工作
操作步骤
- 在供应商管理页面点击「自动排序优先级」按钮
- 系统显示预览弹窗,展示:
- 按分组组织的供应商列表
- 每个供应商的当前优先级和新优先级
- 变更摘要(总共多少个供应商会变更)
- 确认预览结果无误后,点击「应用变更」
- 系统自动执行批量优先级更新
排序示例
假设有以下供应商配置:
| 供应商 | 分组 | 成本倍数 | 当前优先级 |
|---|---|---|---|
| Provider A | prod | 1.0 | 5 |
| Provider B | prod | 1.5 | 3 |
| Provider C | dev | 0.8 | 10 |
| Provider D | prod | 1.2 | 1 |
执行自动排序后:
| 供应商 | 分组 | 成本倍数 | 新优先级 |
|---|---|---|---|
| Provider A | prod | 1.0 | 1 |
| Provider D | prod | 1.2 | 2 |
| Provider B | prod | 1.5 | 3 |
| Provider C | dev | 0.8 | 1 |
注意:不同分组内的优先级是独立计算的,Provider C 在 dev 分组中优先级为 1,不影响 prod 分组内的排序。
限制与约束
数量限制
- 最大批量大小:单次操作最多 500 个供应商
- 最小批量大小:至少选择 1 个供应商
超出限制时,系统会返回错误提示:
单次批量操作最多支持 500 个供应商
权限要求
- 所有批量操作仅对管理员角色开放
- 非管理员用户调用批量操作接口会收到权限错误:
无权限执行此操作
数据一致性
- 批量更新使用数据库事务保证一致性
- 如果部分供应商在操作前已被删除,实际更新数量可能少于请求数量
- 操作结果会返回实际影响的供应商数量
缓存失效机制
批量操作完成后,系统会自动触发缓存失效,确保所有应用实例同步更新。
失效流程
批量操作执行
↓
数据库更新完成
↓
发布 Redis Pub/Sub 消息
↓
所有实例接收消息
↓
各实例清除本地缓存
失效范围
| 操作类型 | 缓存失效内容 |
|---|---|
| 批量更新 | 供应商列表缓存、单个供应商缓存 |
| 批量删除 | 供应商列表缓存、单个供应商缓存、熔断器状态 |
| 批量重置熔断器 | 仅内存状态,不涉及数据库缓存 |
降级处理
如果 Redis 不可用,缓存失效会降级为依赖 TTL 过期:
- 供应商列表缓存 TTL:30 秒
- 最坏情况下,变更可能在 30 秒后全局生效
最佳实践
1. 分批操作大量供应商
如果需要操作超过 500 个供应商,建议分批进行:
- 先选择前 500 个执行操作
- 等待操作完成并确认结果
- 再选择下一批继续操作
2. 先预览再确认
批量更新前,利用对话框的预览功能确认变更内容:
- 检查字段开关是否正确启用
- 验证数值输入是否符合预期
- 确认受影响的供应商列表
3. 谨慎使用批量删除
批量删除前建议:
- 先批量禁用供应商观察一段时间
- 确认无活跃会话依赖这些供应商
- 备份重要的供应商配置信息
4. 结合筛选使用
利用搜索和筛选功能快速定位需要批量操作的供应商:
- 按分组标签筛选后批量更新
- 按类型筛选后批量调整权重
- 搜索关键词后批量删除测试数据
5. 监控批量操作结果
关注批量操作的返回结果:
- 检查
updatedCount/deletedCount是否与预期一致 - 如果数量不一致,可能有部分供应商已被删除或不存在
- 查看系统日志了解详细执行情况
故障排查
问题:批量操作提示「无权限执行此操作」
原因:当前用户不是管理员角色
解决:联系系统管理员获取管理员权限
问题:实际更新数量少于选择的数量
原因:部分供应商在操作前已被其他管理员删除
解决:刷新页面查看最新供应商列表,重新选择
问题:批量更新后配置未生效
原因:缓存失效消息未到达所有实例
解决:
- 等待 30 秒让缓存自然过期
- 检查 Redis 连接状态
- 手动触发缓存刷新
问题:批量重置熔断器后供应商仍不可用
原因:供应商本身的问题未解决,再次触发熔断
解决:
- 检查供应商连接状态和 API Key 有效性
- 使用「测试连接」功能验证供应商健康
- 修复根本问题后再重置熔断器
