refactor: 抽离 AI pipeline 与调度共享能力逻辑

This commit is contained in:
fawney19
2026-04-10 01:46:14 +08:00
parent b901a6ffc7
commit 5014e2f5fd
255 changed files with 15057 additions and 3115 deletions

View File

@@ -6,4 +6,6 @@ mod scheduler_affinity;
pub(crate) use auth_api_key_last_used::AuthApiKeyLastUsedCache;
pub(crate) use auth_context::AuthContextCache;
pub(crate) use direct_plan_bypass::DirectPlanBypassCache;
pub(crate) use scheduler_affinity::{SchedulerAffinityCache, SchedulerAffinityTarget};
pub(crate) use scheduler_affinity::{
SchedulerAffinityCache, SchedulerAffinitySnapshotEntry, SchedulerAffinityTarget,
};

View File

@@ -1,6 +1,6 @@
use std::time::Duration;
use aether_cache::ExpiringMap;
use aether_cache::{ExpiringMap, ExpiringMapFreshEntry};
pub(crate) use aether_scheduler_core::SchedulerAffinityTarget;
#[derive(Debug, Default)]
@@ -8,6 +8,13 @@ pub(crate) struct SchedulerAffinityCache {
entries: ExpiringMap<String, SchedulerAffinityTarget>,
}
#[derive(Debug, Clone)]
pub(crate) struct SchedulerAffinitySnapshotEntry {
pub(crate) cache_key: String,
pub(crate) target: SchedulerAffinityTarget,
pub(crate) age: Duration,
}
impl SchedulerAffinityCache {
pub(crate) fn get_fresh(
&self,
@@ -31,4 +38,18 @@ impl SchedulerAffinityCache {
pub(crate) fn remove(&self, cache_key: &str) -> Option<SchedulerAffinityTarget> {
self.entries.remove(&cache_key.to_string())
}
pub(crate) fn fresh_entries(&self, ttl: Duration) -> Vec<SchedulerAffinitySnapshotEntry> {
self.entries
.snapshot_fresh(ttl)
.into_iter()
.map(
|ExpiringMapFreshEntry { key, value, age }| SchedulerAffinitySnapshotEntry {
cache_key: key,
target: value,
age,
},
)
.collect()
}
}