大型網站架構演進的五大階段盤點

一個創業公司起步時極可能就兩臺機器,一臺Web 服務器、一臺數據庫服務器,在一個應用系統中集成了全部功能模塊,但隨着業務的發展、流量的增加,單應用遠遠不能知足業務需求。前端

 

下面咱們一同來聊聊網站架構發展所經歷的幾回主要演進,包括:從PHP 到Java 的改造、分佈式改造、無線化改造、中臺的改造、國際化改造。程序員

 

階段一 從PHP 到Java數據庫

 

不少網站早期都是基於Linux+Apache+MySQL+PHP 架構的網站,從當時來看,這種很是流行的我的網站架構的確也很是匹配當時的發展狀態。PHP 語言的特性是快速發佈,從頁面渲染到數據庫訪問,都可以在一個頁面裏所有搞定。緩存

 

即便放到今天,這種架構仍然還有不少人在用,它的優勢就是很是簡單高效,但缺點也很是明顯:擴展性和分佈式很差,不適合企業級的、複雜業務邏輯的大規模協同開發。服務器

 

隨着網站的發展,你們以爲應該將PHP 切換到Java。爲何要切換到Java 語言呢?通常來講,企業選擇開發語言會有以下考慮。架構

 

(1) 語言自己的特性。每種語言開發出來都有它的特性和所適合的場景,像Python、PHP 這類腳本語言很是適合快速簡單的開發方式,而Java 則比較適合構建複雜業務邏輯的企業級開發,可是開發效率會比PHP 要差一點。框架

 

(2) 程序員隊伍。企業選擇何種開發語言,還要看市場上的人才隊伍是否是足夠,是否是有很高層次的人才。是否有高層次的人才,取決於當前的行業老大是否是也在用這種語言,好比當前的頂級互聯網公司若是在用Java,那麼天然這些公司的Java人才比較多,這樣,他們的經驗能夠被快速複製到其餘公司中。異步

 

(3) 語言所對應的工具生態是否完善。一個語言是否有生命力,要看這個語言對應的生態工具是否完善,它的社區是否活躍。由於咱們要用到各類工具,而咱們也不可能本身去寫每種工具,所以,是否能方便地利用開源工具,快速提高開發效率也是很是關鍵的。像如今不少大公司開源了不少Java 的中間件產品,這些中間件能夠直接拿來使用,就不須要再從新開發了。分佈式

 

綜合以上因素,電商網站選擇Java 語言做爲主要的系統開發語言是很是合適的。模塊化

 

從PHP 切換到Java 後,整個網站採用WebX+EJB+iBatis+JBoss+Oracle(後面又將EJB 改爲Spring)的架構,可是隨着業務量的不斷增大,存儲層的瓶頸暴露出來。

 

爲了解決存儲問題,就逐漸用上了很是昂貴的IBM 小型機、Oracle 的數據庫以及EMC的高端存儲(IOE);並對數據庫作了分庫的拆分,分佈式緩存(Tair)也隨之誕生,分佈式文件系統TFS 開始出現,CDN 也慢慢創建了。

 

階段二 分佈式改造

 

所謂分佈式改造,就是儘可能讓系統無狀態化,或者讓有狀態的信息封裝在必定範圍內,以避免限制應用的橫向擴展。簡單來講,就是即使某個應用的少數服務器「宕」掉,也不會影響總體業務的穩定性。

 

要實現應用的分佈式改造必須先解決如下幾個問題。

 

(1) 把應用微服務化:即將大量粗粒度的應用邏輯拆小,作服務化改造。

 

(2) 必須先創建分佈式服務框架。必須具有分佈式RPC 框架、異步消息系統、分佈式數據層、分佈式文件系統、服務的發現、註冊和管理。

 

(3) 必需要解決分佈式Session 問題。

 

爲了作業務的服務化改造,咱們大量拆分了當時的業務系統,造成了商品中心、交易中心、用戶中心、店鋪中心。這些服務做爲底層服務供上層的前臺系統調用,此時的系統架構變成了下面的形式。

如今來看,系統的分佈式改造爲網站接下來5 年的發展奠基了很好的基礎,整個網站的擴展性很是好。幾乎每一個初創企業都必須經歷一次分佈式化的改造,才能爲企業的長期發展奠基基礎。筆者前面說起的幾個重要的中間件產品和關鍵的分佈式Session 等技術在《深刻分析Java Web 技術內幕(修訂版)》一書中有詳細的介紹,感興趣的讀者能夠自行去學習瞭解。

 

階段三 無線化改造

 

到了2013 年,無線技術已經很是火爆了。在此以前,無線的業務老是跟着PC 走,基本上是PC 作好後無線再複製一份,並且無線和PC 還不是同一個前臺系統,致使一個功能要作兩遍,而且無線部門的開發人員原本就很少。這些給業務的發展帶來不少問題。所以2013 年末,啓動了All in 無線項目,目標就是用一套系統、一套架構快速支撐多端的個性化,並在服務端作了不少模塊化和組件化的改造。

 

隨着無線技術的發展,咱們也開始嘗試一些新技術,最具表明性的就是Node。

 

Node 在業界很火,前端同窗很是推崇,並且它也大幅提高了前端的開發效率和體驗。

 

目前你們也多方嘗試使用Node 技術,而且用在一些業務線上。可是,從今天來看,Node 並無達到咱們想象中的發展前景。這其中有多種緣由,本書的後續章節會專門介紹網站的無線化改造實踐,也將分享Node 在實際使用中的一些思考。

 

通過無線化改造的應用系統架構如圖。

 

階段四 中臺改造

 

中臺這個概念早期是由美軍的做戰體系演化而來,技術上的「中臺」主要是指學習這種高效、靈活和強大的指揮做戰體系。電商通過十幾年的發展,組織已經龐大而複雜,業務不斷細化拆分,也致使野蠻發展的系統愈來愈不可維護,開發和改造效率極低,也有不少新業務不得不重複造輪子,因此中臺的目標是爲了解決效率問題,同時下降創新成本。

如何一塊兒學習,有沒有免費資料?

對Java技術,架構技術感興趣的同窗,歡迎加QQ羣:681179158,一塊兒學習,相互討論。

羣內已經將知識體系整理好(源碼,筆記,PPT,學習視頻),歡迎加羣免費領取。

掃碼加羣:681179158 免費領取資料

階段五 國際化

 

國際化通常會有兩種思路:一種是一套原始代碼部署到多個地方,各地的系統基本沒有什麼關聯、保持相互獨立,每一個地方再根據本地實際狀況作一些個性化的定製。通常來講,會精簡原始代碼,減小沒必要要的依賴。這種思路在一些跨國公司用得比較多,可是這個對技術要求比較低。

 

另外一種思路就是咱們所說的國際化,它主要是解決如何將一套系統部署到多地的問題。通常國際化有兩個發展階段:第一個階段是在國內實現了交易的單元化;第二個階段是實現了中美的跨國部署。

 

國際化的本質仍然是要解決如下的通用問題:多語言問題、多時區問題、數據路由問題、全球數據的同步與複製問題。

相關文章
相關標籤/搜索