File size: 1,106 Bytes
a21c316 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | use serde::{Deserialize, Serialize};
/// 调度模式枚举
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub enum SchedulingMode {
/// 缓存优先 (Cache-first): 尽可能锁定同一账号,限流时优先等待,极大提升 Prompt Caching 命中率
CacheFirst,
/// 平衡模式 (Balance): 锁定同一账号,限流时立即切换到备选账号,兼顾成功率和性能
Balance,
/// 性能优先 (Performance-first): 纯轮询模式 (Round-robin),账号负载最均衡,但不利用缓存
PerformanceFirst,
}
impl Default for SchedulingMode {
fn default() -> Self {
Self::Balance
}
}
/// 粘性会话配置
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct StickySessionConfig {
/// 当前调度模式
pub mode: SchedulingMode,
/// 缓存优先模式下的最大等待时间 (秒)
pub max_wait_seconds: u64,
}
impl Default for StickySessionConfig {
fn default() -> Self {
Self {
mode: SchedulingMode::Balance,
max_wait_seconds: 60,
}
}
}
|