Cloudflare宣布在其無伺服器運算服務Workers,加入關聯式資料庫的支援,來完善Cloudflare所提供的儲存解決方案。因此用戶現在也可以將應用程式搬遷到Workers上,並且處理儲存於包括Postgres和MySQL關聯式資料庫中的資料。

過去Cloudflare已經提供多種儲存解決方案,包括Workers KV、R2和Durable Objects,另外,Cloudflare也和Fauna、MongoDB和Prisma等第三方儲存解決方案合作,供用戶使用全球可大規模擴展的儲存服務,但官方提到,儲存解決方案還缺一大塊拼圖,便是關聯式資料庫。

而之所以Cloudflare遲遲尚未提供關聯式資料庫支援,官方解釋,無伺服器資料庫連接不是一件簡單的工作,並非簡單地傳遞字串給資料庫驅動程式就能完成,有許多障礙需要克服。Workers存在限制,並無法簡單地連接到資料庫,應用程式與資料庫的連接通常需要TCP連接,因為兩者間的連結被假設為長期連接,但是Workers Runtime並不支援TCP連接,因此只能支援基於HTTP的資料庫和代理。

光是建立連接也還不夠,開發人員使用資料庫客戶端函式庫,來簡化查詢提交,還有管理回應的過程,由於Workers Runtime並不完全相容Node.js,因此Workers要支援關聯式資料庫,Cloudflare還要推出自己的資料庫函式庫,或是找一個未使用不受支援函式庫的資料庫。另外,考量資料庫的敏感性,通常需要使用外部函式庫,來共享應用程式伺服器和資料庫間的連接,因為建立這些連接的成本往往很高。

Cloudflare現在一一克服了這些問題,首先Cloudflare利用現有的基礎設施,創建一個由Cloudflare到用戶私人網路基礎設施的安全通道,並且利用WebSockets,支援代理HTTP成TCP,官方解釋他們的做法,透過提供與現有函式庫相容的Socket介面,並將讀寫操作重新導向Websocket。

Cloudflare提到,這個方法快速且安全,但缺點在於他們無法控制最終連接的目的地,雖然該問題不難解決,但是在這之前,Cloudflare還需要改進延遲以及效能上的問題。Cloudflare也創建了一個墊片層,調整熱門Runtime中的Socket API,使其能利用WebSocket直接連接到資料庫,如此Cloudflare便能夠按照原樣綑綁程式碼,不需要額外分叉或是以其他方式大改資料庫函式庫。

目前這項工作才剛開始,目的是要讓用戶能在建構新的應用程式,或是將原有應用程式搬遷到Workers的時候,具有處理關聯式資料庫資料的能力,接下來還會進行一連串改進。官方提到,他們著手更新Runtime原生支援TCP,以更好地連接資料庫,而且也能夠擴展Workers Runtime更廣泛地處理資料庫基礎設施。

Cloudflare會利用當前建構代理HTTP到TCP服務,並將其以連接池服務的方式提供,並代表用戶管理資料庫的連接,而且Cloudflare也要使用自家網路快取資料的能力,讓用戶低延遲存取全球資料。

熱門新聞

Advertisement