~/VibeHandbook
免費 PDF

13 · 02

幾個行話術語,破譯一下

  • 冷啟動(Cold start)——當代碼有一段時間沒執行過時,平臺必須把它喚醒。那第一個請求會更慢(從幾分之一秒到幾秒)。邊緣函式幾乎沒有這個問題;無伺服器函式有時有;常駐執行的容器和 則沒有。對大多數應用來說它是看不見的;但對一個要求利落的結賬流程來說,它可能很要緊。
  • 擴充套件(Scaling)——在處理更多使用者時不至於崩潰。自動擴充套件意味著平臺替你增加容量。手動擴充套件意味著你點選按鈕,否則它就在負載下直接掛掉。"縮減到零(scales to zero)"是你會經常看到的一個相關說法:當沒人用你的應用時,它不花錢。
  • 狀態(State)——需要持續保留的資料(一個數據庫、上傳的檔案、一個使用者會話)。靜態層和無伺服器層通常是"無狀態的"——它們在請求之間忘記一切——所以狀態存放在一個獨立的資料庫或儲存服務裡。這就是為什麼幾乎每個真實應用都是"你的託管加上某處的一個數據庫",而不是一個魔法盒子。
  • 區域(Region)——你的程式碼和資料在物理上所處的世界的哪個部分。它影響速度(越近越快),有時還影響法律(某些資料必須留在特定國家)。對第一個專案,選離你使用者最近的區域,然後繼續往前走。

下面是一個請求所走過的完整旅程,以及每一塊各自待在哪裡。瀏覽器與就近的邊緣對話,邊緣交付快取的檔案或喚醒你的程式碼,而程式碼在需要記住什麼時就伸手去找資料庫:

   ┌─────────┐      ┌──────────────┐      ┌──────────────┐      ┌──────────┐
   │ BROWSER │ ───▶ │  EDGE / CDN  │ ───▶ │ SERVER CODE  │ ───▶ │ DATABASE │
   │  使用者   │      │   靠近使用者   │      │  函式/盒子   │      │   狀態   │
   └─────────┘      └──────────────┘      └──────────────┘      └──────────┘
        ▲                  │                      │                   │
        │   快取命中       │     無狀態           │   記住            │
        └──────────────────┘   (請求之間          │   資料            │
            快速響應             遺忘)    ◀───────┘ ◀─────────────────┘

想離線閱讀?

免費下載整本書的 PDF 或 EPUB。