Cloudflare釋出用於無伺服器服務Workers KV的邊緣儲存服務Durable Objects,使無伺服器應用程式能夠儲存狀態,客戶端也能夠協調溝通,讓開發者能夠用來開發聊天室、購物車或是遊戲伺服器等應用,以建立真正邊緣運作的分散應用程式。

Cloudflare所推出的無伺服器運算服務Workers,可在網路邊緣高效能執行程式碼,並且簡化部署和降低成本,不過,Workers的缺點,便是無法穩定地管理狀態,或是完全在邊緣上,讓多個客戶端相互即時協調,也就是說,用戶還是需要將部分應用程式,託管在其他平臺上。

而Cloudflare新推出的儲存服務Durable Objects,便是要來解決這個問題,除了提供無伺服器儲存與狀態解決方案,也提供一種多客戶端間協調的方法,作為補齊Workers堆疊的最後一部分,將可讓整個應用程式在邊緣上執行,不需要集中式伺服器。

Durable Objects的Object,指的是物件導向的物件,Durable Object是一個類別的實例,該類別的方法定義了公開介面,一個物件便是一個具有私有狀態的類別實例,而每個物件都擁有全域唯一辨識碼,該物件僅會存在一份,知道該物件ID的Worker,都能對該物件發送訊息。

不過,Durable Object的物件,與JavaScript的普通物件不同,Durable Object會持久狀態儲存在磁碟上,每個物件的持久狀態,都是該物件的私有狀態,官方提到,這代表存取儲存將會非常快速,且物件能夠在記憶體中,維持一致的狀態副本,並以零延遲的速度執行,在空閒時記憶體中的物件會被關閉,並且按需重新創建。

Durable Objects主要功能有兩個,儲存以及協調。每個物件都有持久的儲存空間,儲存會和物件在同一個位置,除了提供交易一致性之外,儲存速度也非常快,官方解釋,Durable Objects是將無伺服器的概念,應用到儲存中,他們把傳統大型資料庫,拆分成許多細小的邏輯單元,使得儲存能夠易於擴展,也減少維護負擔。

在過去,每個請求都會因為負載平衡,被隨機分配到一個Worker實例上,因此無法控制由特定實例接收客戶端的請求,因此也無法強制要求兩個客戶端,與同一個Worker進行通訊,所以客戶端也無法透過Workers進行協調,但是有了Durable Objects之後,相關的請求可以發送給同一物件,因此客戶端就能夠進行協調。

對傳統資料庫或是有狀態基礎設施來說,使用者通常需要考慮儲存的地理位置,以便將資料儲存在使用地區附近,但是在Durable Objects沒有這樣的問題,Cloudflare系統會根據需求,透明地自動搬移物件。官方提到,使用者可以使用Durable Objects,來滿足應用程式的儲存需求,以文件編輯器來說,每個文件就是一個物件,而對聊天應用程式來說,每個聊天對話就是一個物件,由於物件的成本開銷很小,因此可以創建數百萬,甚至是數十億個物件。

Cloudflare把Durable Objects視為低階分散式系統的低階原語,不過官方提到,目前Durable Objects還在封閉測試階段,也還不是完整的資料庫解決方案,每個物件只能看到自己的資料,要跨多個物件執行查詢或是交易,應用程式需要執行一些額外的工作,他們將會持續發展Durable Objects,完善其功能。


Advertisement

更多 iThome相關內容