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