<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cache on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/cache/</link><description>Recent content in Cache on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 08 Jun 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/cache/feed.xml" rel="self" type="application/rss+xml"/><item><title>FDE 面試準備指南（四）：System Design 實戰</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part4-system-design-zh/</link><pubDate>Sat, 30 May 2026 11:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part4-system-design-zh/</guid><description>System Design 是 FDE 面試最能展現工程深度的地方。
面試官不是要你「寫出可以跑的程式碼」，
他想看的是：你在有限資訊下，怎麼做設計決策、怎麼說清楚 trade-off。
面試情境 面試官：「請你設計一個供企業內部使用的 AI 知識庫問答系統，員工可以用自然語言查詢公司政策、產品說明和技術文件。第二題：設計一個 AI Copilot，讓員工用自然語言查詢公司內部數據，例如『今年 Q3 的營收比 Q2 成長了多少？』」
一、System Design 面試的本質 面試官考系統設計，不是要標準答案，是要看三件事：
考點 1：釐清問題的習慣 你有沒有在設計前先問問題？ → 不假設，先問。沒有釐清需求就開始畫圖是大扣分。 考點 2：Trade-off 思維 你說的不是「最好的方案」，而是： 「在這個場景下，我選 X 而不是 Y，因為...」 考點 3：生產環境的現實感 Auth、RBAC、Scale、Cost、Failure Mode—— 有沒有考慮到，是高手和普通人的分水嶺。 二、第一題：企業知識庫 Chatbot 步驟一：釐清需求（你要主動問） 你應該問的問題： 需求面： ├── 同時使用的用戶數量級？（100 人 vs 10 萬人，架構差很多） ├── 文件量多大？（1GB vs 1TB） ├── 回答需要引用文件來源嗎？ └── Latency 要求？（秒級 vs 毫秒級） 安全面（這是 FDE 常被忽略的）： ├── 不同部門能看的文件不同嗎？→ 決定要不要 RBAC ├── 有合規要求嗎？（GDPR、SOC 2） └── 資料能放在公有雲嗎？ 這些問題決定你的架構複雜度。 先問，再設計。 步驟二：完整系統架構 ┌─────────────────────────────────────────────────────────────┐ │ 用戶層 │ │ Browser / Slack Bot / Mobile App │ └───────────────────────────┬─────────────────────────────────┘ │ HTTPS ┌───────────────────────────▼─────────────────────────────────┐ │ API Gateway 層 │ │ ├── SSO Token 驗證（Google Workspace / Okta） │ │ ├── Rate Limiting（防止濫用） │ │ └── 請求日誌（Audit Log 起點） │ └───────────────────────────┬─────────────────────────────────┘ │ 已驗證的用戶 context ┌───────────────────────────▼─────────────────────────────────┐ │ Chatbot Service 層 │ │ │ │ ┌────────────────────┐ ┌─────────────────────────────┐ │ │ │ Query Processor │ │ RBAC Module │ │ │ │ ├── 意圖分類 │ │ 「這個用戶能看哪些文件？」 │ │ │ │ └── Query Rewrite │ │ 在查詢前過濾，不是查完再過濾 │ │ │ └────────────────────┘ └─────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ RAG Engine │ │ │ │ Query → Embedding → [Vector DB + RBAC Filter] │ │ │ │ → Reranker → Context Injection → LLM │ │ │ └──────────────────────────────────────────────────────┘ │ └───────────────────────────┬─────────────────────────────────┘ │ ┌───────────────┬───────────▼──────────┬──────────────────────┐ │ Cache Layer │ Response Generator │ Logging &amp;amp; Monitoring│ │ （相同問題） │ （加入引用來源） │ （審計 + 成本追蹤） │ └───────────────┴───────────────────────┴──────────────────────┘ 設計決策一：Authentication 的選型 選項比較： API Key JWT + SSO ──────────────────────────────────────────────────────── 適合場景 機器對機器 人類用戶登入 身分追蹤 無（共用 key） 有（每個 token 帶用戶身分） RBAC 支援 無（要額外設計） 原生（token payload 帶角色） Token 輪換 麻煩 自動（SSO refresh） 企業整合 困難 直接接 Google Workspace / Okta 結論：企業知識庫選 JWT + SSO token payload 帶 user_id、department、roles， 後面所有服務直接讀，不需要每次去查資料庫 面試官最想聽到的一句話：</description></item><item><title>FDE 面試準備指南（十五）：RKK 實戰——AI Agent 規模化與 Cache 策略</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part15-scale-cache-zh/</link><pubDate>Wed, 03 Jun 2026 14:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part15-scale-cache-zh/</guid><description>把 Agent 從 1 個用戶擴展到 10 萬個用戶，
傳統 Web 的直覺在這裡會讓你踩坑。
LLM 系統的瓶頸不在 CPU，而在 token 計算成本 和 推理延遲。
一、核心問題：LLM 系統的規模化為什麼不一樣 傳統 Web 服務的規模化直覺：
流量增加 → 多加幾台 server → 問題解決 成本模型：主要是 infra 成本，基本線性 LLM 系統的規模化現實：
流量增加 → 每個請求都要花錢叫 LLM API 成本模型：token 按量計費，和傳統 infra 的成本結構完全不同 10K req/day × avg 3,000 tokens × $0.002/1K tokens = $60/day = $1,800/month 100K req/day = $18,000/month 1M req/day = $180,000/month ← 沒有 cache，就是這個數字 三個讓 LLM 系統難以規模化的特性：</description></item><item><title>FDE 面試準備指南（三十九）：RKK 實戰——從 10,000 到百萬用戶：AI 系統的橫向擴展架構設計</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part39-scalability-zh/</link><pubDate>Mon, 08 Jun 2026 09:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part39-scalability-zh/</guid><description>10,000 個內部員工用，一切都很順。
百萬外部用戶第一天上線，系統在 30 分鐘內崩潰。
「加更多機器」不是答案——
正確的問題是：哪些地方讓你根本無法加機器？
面試情境 面試官：「你幫一家金融公司做了內部員工 AI 助手，10,000 個內部用戶，系統很穩定。現在 CEO 決定把這個產品開放給外部客戶，目標是百萬 MAU（月活躍用戶）。你說需要重新設計架構。從哪裡開始？你會做哪些改動？為什麼？」
一、為什麼 10K → 1M 不只是「加機器」 10K 內部用戶的隱性假設（這些假設在 1M 時全部失效）： 用戶行為： ├── 行為模式可預測（9-18 點工作時間，流量曲線平滑） ├── 用量相對均勻（員工配額相似，不會有人瘋狂濫用） └── 系統問題可以容忍（內部用戶有耐心，可以接受偶爾慢） 系統設計： ├── Session State 在記憶體（少數實例，重啟少） ├── 認證：單一 LDAP/SSO（一種身份系統就夠） ├── 沒有速率限制（員工不會惡意攻擊自家系統） └── SLA：P95 &amp;lt; 10s 內部用戶接受 1M 外部用戶：每一個假設都被打破 假設失效 真實挑戰 系統症狀 ────────────────────────────────────────────────────────────── 行為可預測 病毒式傳播：1 小時內 100x 流量 Auto-Scale 來不及 → 503 用量均勻 惡意用戶濫用、失控的客戶端 Bug 一個用戶拖垮整個平台 Session 在記憶體 Scale-Out 後新實例找不到 Session 對話斷掉，用戶流失 無速率限制 機器人、爬蟲、Bug 迴圈呼叫 LLM 配額耗盡 → 全平台崩潰 SLA 寬鬆 外部客戶不等待，直接離開 用戶留存率崩潰 成本不計較 1M × 50 queries × $0.</description></item></channel></rss>