當前位置: 華文問答 > 數碼

從技術上看,cloudflare比其他公司牛在那兒?

2015-04-26數碼

是在今天的 2024 開發者周上,Cloudflare 釋出了一系列令人激動的新特性,例如 Python Worker 以及 Workers AI,把套用開發與交付的便利性拔高到了一個全新的程度。與 Cloudflare 的 Serverless 開發體驗相比,傳統雲廠商號稱 Serverless 的各種產品都顯得滑稽可笑。

Cloudflare 更廣為人知的是它的慷慨免費套餐,一些中小型網站幾乎能以零成本執行在這裏。在 Cloudflare 的鮮明對比之下,天價出租 CPU 、 磁盤 、 頻寬 的公有雲廠商顯得面目可憎。Cloudflare 這樣的雲帶來的開發體驗,才真正配得上「雲」的稱號。在我看來, Cloudflare 應該主動出擊,與傳統公有雲廠商搶奪雲端運算的定義權。

利益相關:Cloudflare 沒給我錢,我倒是給 Cloudflare 付了錢。純粹是因為 Cloudflare 產品非常出色,極好地解決了我的需求,讓我非常樂意付點費支持一下,並告訴更多朋友有這項福利。與之相反的是,我付錢給傳統公有雲廠商之後的感受是這做的都是什麽玩意 —— 必須寫文章 狠狠地罵他們 ,才能緩解內心的精神損失。

Cloudflare 是什麽

Cloudflare是一家提供內容分發網絡(CDN)、互聯網安全性、抗DDoS(分布式拒絕服務)和分布式DNS服務的美國公司。全世界互聯網流量的 20% 由它服務。如果你掛著 VPN 存取一些網站,經常可以看到 Cloudflare 的抗 DDoS 驗證碼頁面和 Logo。他們提供:

  1. 內容分發網絡(CDN) :Cloudflare的CDN服務透過全球分布的數據中心緩存客戶網站的內容,加快網站載入速度並減少伺服器壓力。
  2. 網站安全性 :提供SSL加密、防止SQL註入和跨站指令碼攻擊的安全措施,增強網站的安全性。
  3. DDoS防護 :具備先進的DDoS防護功能,能夠抵禦各種規模的攻擊,保護網站不受幹擾。
  4. 智能路由 :使用Anycast網絡技術,能夠智能辨識數據傳輸的最佳路徑,減少延遲。
  5. 自動HTTPS重新導向 :自動將存取轉換為HTTPS,增強通訊的安全性。
  6. Workers平台 :提供Serverless架構,允許在Cloudflare的全球網絡上執行JavaScript或WASM(WebAssembly)程式碼,無需管理伺服器。

當然,Cloudflare 還有一些非常不錯的服務,例如托管網站的 Pages,物件儲存 R2,分布式數據庫D1 等,開發者體驗非常不錯。

Cloudflare 官網介紹 https://www.cloudflare.com/zh-cn/what-is-cloudflare/

Pages:簡單易用的網站托管

舉個例子,如果您要托管一個靜態網站。用 Cloudflare 有多簡單?首先在 GitHub 建立一個 Repo,把網站內容丟進去,然後在 Cloudflare 連結到你的 Git Repo ,分配一個子網域名稱,然後你的網站就自動部署到全世界的各個角落了。如果你要更新網站內容,只要 git push 到特定分支就足夠了。

如果你使用特定的 網站框架 ,甚至還可以直接線上從倉庫內容中構建:Blazor、Brunch、Docusaurus、Gatsby、Gridsome、Hexo、Hono、Hugo、Jekyll、Next.js、Nuxt、Pelican、Preact、Qwik、React、Remix、Solid、Sphinx、Svelte、Vite 3、Vue、VuePress、Zola、Angular、Astro、Elder.js、Eleventy、Ember、MkDocs。

我從完全沒接觸過 Cloudflare,到把 Pigsty 的網站搬運到 CF 上並完成部署,只用了一個小時左右。我不需要操心什麽伺服器,CI/CD / HTTPS 證書,安全高防抗 DDoS,Cloudflare 已經把一切都替我做好了 —— 更重要的是流量費全免,我唯一做的就是綁了個信用卡花了十幾塊錢買了個網域名稱,但實際上根本不需要什麽額外費用 —— 都已經包含在免費計劃中了。

更令我震驚的是,雖然存取速度慢了一些,但在中國大陸是可以直接存取 CF 上的網站的,甚至不需要備案!說來也滑稽,本土雲廠商雖然可以很快替你完成網站資源置備這件事,但耗時最久的步驟往往是卡在備案上。這一點確實算是 Cloudflare 的一個福利特性了。

Worker:極致的 Serverless 體驗

盡管你可以把許多業務邏輯放在前端在瀏覽器中用 Javascript 解決,但一個復雜的動態網站也是需要一些後端開發的。而 Cloudflare 也把這一點簡化到了極致 —— 你只需要編寫業務邏輯的 Javascript 函數就可以了 。當然,也可以使用 Typescript,現在更是支持 Python 了 —— 直接呼叫 AI 模型,難以想象後面會出現多少新的花活!

使用者編寫的這個函數會被部署在 Cloudflare 全世界 CDN 邊緣伺服器節點上,執行使用者定義的業務邏輯。你可以 幹各種各樣的事情 ,返回動態的HTML與JSON,自訂路由、重新導向、轉發、過濾、緩存、A/B測試,重寫請求,聚合請求,執行認證。當然,你也可以直接使用業務程式碼中呼叫物件儲存 R2 與 SQL 數據庫 D1,或者把請求轉發到你自己的數據中心伺服器上處理。

export interface Env { // If you set another name in wrangler.toml as the value for 'binding', // replace "DB" with the variable name you defined. DB: D1Database; } export default { async fetch(request: Request, env: Env) { const { pathname } = new URL(request.url); if (pathname === "/api/beverages") { // If you did not use `DB` as your binding name, change it here const { results } = await env.DB.prepare( "SELECT * FROM Customers WHERE CompanyName = ?" ) .bind("Bs Beverages") .all(); return Response.json(results); } return new Response( "Call /api/beverages to see everyone who works at Bs Beverages" ); }, };

在 Worker 中查詢 D1 ,簡單到就是呼叫個變量。

[[d1_databases]] binding = "DB" # available in your Worker on env.DB database_name = "prod-d1-tutorial" database_id = "<unique-ID-for-your-database>"

也不需要什麽配置,指定一下D1數據庫/R2物件儲存名稱就好了。

比起傳統雲上笨拙的開發部署體驗來所,CF worker 真正做到了讓開發者爽翻天的 Serverless 效果。開發者不需要操心什麽數據庫連線串,AccessPoint,AK/SK金鑰管理,用什麽數據庫驅動,怎麽管理本地日誌,怎麽搭建 CI/CD 流程這些繁瑣問題,最多在環境變量裏面指定一下儲存桶名稱這類簡單資訊就夠了。寫好 Worker 膠水程式碼實作業務邏輯,命令列一把梭就可以完成全球部署上線。

與之對應的是傳統公有雲廠商提供的各種所謂 Serverless 服務,比如 RDS Serverless,就像一個惡劣的笑話,單純是一種計費模式上的區別 —— 既不能 Scale to Zero,也沒什麽易用性上的改善 —— 你依然要在控制台去點點點建立一套 RDS,而不是像 Neon 這種真 Serverless 一樣用連線串連上去就能直接迅速拉起一個新例項。更重要的是,稍微有個幾十上百的QPS,相比包年包月的賬單就要爆炸上天了 —— 這種平庸的 「Serverless」 確實汙染了這個詞語的本意。

R2:吊打 S3 的物件儲存

Cloudflare R2 提供了物件儲存服務。與 AWS S3 相比,便宜了也許能有一個數量級 —— 我的意思是,盡管單純看儲存的價格 $ / GB·月,Cloudflare(0.015 $)價格與 S3 (0.023 $) 差距並不大,但 Cloudflare 的 R2 是免流量費的!

每月免費額度 Cloudflare R2 Amazon S3
儲存 10 GB / 月 5 GB / 月
寫請求 1 M / 月 2 K / 月
讀請求 10 M / 月 20 K / 月
數據傳輸 無限量! 100 GB
超出免費額度後的價格
儲存 ¥ 0.11 / GB ¥ 0.17 / GB
寫請求 ¥ 32.63 / 百萬請求 ¥ 36.25 / 百萬請求
讀請求 ¥ 2.61 / 百萬請求 ¥ 2.9 / 百萬請求
流量費 免費! ¥ 0.65 / GB
Cloudflare R2 定價 與 AWS S3 對比

舉個例子,我的網站,R2 在過去一個月內消耗了 300 GB 流量,按照本土雲 1GB 流量八毛錢左右的價格,需要支付 240 元,但我一分錢也沒付。而且,我還知道更極端的例子 —— 比如一個月消耗了 3TB 流量,也依然在免費套餐中……

最近30天消耗 305 GB流量

Cloudflare R2 是與 CDN 二合一的。在傳統的雲服務商中,你還需要操心額外的 CDN 配置,回源流量,CDN流量包,抗DDoS等等問題。但 Cloudflare 不需要,只要勾選配置啟用,你的 R2 Bucket 可以直接被全世界讀取,而最重要的是,而你根本不用擔心賬單被刷爆的問題 —— 我知道好幾個在傳統雲廠商上,因為攻擊把 CDN 流量刷爆,幾萬塊錢余額一夜耗幹欠費的案例。(包括我自己還親歷過一個因為雲廠商自己SB的CDN回源設計, 爆刷CDN流量的案例 )

但是在 Cloudflare 上,你不需要像鬥牛犬和貓頭鷹一樣監視著 賬單 與流量,首先,Cloudflare 流量免費…… ,更強的是, Cloudflare 已經有了智能的抗 DDoS 服務了,即使是免費的 Plan 也預設提供這項服務,可以有效避免惡意攻擊(在傳統雲廠商,這玩意單獨賣幾千上萬的所謂高防IP服務)。再加上每月慷慨的免費 1千萬讀取請求(對於放圖片、軟件包來說這已經非常大了!),可以確保在這上面的費用是高度確定性的 —— 如果不是零的話。

Cloudflare:線上的價值

王堅博士那本講雲端運算的書【線上】其實說得很明白,雲端運算的真正價值是 線上 (而不是什麽彈性、敏捷、便宜之類的東西)。舉個例子:我有一些下雲的客戶與使用者,雖然已經把主體業務從公有雲上搬到了 IDC 或者自己辦公室的伺服器上,但依然在雲上留一些 ECS 和 RDS 的尾巴 —— 因為他們收取數據的 API 放在那裏,感覺公有雲提供的網絡接入要比自己的機房/辦公室更穩定可靠 —— 註意是網絡接入而不是儲存計算。

很多雲上的客戶, 在算力上付出了幾倍到十幾倍溢價 , 在儲存上付出了幾十倍到上百倍的溢價 ,都是為了這個網絡 「線上」 的能力。但 Cloudflare 這樣遍布全球的,帶有邊緣計算能力的 CDN ,將 「線上」 的能力拔高到了一個全新的高度上,比傳統公有雲更好地解決了這個問題。例如,AI 當紅炸子雞 OpenAI 的網站和 API 就是這麽做的 —— 透過 CF 對外提供接入。

在這種模式下,使用者完全可以把網站與 API 透過 Cloudflare 對外提供接入,而將重量級的儲存與計算放在 IDC 中,而不是在傳統公有雲上用幾倍的價格進行租賃。Cloudflare 提供的 Worker 可以在邊緣用於發送、收取數據,並將請求轉發至您自己的數據中心進行處理。如果希望實作更可靠的容災,您還可以利用 Cloudflare 上的 R2 與 D1 作為臨時性本地緩存,預處理匯總數據後,統一拉取到 IDC 進行處理。

CF 與 IDC 從兩頭擠壓公有雲

在 IT 規模光譜的一側 —— 個人站長與小微企業上,新一代雲服務 / SaaS(CF,Neon,Vercel,Supabase) 賽博菩薩們的免費套餐,對公有雲產生了明顯的替代與沖擊 —— 別說 99 塊錢包年的雲伺服器了,9塊9 都不一定香了 —— 再便宜能便宜過免費嗎? —— 更何況用 CF 建站的體驗比雲伺服器自建要好太多了。

但更重要的是,在光譜另一側的中大型企業中,新出現的 IDC 2.0 與開源管控軟件替代合流,短路掉公有雲這個中間商,利用好 硬件摩爾定律 的累積優勢,成為 終極FinOps實踐 ,實作極為 驚人的降本增效能力 。Cloudflare 的出現補齊了開源IDC自建模式的最後一塊短板 —— 「 線上 」 能力。

Cloudflare 並沒有提供傳統公有雲上的那些彈性計算、儲存、 K8S 、 RDS 服務。但幸運地是,Cloudflare 可以與公有雲 / IDC 良好地配合協同 —— 從某種意義上來說,因為 Cloudflare 成功解決了 「線上」 的問題,這使得傳統數據庫中心 IDC 2.0 也同樣可以擁有比肩甚至超越公有雲的 「線上」 能力,兩者配合,在事實上摧毀了一些公有雲的護城河,並擠壓了傳統公有雲廠商的生存空間。

我非常看好 Cloudflare 這種模式,實際上,這種絲滑的體驗才配稱的上是雲,配享太廟,可以心安理得吃高科技行業的高毛利。傳統的 IDC 2.0 也在不斷進步,租賃機櫃、裸金屬伺服器的體驗也並不遜色傳統公有雲(無非是伺服器從兩分鐘到位變成幾個小時到位)。而無法提供更多技術附加值,產品不可替代性的公有雲廠商,生存空間會越來越小 —— 最終回退到傳統 IDC / IaaS 業務中去 。