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