新聞

Deno在GitHub開源分散式執行環境celld,讓開發者可在自行架設的伺服器上執行落在celld相容範圍內的Cloudflare Workers與Durable Objects應用程式。celld試圖把原本只能在Cloudflare平臺使用的有狀態運算架構帶到自有環境,提供企業與開發者額外部署選擇。

Durable Objects是Cloudflare提供的有狀態運算技術,可將聊天室、文件、使用者帳號或AI代理等物件,分別交給獨立的執行單元管理。每個執行單元擁有自己的持久化儲存空間,讓相關請求與資料集中處理,可降低多個請求同時修改資料而產生衝突的風險。

celld續用該設計,讓企業或開發者可在自有設備上運作Durable Objects。在celld中,每個執行單元使用獨立的SQLite資料庫,每臺celld伺服器也內建V8 JavaScript執行引擎,負責執行依Wrangler專案格式建置的程式,叢集內所有伺服器則共用同一個S3相容儲存空間。

該儲存空間除了保存SQLite資料副本,也會保存各單元的擁有權紀錄。伺服器接手工作前,必須透過物件儲存的比較交換(compare-and-swap)機制取得擁有權租約,確保同一時間只有一臺伺服器可處理該單元,避免兩臺伺服器同時修改同一份資料。當原有伺服器故障、重新啟動或移轉工作時,新伺服器可從儲存空間還原資料並繼續執行。

celld預設會等到資料完成持久化複寫至物件儲存後,才送出HTTP回應、對外送出的WebSocket訊息或廣播。官方說明,只要應用程式已向使用者確認寫入成功,即使執行中的伺服器隨後故障,已確認的資料仍可從物件儲存還原。不過,官方目前提出的依據仍是專案本身的設計與測試結果。

celld目前仍處於Alpha早期測試階段,一個叢集只能執行一套應用程式,也未提供多租戶排程、使用者帳號服務或代管的公開網路入口。節點間請求具備HMAC驗證、內容簽章、請求時效檢查與防重播機制,但通訊不含TLS加密。官方提醒使用者應部署在可信任的私有網路,或搭配WireGuard、Tailscale等加密網路使用。存取S3相容物件儲存的憑證可控制整個叢集,須以系統管理員權限保護。