什么是分布式和集群?
漫小畫
擅長漫話
程小員
擅長編程
某天,下班較早,我正在玩吃雞,已經到決賽圈了,這時候,女朋友滿臉求知欲的朝我走過來。
上次他們都說你給我講的面向對象太簡單了。
那你想怎樣?為什么我一玩游戲你就過來問我問題呢?
我不管,你給我說說分布式和集群是啥東東?
我頭也不抬,直接拋出一句:
分布式(distributed)是指在多臺不同的服務器中部署不同的服務模塊,通過遠程調用協同工作,對外提供服務。
集群(cluster)是指在多臺不同的服務器中部署相同應用或服務模塊,構成一個集群,通過負載均衡設備對外提供服務。
說人話,這東西我聽不懂。
好吧。走,我們先出去吃飯。邊吃邊聊。
集中式系統
我和女朋友來到一家小飯店,開始點菜:紅燒魚、糖醋排骨、酸辣土豆絲,好了就這么多了。
現在,我們和這家飯店之間的就是用戶和系統的關系。我們要求他給我們做出一頓豐盛的晚餐。我們不關心他后廚的一切事情。只要它能在短時間內提供美味的菜品就好了。
上面,我們對這個飯店提出來兩個要求:上菜時間短、菜品美味。除了這些,顧客可能還有其他要求,比如菜品要干凈衛生、酸辣土豆絲可以多放些辣椒等。
映射到計算機系統中,用戶提出的要求就是:
上菜時間短???->?性能 干凈衛生????->?安全性 菜品多放辣椒?->?擴展性 菜品美味????->?可用性上面說的這家小飯店,只有一個廚師。就是一個集中式系統。
一個集中式部署的電子商務應用
如果飯店內只有我們一個顧客的話,以上幾條基本都可以滿足的。但是,如果到了晚飯時間,突然顧客變多了,這些顧客的要求可能就沒辦法全都滿足了。
飯店內人滿為患,這家小飯店只有一個廚師的情況下,他需要保證所有菜品美味、衛生,又要保證所有菜品可以準時準備好,又要給不同用戶滿足定制化要求。這種挑戰是及其大的。
以上,映射到計算機軟件中,也是一樣的。隨著業務量的增長,網站的高可用、易伸縮、可擴展、安全等目標就會受到極大的挑戰。
集群部署
隨著飯店的生意越來越好,老板意識到只有一個廚師會存在很大問題。
首先,在客流量高峰期,一個廚師無法滿足所有顧客的要求。
其次,廚師變成了一個單點,就是他不能生病,一旦他生病了,整個飯店就無法營業了。
這可愁壞了老板,一時之間不知道該如何是好了。但是,老板有個聰明的老婆,他提了一個建議。
這有什么好發愁的?再雇傭幾個廚師就行了呀。
誒,你這個注意很不錯啊。
然后,為了提高飯店的待客能力。老板決定多雇傭幾個廚師。
有了多個廚師了之后。店內顧客的點菜,就可以分配給后廚的多個廚師來做。
具體如何分配,這就是需要一定的策略了??梢赃x擇分配給空閑的廚師、也可以按順序輪流分配。
雖然,飯店有多個廚師,但是用戶并不知道這些事情,他只知道自己的點菜需求,可以得到滿足就可以了。他也不需要關心到底是哪位廚師給自己做的菜。除非菜品出現了質量問題時,就需要找到指定的廚師來問責了。
以上,映射到計算機軟件中,也是一樣的。集中式系統只有一臺計算機提供服務,集群就是有多臺計算機提供同樣的服務。
一個集群部署的電子商務應用
用戶的請求通過負載均衡分配給集群中的各個機器。整個系統對于用戶來說就像是一臺機器在提供服務一樣。
分布式部署
在飯店雇傭了多個廚師之后,飯店的服務能力確實提升了很多。顧客也越來越多。
但是,最近店內經常會有顧客投訴某個菜品的味道和自己之前吃到過的不一樣了。
經過店長的仔細調查,發現是由于這家店的廚師除了要負責炒菜以外,還需要負責洗菜、切菜、備菜,甚至是刷碗。
這就使得廚師沒辦法專注于炒菜了,他會被很多其他的瑣事而牽絆,導致無法專心炒菜,影響了菜品的質量。
而且,由于最近店內的顧客也越來越多,幾個廚師還是忙不過來。
這時候,老板就要想辦法繼續提升飯店的服務能力。他想著要繼續雇傭幾個廚師。
還是飯店老板那個聰明的老婆,又給他出了一個更好的主意。
雇傭一個廚師多費錢啊,你用雇傭一個廚師的錢,雇傭幾個洗菜工、配菜師不就行了么。
誒,你這個注意很不錯啊
這就是一種分布式的思想。
通過把一件大的事情,拆分成多個小事情,分別交給不同的人來做。
這樣術業有專攻,洗菜的可以把菜洗的更干凈、廚師也可以專注炒菜,把菜炒的更加美味。
飯店從多個廚師的配置,變成了多個洗菜工+配菜師+廚師的配置。這家飯店的服務能力大大提升。再也沒有顧客投訴菜品問題了。
對于顧客來說,他們還是不知道后廚的這些變化的,他甚至不知道自己點的菜是多個人配合的結果。
以上,映射到計算機軟件中,也是一樣的。除了通過集群部署的方式提升系統能理外,還可以通過分布式部署的方式。
一個分布式部署的電子商務應用
把一個大的系統拆分成多個子系統,每個子系統負責自己專注的事情,然后通過網絡進行通信和協調,對用戶來說,就像訪問的是同一臺機器一樣。
哇,太棒了。
你聽懂了對吧,什么都難不住我的。
什么啊,我想說,這紅燒魚太好吃了。
額、、、
隨著飯店的發展,慢慢的從只有一個廚師演變成有多個廚師,進而演變成有洗菜工、配菜師、廚師等多個職位。
這個網站架構發展也類似。網站初期,只需要搭建一個集中式的單體應用就可以了,如果業務量有很大增長,先考慮增加機器,通過集群部署提升能力。接著,就可以考慮分布式了。
總結
以上是生活随笔為你收集整理的什么是分布式和集群?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Adblock屏蔽简书广告
- 下一篇: doc2vec原理