在IDF05(Intel Developer Forum 2005)上,Intel首席執行官Craig Barrett就取消4GHz芯片計劃一事,半開玩笑當衆單膝下跪致歉,給廣大軟件開發者一個明顯的信號,單純依靠垂直提高硬件性能來提升系統性能的時代已結束,分佈式開發的時代實際上早已悄悄地成爲了時代的主流,吵得很熱的雲計算實際上只是包裝在分佈式以外的商業概念,不少開發者(包括我)都想加入研究雲計算這個潮流,在google上經過「雲計算」這個關鍵詞來查詢資料,查到的都是些概念性或商業性的宣傳資料,其實真正須要深刻的仍是那個早以被人熟知的概念------分佈式。web
分佈式可繁也能夠簡,最簡單的分佈式就是你們最經常使用的,在負載均衡服務器後加一堆web服務器,而後在上面搞一個緩存服務器來保存臨時狀態,後面共享一個數據庫,其實不少號稱分佈式專家的人也就停留於此,大體結構以下圖所示:算法
這種環境下真正進行分佈式的只是web server而已,而且web server之間沒有任何聯繫,因此結構和實現都很是簡單。數據庫
有些狀況下,對分佈式的需求就沒這麼簡單,在每一個環節上都有分佈式的需求,好比Load Balance、DB、Cache和文件等等,而且當分佈式節點之間有關聯時,還得考慮之間的通信,另外,節點很是多的時候,得有監控和管理來支撐。這樣看起來,分佈式是一個很是龐大的體系,只不過你能夠根據具體需求進行適當地裁剪。按照最完備的分佈式體系來看,能夠由如下模塊組成:編程
所以,若要深刻研究雲計算和分佈式,就得深刻研究以上領域,而這些領域每一塊的水都很深,都須要很底層的知識和技術來支撐,因此說,對於想提高技術的開發者來講,以分佈式來做爲切入點是很是好的,能夠以此爲線索,探索計算機世界的各個角落。緩存
分佈式是相對中心化而來,強調的是任務在多個物理隔離的節點上進行。中心化帶來的主要問題是可靠性,若中心節點宕機則整個系統不可用,分佈式除了解決部分中心化問題,也傾向於分散負載,但分佈式會帶來不少的其餘問題,最主要的就是一致性。
服務器
集羣就是邏輯上處理同一任務的機器集合,能夠屬於同一機房,也可分屬不一樣的機房。分佈式這個概念能夠運行在某個集羣裏面,某個集羣也可做爲分佈式概念的一個節點。
微信
一句話,就是:「分頭作事」與「一堆人」的區別
網絡
分佈式:不一樣的業務模塊部署在不一樣的服務器上或者同一個業務模塊分拆多個子業務,部署在不一樣的服務器上,解決高併發的問題
架構
集羣:同一個業務部署在多臺機器上,提升系統可用性
併發
小飯店原來只有一個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒同樣的菜,這兩個廚師的關係是集羣。爲了讓廚師專心炒菜,把菜作到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關係是分佈式,一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係是集羣
BLOG地址:www.liangsonghua.com
關注微信公衆號:松花皮蛋的黑板報,獲取更多精彩!
公衆號介紹:分享在京東工做的技術感悟,還有JAVA技術和業內最佳實踐,大部分都是務實的、能看懂的、可復現的