O28 · Design a Feature-Flag Platform O28 · 设计特性开关平台
Verified source经核实出处
Classic SD question adapted at OpenAI onsites (一亩三分地, 2025). Similar to LaunchDarkly / Statsig. Credibility B.
Architecture架构
flowchart LR UI[Dashboard] --> CTL[Config Service] CTL --> PUB[(Config Pub/Sub)] PUB --> CDN[Edge CDN / SSE] CDN --> SDK[Client SDK] SDK --> APP[App process] APP --> EVT[Event Pipeline] EVT --> WH[(Warehouse)] WH --> AB[A/B analysis]
Key decisions关键决策
- **SDK evaluates locally**: full ruleset pushed to client; evaluation zero-RTT; server only collects events.**SDK 本地求值**:完整规则推送到端;判断 zero-RTT;服务端只收集事件。
- **Deterministic hashing**: bucket = hash(user_id + flag_key) % 100.**确定性哈希**:bucket = hash(user_id + flag_key) % 100。
- **Sticky segments** + exclude-list for emergencies.**粘性分段** + 紧急时 exclude-list。
- **Change delivery SLA**: flag flip reaches 99% clients within 10 s.**变更 SLA**:10 s 内送达 99% 客户端。
Follow-ups追问
- Avoid flag explosion? TTL + archive workflow.避免 flag 爆炸?TTL + 归档流程。
- Multi-region consistency? eventually consistent; clients tolerate 10s skew.多区一致?最终一致,客户端容忍 10 s 偏差。