ADR-006 v2.0: Sidecar V2 architecture revision based on review feedback
Incorporated feedback from 4 reviewers: - 徐聪: AES key management, emergency channel, concurrency control, DDL indexes - 陆怀瑾: P0 phase, schedule buffer, deployment topology, V1 compat checklist - 严维序: SQLite backup, monitoring, cooldown persistence, port plan, rollback - 沈路明: queue design, health check, per-model RPM decision, key validation, dashboard panels Key additions: + Queue flow control design (FIFO + priority, capacity 500, REJECT overflow) + Provider health check (active probe + passive stats hybrid) + Per-model RPM decision (Provider-level V2, Model-level V3) + Key validation on add (test call with error feedback) + AES key management (SIDECAR_ENCRYPTION_KEY env var, backup SOP) + Emergency channel (10% RPM during full cooldown) + SQLite backup strategy (cron .backup, 7-day retention) + SQLite monitoring Prometheus metrics (db_size, wal_size, integrity) + Full DDL with indexes (ON CONFLICT, BEGIN IMMEDIATE patterns) + Dashboard panel list (5 panels: status, trends, history) + V1 compatibility checklist (13 items) + V1->V2 migration SOP with rollback plan + Deployment topology (systemd + Docker, port plan, firewall) + Log aggregation policy (logrotate: 10MB/30days) + Schedule revised: 71h/12days (added P0 + buffer) Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
erDiagram
|
||||
providers ||--o{ provider_usage_logs : has
|
||||
providers ||--o{ cooldown_events : triggers
|
||||
providers ||--o| provider_health : monitors
|
||||
|
||||
providers {
|
||||
string id PK
|
||||
string name
|
||||
string api_key
|
||||
string endpoint_url
|
||||
string model_prefix
|
||||
string pool
|
||||
string status
|
||||
string source
|
||||
int rpm_limit
|
||||
int tpm_limit
|
||||
float weight
|
||||
float cost_per_1k
|
||||
string cooldown_until
|
||||
string metadata
|
||||
}
|
||||
|
||||
provider_usage_logs {
|
||||
string id PK
|
||||
string provider_id FK
|
||||
string model
|
||||
int prompt_tokens
|
||||
int completion_tokens
|
||||
int total_tokens
|
||||
float cost
|
||||
int request_count
|
||||
int error_count
|
||||
int avg_latency_ms
|
||||
string hour_bucket
|
||||
}
|
||||
|
||||
cooldown_events {
|
||||
string id PK
|
||||
string provider_id FK
|
||||
int consecutive_count
|
||||
int cooldown_seconds
|
||||
string response_summary
|
||||
string started_at
|
||||
string ended_at
|
||||
}
|
||||
|
||||
provider_health {
|
||||
string provider_id PK
|
||||
string state
|
||||
int last_latency_ms
|
||||
int last_status_code
|
||||
float success_rate_5m
|
||||
int consecutive_failures
|
||||
}
|
||||
|
||||
daily_stats {
|
||||
string id PK
|
||||
string date
|
||||
string pool
|
||||
int total_requests
|
||||
int total_errors
|
||||
int total_tokens
|
||||
float total_cost
|
||||
int unique_providers
|
||||
}
|
||||
|
||||
system_config {
|
||||
string key PK
|
||||
string value
|
||||
string description
|
||||
}
|
||||
Reference in New Issue
Block a user