挑戰
京東 (JD.com) 擁有超過 3 億活躍用戶,2017 年總收入超過 550 億美元,是中國最大的零售商,其營運規模堪稱超大規模的典範。例如,京東的產品資料庫中擁有超過一兆張圖片,每天還會新增 1 億張,而如此龐大的資料量需要能夠即時存取。京東首席架構師劉海峰表示,2014 年,京東將應用程式遷移到裸機上使用 OpenStack 和 Docker 運行的容器,「以加快運算資源的交付速度,並使運作更加簡化」。但到了 2015 年底,隨著數萬個節點在多個資料中心運行,「我們遇到了很多問題,因為我們的平台不夠強大,並且受到瓶頸和擴展性問題的困擾,」劉先生說。「我們現在就需要未來五年發展所需的基礎設施。」
解決方案
京東轉向 Kubernetes 以容納其叢集。2016 年初,公司開始從 OpenStack 過渡到 Kubernetes,如今,京東運行著世界上最大的 Kubernetes 叢集。「Kubernetes 提供了一個強大的基礎,我們在這個基礎之上客製化了解決方案,以滿足我們作為中國最大零售商的需求。」
影響
劉先生表示:「透過 Kubernetes 平台,我們擁有更高的資料中心效率、更完善的資源管理和更智慧的部署。」部署時間從數小時縮短到數十秒。以 IT 成本衡量,效率提高了 20-30%。隨著團隊正在進行的進一步最佳化,劉先生相信每年有潛力節省數億美元。但或許最能證明成功的是年度雙 11 購物節,這是 2018 年首次在 Kubernetes 平台上運行。在 11 天內,京東的交易量達到 230 億美元,「我們的電子商務平台表現出色,」劉先生說。「基礎設施引領了 11.11 購物節的準備工作。我們採取了預測交易量、模擬客戶行為以提前準備,並演練故障的方法。由於 Kubernetes 的可擴展性,我們能夠處理極高的需求量。」
例如,京東的客戶產品資料庫中擁有超過一兆張圖片,每天還會新增 1 億張。而如此龐大的資料量需要能夠即時存取,以實現流暢的線上客戶體驗。
京東首席架構師劉海峰表示,2014 年,京東將應用程式遷移到裸機上使用 OpenStack 和 Docker 運行的容器,「以加快運算資源的交付速度,並使運作更加簡化」。但到了 2015 年底,隨著數十萬個節點在多個資料中心運行,「我們遇到了很多問題,因為我們的平台不夠強大,並且受到瓶頸和擴展性問題的困擾,」劉先生補充說。「我們現在就需要未來五年發展所需的基礎設施。」
在考慮了許多協調技術之後,京東決定採用 Kubernetes 以容納其不斷增長的叢集。「主要原因是 Kubernetes 可以為我們提供更高效、可擴展且更簡化的應用程式部署,而且我們可以利用它進行彈性的平台調度,」劉先生說。
Kubernetes 基於 Google 的 Borg 這個事實也給了公司信心。團隊喜歡 Kubernetes 擁有清晰簡潔的架構,並且主要以 Go 開發,Go 是 JD.com 內流行的語言。儘管劉先生當時覺得 Kubernetes「不夠成熟」,但他表示「我們仍然採用了它」。
團隊花了一年時間開發基於 Kubernetes 的新容器引擎平台,並在 2016 年底開始在公司內部推廣它。「我們希望叢集成為建立服務的預設方式,這樣擴展性會更容易,」劉先生說。「我們與開發人員溝通,興趣逐漸增加,我們一起解決問題。」其中一些問題包括網路效能和 etcd 可擴展性。「但在過去兩年中,Kubernetes 變得更加成熟和非常穩定,」他補充說。
如今,公司運行著世界上最大的 Kubernetes 叢集。「我們客製化了 Kubernetes,並在其之上建構了一個現代化系統,」劉先生說。「整個 Kubernetes 生態系統加上我們自己的優化,幫助我們節省了成本和時間。透過 Kubernetes 平台,我們擁有更高的資料中心效率、更完善的資源管理和更智慧的部署。」
成果顯而易見:部署時間從數小時縮短到數十秒。以 IT 成本衡量,效率提高了 20-30%。但或許最能證明成功的是年度 雙 11 購物節,這是 2018 年首次在 Kubernetes 平台上運行。在 11 天內,京東的交易量達到 230 億美元,「我們的電子商務平台表現出色,」劉先生說。「基礎設施引領了 11.11 購物節的準備工作。我們採取了預測交易量、模擬客戶行為以提前準備,並演練故障的方法。由於 Kubernetes 的可擴展性,我們能夠處理極高的需求量。」
京東現在正處於 Kubernetes 的第二階段:平台已經穩定、可擴展且靈活,因此重點是如何更有效率地運行,以進一步降低成本。隨著團隊正在進行的資源管理最佳化,劉先生相信每年有潛力節省數億美元。
他說:「我們在大約數萬個實體裸機節點上運行 Kubernetes 和容器叢集。透過使用 Kubernetes 並利用我們自己的機器學習管線來預測每個應用程式所需的資源量,以及我們自己的智慧型擴展演算法,我們可以提高資源使用率。例如,如果我們將資源使用率提高幾個百分點,那就意味著我們可以降低巨額硬體成本。那麼我們就不需要那麼多伺服器就能獲得相同的工作負載量。這可以為我們節省大量資源。」
京東榮獲 CNCF 2018 年度最終使用者獎,並且在其平台上使用 Helm、CNI、Harbor 和 Vitess。京東開發人員為 CNCF 專案 Vitess(用於可擴展 MySQL 叢集管理)做出了重大貢獻,公司希望在不久的將來將自己的專案捐贈給 CNCF。社群參與是 JD.com 的優先事項。「我們與這個社群建立了良好的合作夥伴關係,」劉先生說。「我們可以與社群分享我們的成功經驗,我們也收到來自其他人的良好回饋。因此這是互惠互利的。」
為此,劉先生為其他正在考慮採用雲原生技術的公司提供了以下建議。「首先您需要將這項技術與您自己的業務結合,其次是您需要明確的目標,」他說。「您不能僅僅因為其他人都在使用就使用這項技術。您需要考慮您自己的目標。」
對於 JD.com 的目標而言,這些雲原生技術與公司自身本土創新完美契合。「Kubernetes 幫助我們降低了運作的複雜性,使分散式系統穩定且可擴展,」劉先生說。「最重要的是,我們可以利用 Kubernetes 調度資源來降低硬體成本。這是最大的勝利。」