本篇文章做爲彈性即是一切的姊妹篇,以某電商的痛點入手,介紹如何經過遷移到雲上解決各類問題,並給出了架構設計的調整思路。前端
某服裝電商公司的網站系統是搭建在自建機房裏的。web
這個網站可讓用戶經過網頁端或手機端創建和管理本身行頭,並讓用戶、設計師和零售商之間創建社交網絡,使三者造成互動。算法
該網站的架構是有一個前端服務,後臺的服務被拆分紅若干個微服務,數據庫是MySQL,除了進行平常的交易數據處理(OLTP),業務也須要進行實時的數據分析(OLAP),造成各類報表,以觀測銷售數據、用戶行爲等。數據庫
他們遇到了幾個問題:編程
-
因爲業務增加迅猛,他們的服務器數量從幾臺暴增到幾十臺,但仍未能知足業務增加的須要; -
業務量在每週不一樣日子,天天不一樣時點是有波動的,低谷時的業務量是高峯時的十分之一不到,致使高峯時服務器資源緊張,低谷時又有大量服務器空閒; -
業務已經拓展到海外,海外用戶廣泛反映訪問速度較慢,特別是視頻和圖片; -
因爲採購新的服務器週期長,配置新服務器也須要時間和人力,致使系統變動速度受到拖累,沒法快速知足用戶的新需求; -
因爲服務器昂貴,配置選擇很少,他們每每把幾類不一樣的微服務集中部署到一臺服務器上,沒法實現微服務架構設計所設想的故障隔離和彈性伸縮,也增長了系統間沒必要要的依賴,形成運維困難。 -
因爲軟件價格昂貴,中間件和數據庫的選項很少,全部的數據操做,不論是交易型數據處理(OLTP)仍是數據分析(OLAP),都集中在一個關係型數據庫上,致使該數據庫運行壓力大,系統性能也大打折扣。
因而他們想到了雲。服務器
咱們來看看雲能怎樣解決這幾個問題:微信
-
在雲上,有幾乎無限的計算資源能夠租用; -
只要系統架構設計得當,能夠完美實現彈性伸縮,既能知足業務增加的擴容須要,又能在業務低谷時釋放資源,節約費用; -
大型公有云商都提供全球部署,能夠把系統部署到不一樣大洲的區域,經過全球負載均衡讓用戶能夠就近反映,也會提供CDN服務加速視頻、圖片等靜態內容的下載; -
在雲上獲取新的計算資源都是幾分鐘的事情,能夠實現按需即用; -
雲上,服務器的種類、配置選擇衆多; -
更重要的是,除了提供服務器、存儲、網絡這些基礎設施服務外,雲還提供了託管數據庫、對象存儲、容器運行環境、應用運行環境、大數據處理、機器學習等平臺服務,除了選擇多,也能大大減小運維負擔。
最後兩點尤其關鍵,它爲咱們的系統解決方案提供更多的選項。網絡
過去,在自建機房,服務器的數量和配置選擇有限,中間件、數據庫等軟件的選擇也是有限的,咱們在技術選型上不得不作各類妥協,甚至把不該該部署在一塊兒的模塊和服務遷就在一塊兒,兩頭不到岸。架構
但在雲上,咱們在技術選型則自由得多。app
以數據庫爲例,除了關係型數據庫,還有各類類型的NoSQL數據庫、針對數據分析(OLAP)優化的數據庫等。爲交易型數據處理(OLTP)配置關係型數據庫,爲數據分析(OLAP)配置相應的服務,既互不干擾,又能把各自的特性和性能發揮到極致。
在部署上,咱們能夠把每個微服務部署到獨立的服務器或集羣中,從一臺高配置服務器集中部署多個系統的方式轉換成多臺低配置服務器,每臺服務器只獨立部署和運行一個獨立系統和服務,完美實現微服務架構設計所追求的故障隔離和彈性伸縮。雲也提供了管理繁雜架構的可視化、監控、鏈路跟蹤、熔斷、日誌等的服務,大大下降運維管理的難度。
除此以外,雲的彈性伸縮和按需付費自然適合像大數據處理和機器學習這些在運算時忽然須要大量算力,但運算後又不須要這些算力的場景,咱們沒法想象要爲這些場景專門採購服務器須要多大的成本、多長的週期和形成多大的浪費。
並且,雲除了爲這些場景提供算力外,也把經常使用的處理流程、算法、語言和工具打包成開箱即用的平臺服務,大大節約開發成本。
前文提到的電商網站系統,在遷移到雲上的過程當中,充分理解了雲提供了哪些服務和選項,並對系統的架構和設計進行相應的調整。它的架構設計調整爲:
-
根據業務開拓的狀況,分別在亞洲、歐洲和北美三個區域部署了系統,配置了全球負載均衡和CDN實現用戶就近訪問,大大提高每一個區域用戶的訪問速度; -
全部微服務都經過容器部署在雲託管的Kubernetes集羣服務上,簡化了部署過程,並實現了自動彈性伸縮; -
交易型數據處理(OLTP)經過雲託管的關係型數據庫實現,直接實現了多點部署,並在不須要修改代碼的狀況下實現了讀寫分離; -
數據分析(OLAP)經過雲託管的分析型數據庫實現,能在數秒處理TB級的數據; -
監控、日誌查詢、報警等所有依託於雲的服務,能夠集中處理架構中全部服務的運維工做; -
開始考慮藉助雲的大數據處理服務和機器學習服務,實現智能推薦和廣告精準投放。
經過此次遷移,該公司再不須要擔憂業務量激增、業務範圍拓展所帶來的「成長的煩惱」,公司的發展也有了更多的可能性。開發團隊也能輕易搭建新的測試環境,加快開發和測試的速度。
固然,該公司也沒有把所有「賭注」都壓在一個雲廠商上,他們仍是保留了部分自建機房的資源,做爲災備環境,爲未來退出某個雲廠商留了後路。
以爲文章不錯,順手點個「點贊」、「在看」或轉發給朋友們吧。
![分割線 卡通](http://static.javashuo.com/static/loading.gif)
劉華(Kenneth)
就任於世界500強銀行,負責基金服務業務軟件開發與交付
敏捷、精益、DevOps專家
公衆號「敏於思 捷於行」博主
精通極限編程、Scrum、看板方法、測試驅動開發、持續集成、行爲驅動開發、DevOps工具棧
曾在GDevOps、DevOpsDays Meetup、中國軟件技術大會、ArchSummit等論壇發表主題演講
阿里雲、谷歌雲認證架構師
著有《獵豹行動:硝煙中的敏捷轉型之旅》一書和專欄《軟件交付那些事兒》
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
本文分享自微信公衆號 - 敏於思 捷於行(kennethz2016)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。