需要单机还是集群部署_单机、分布式、集群的区别与联系
一、單機(jī)結(jié)構(gòu)
一個(gè)系統(tǒng)業(yè)務(wù)量很小的時(shí)候所有的代碼都放在一個(gè)項(xiàng)目中,然后這個(gè)項(xiàng)目部署在一臺(tái)服務(wù)器上就好了,整個(gè)項(xiàng)目所有的服務(wù)都由這臺(tái)服務(wù)器提供。這就是單機(jī)結(jié)構(gòu)。單機(jī)結(jié)構(gòu)的缺點(diǎn)是顯而易見的,單機(jī)的處理能力畢竟是有限的,當(dāng)你的業(yè)務(wù)增長到一定程度的時(shí)候,單機(jī)的硬件資源將無法滿足你的業(yè)務(wù)需求。此時(shí)便出現(xiàn)了集群模式。
二、集群結(jié)構(gòu)
單機(jī)處理到達(dá)瓶頸的時(shí)候,你就把單機(jī)復(fù)制幾份,這樣就構(gòu)成了一個(gè)“集群”。集群中每臺(tái)服務(wù)器就叫做這個(gè)集群的一個(gè)“節(jié)點(diǎn)”,所有節(jié)點(diǎn)構(gòu)成了一個(gè)集群。每個(gè)節(jié)點(diǎn)都提供相同的服務(wù),那么這樣系統(tǒng)的處理能力就相當(dāng)于提升了好幾倍(有幾個(gè)節(jié)點(diǎn)就相當(dāng)于提升了這么多倍)。
但問題是用戶的請(qǐng)求究竟由哪個(gè)節(jié)點(diǎn)來處理呢?最好能夠讓此時(shí)此刻負(fù)載較小的節(jié)點(diǎn)來處理,這樣使得每個(gè)節(jié)點(diǎn)的壓力都比較平均。要實(shí)現(xiàn)這個(gè)功能,就需要在所有節(jié)點(diǎn)之前增加一個(gè)“調(diào)度者”的角色,用戶的所有請(qǐng)求都先交給它,然后它根據(jù)當(dāng)前所有節(jié)點(diǎn)的負(fù)載情況,決定將這個(gè)請(qǐng)求交給哪個(gè)節(jié)點(diǎn)處理。這個(gè)“調(diào)度者”有個(gè)牛逼了名字——負(fù)載均衡服務(wù)器。
集群結(jié)構(gòu)的好處就是系統(tǒng)擴(kuò)展非常容易。如果隨著你們系統(tǒng)業(yè)務(wù)的發(fā)展,當(dāng)前的系統(tǒng)又支撐不住了,那么給這個(gè)集群再增加節(jié)點(diǎn)就行了。但是,當(dāng)你的業(yè)務(wù)發(fā)展到一定程度的時(shí)候,你會(huì)發(fā)現(xiàn)一個(gè)問題——無論怎么增加節(jié)點(diǎn),貌似整個(gè)集群性能的提升效果并不明顯了。這時(shí)候,你就需要使用微服務(wù)結(jié)構(gòu)了。
三、分布式結(jié)構(gòu)
從單機(jī)結(jié)構(gòu)到集群結(jié)構(gòu),你的代碼基本無需要作任何修改,你要做的僅僅是多部署幾臺(tái)服務(wù)器,每臺(tái)服務(wù)器上運(yùn)行相同的代碼就行了。但是,當(dāng)你要從集群結(jié)構(gòu)演進(jìn)到微服務(wù)結(jié)構(gòu)的時(shí)候,之前的那套代碼就需要發(fā)生較大的改動(dòng)了。所以對(duì)于新系統(tǒng)我們建議,系統(tǒng)設(shè)計(jì)之初就采用微服務(wù)架構(gòu),這樣后期運(yùn)維的成本更低。但如果一套老系統(tǒng)需要升級(jí)成微服務(wù)結(jié)構(gòu)的話,那就得對(duì)代碼大動(dòng)干戈了。所以,對(duì)于老系統(tǒng)而言,究竟是繼續(xù)保持集群模式,還是升級(jí)成微服務(wù)架構(gòu),這需要你們的架構(gòu)師深思熟慮、權(quán)衡投入產(chǎn)出比。
下面開始介紹所謂的分布式結(jié)構(gòu)。
分布式結(jié)構(gòu)就是將一個(gè)完整的系統(tǒng),按照業(yè)務(wù)功能,拆分成一個(gè)個(gè)獨(dú)立的子系統(tǒng),在分布式結(jié)構(gòu)中,每個(gè)子系統(tǒng)就被稱為“服務(wù)”。這些子系統(tǒng)能夠獨(dú)立運(yùn)行在web容器中,它們之間通過RPC方式通信。
舉個(gè)例子,假設(shè)需要開發(fā)一個(gè)在線商城。按照微服務(wù)的思想,我們需要按照功能模塊拆分成多個(gè)獨(dú)立的服務(wù),如:用戶服務(wù)、產(chǎn)品服務(wù)、訂單服務(wù)、后臺(tái)管理服務(wù)、數(shù)據(jù)分析服務(wù)等等。這一個(gè)個(gè)服務(wù)都是一個(gè)個(gè)獨(dú)立的項(xiàng)目,可以獨(dú)立運(yùn)行。如果服務(wù)之間有依賴關(guān)系,那么通過RPC方式調(diào)用。
這樣的好處有很多:
1、系統(tǒng)之間的耦合度大大降低,可以獨(dú)立開發(fā)、獨(dú)立部署、獨(dú)立測(cè)試,系統(tǒng)與系統(tǒng)之間的邊界非常明確,排錯(cuò)也變得相當(dāng)容易,開發(fā)效率大大提升。
2、系統(tǒng)之間的耦合度降低,從而系統(tǒng)更易于擴(kuò)展。我們可以針對(duì)性地?cái)U(kuò)展某些服務(wù)。假設(shè)這個(gè)商城要搞一次大促,下單量可能會(huì)大大提升,因此我們可以針對(duì)性地提升訂單系統(tǒng)、產(chǎn)品系統(tǒng)的節(jié)點(diǎn)數(shù)量,而對(duì)于后臺(tái)管理系統(tǒng)、數(shù)據(jù)分析系統(tǒng)而言,節(jié)點(diǎn)數(shù)量維持原有水平即可。
3、服務(wù)的復(fù)用性更高。比如,當(dāng)我們將用戶系統(tǒng)作為單獨(dú)的服務(wù)后,該公司所有的產(chǎn)品都可以使用該系統(tǒng)作為用戶系統(tǒng),無需重復(fù)開發(fā)。
四、三者之間的區(qū)別和聯(lián)系
以下漫畫圖很形象地說明三者之間的區(qū)別和聯(lián)系:
五、總結(jié)
集群是個(gè)物理形態(tài),分布式是個(gè)工作方式。只要是一堆機(jī)器,就可以叫集群,他們是不是一起協(xié)作著干活,這個(gè)誰也不知道;一個(gè)程序或系統(tǒng),只要運(yùn)行在不同的機(jī)器上,就可以叫分布式,嗯,C/S架構(gòu)也可以叫分布式。
集群一般是物理集中、統(tǒng)一管理的,而分布式系統(tǒng)則不強(qiáng)調(diào)這一點(diǎn)。所以,集群可能運(yùn)行著一個(gè)或多個(gè)分布式系統(tǒng),也可能根本沒有運(yùn)行分布式系統(tǒng);分布式系統(tǒng)可能運(yùn)行在一個(gè)集群上,也可能運(yùn)行在不屬于一個(gè)集群的多臺(tái)(2臺(tái)也算多臺(tái))機(jī)器上。
總結(jié)
以上是生活随笔為你收集整理的需要单机还是集群部署_单机、分布式、集群的区别与联系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京理工大学珠海学院专业计算机类,北京理
- 下一篇: python 函数式编程 库_使用Pyt