1. 程式人生 > >孫東風:如何基於雲及Docker一鍵式架構億萬級系統

孫東風:如何基於雲及Docker一鍵式架構億萬級系統

本文由 萬達飛凡網C端研發部總經理孫東風於2016年8月,在WOT2016移動網際網路技術峰會效能專場《基於雲及Docker一鍵式架構億萬級系》主題演講整理而成。

打造SaaS級平臺解決方案

目前整個開發環境越來越複雜,包括快取、資料庫、服務,以及服務的註冊、灰色釋出,但從整個計算機的發展歷史上可以看到,從早期面向系統演變成面向後端Java、面向物件,整體開發環境的需求變得越來越好。“飛凡網嘗試基於Docker做一些通用元件,把常規服務做封裝,這樣可以面向業務提供一些通用的專門元件。”

他最終的想法是通過大量大使用者量級產品的實戰經驗,濃縮出SaaS級的網際網路解決方案,並通過MicroService的方式,對每一個模組實現”插拔式”的部署,使得所有功能可以進行熱插拔,包括服務路由、服務容錯、服務呼叫、服務註冊、服務釋出、服務灰色釋出、流量控制、服務降級、服務監控。

整體技術架構分享

正因為開發環境越來越複雜,技術選型也變得越來越複雜,所以萬達飛凡網採用的技術架構的目的是為了讓整個開發環境,包括整個系統更加標準化,操作簡單。

目前飛凡網的技術架構:

快取系統

,通過快取系統,可以快速擴容快取,並大幅度提供系統擴充套件性、可靠性。

分散式檔案系統,提供高效能分散式檔案系統,並提供ImageMagic模組自由對檔案進行剪裁、縮放、旋轉並存儲。現在很多雲平臺已經開始提供這些功能,例如阿里雲。“從應用開發角度而言,這樣的系統更多是方便技術人員實現構建標準化,對底層可做更多開發,利於後續發展。”

分散式訊息系統,最終選用了kafka分散式訊息佇列,把大多數”資料弱一致性”的耗時操作轉化成併發操作,並可以對操作進行永久快取,提高伺服器負載能力和容錯能力。kafka對強一致性操作的處理也比較好。

服務註冊和發現,這部分主要內容是快速進行服務升級、服務註冊、服務發現、服務降級。不僅是ZooKeeper,只是一個基礎元件功能,可以建一些祕密空間,包括對服務的地址進行儲存、動態配置化。

之前更多是服務、SOV、關注註冊、控制方面的開發,而Docker的出現將對未來開發方式帶來很大改變, 目前飛凡網對Docker的使用也在不斷嘗試過程中,技術團隊推出的Docker Reigstry私有倉庫,就是將服務和執行環境推到私有docker-registry中。

智慧化的Docker 叢集管理

演講的最後,孫東風分享了Docker 叢集管理Kubernetes。他透露他們對整個Docker管理十分智慧化,Kubernetes以RESTFul形式開放介面,使用者可操作的REST物件有三個:

一是pod是kubernetes最基本的部署排程單元,如果對一些基本業務做Service,每個Kubernetes對會業務碰撞,可以把放到pod裡面,在進行擴充套件時,第一個是自動化,第二個是很容易進行擴容縮容,比如雙十一這個時間節點流量壓力將增加十倍,但是雙十一過去之後整個流量壓力就不會那麼大,擴容縮容特別容易,尤其是通過複製replicationController,是智慧化解決pod擴容縮容的元件;

二是service是pod的路由代理物件,解決pod之間的服務發現問題;

三是replicationController解決pod的擴容縮容問題。

“從功能特性角度可以看到Docker 叢集管理Kubernetes對於整個資源排程,包括部署啟動、執行監控、服務發現、錯誤處理、擴容縮容都非常智慧化,非常感謝谷歌提供了這樣一個元件。”

從我個人角度,將來可能會對整個軟體開發行業有一個很大的影響。這次講得比較快,主要是和大家分享一下,我是想把開發流程更加簡單化,把常用的解決方案和大家做分享,每一塊都是一個很大的共同點。補充一下,Docker叢集管理除了Kubernetes之外,還有其他一些工具,Docker是谷歌開源的,並且對整個Docker管理是很智慧化的,從功能來講也是很強大的,特別是在數量特別大的時候。