當(dāng)下,分布式系統(tǒng)已經(jīng)成為了企業(yè)級(jí)應(yīng)用的首選平臺(tái)。這是由于它具有良好的可擴(kuò)展性(尤其是橫向可擴(kuò)展性),使得分布式系統(tǒng)非常靈活,能應(yīng)對(duì)千變?nèi)f化的企業(yè)級(jí)需求,而且降低了企業(yè)客戶對(duì)服務(wù)器硬件的要求,真正能做到應(yīng)用服務(wù)層面的彈性擴(kuò)展。
所以如果你選擇懸系Java開(kāi)發(fā),那么分布式系統(tǒng),一定是你避不開(kāi)的一個(gè)課題。那么為什么要學(xué)習(xí)分布式系統(tǒng)呢?以及,分布式具體是個(gè)什么概念呢?
首先,要理解分布式系統(tǒng),就需要明白以下這2個(gè)方面。首先,分布式系統(tǒng)一定是由多個(gè)節(jié)點(diǎn)組成的系統(tǒng)。其中,節(jié)點(diǎn)指的是計(jì)算機(jī)服務(wù)器,而且這些節(jié)點(diǎn)一般不是孤立的,而是互通的。
其次,這些連通的節(jié)點(diǎn)上部署了我們的節(jié)點(diǎn),并且相互的操作會(huì)有協(xié)同。分布式系統(tǒng)對(duì)于用戶而言,他們面對(duì)的就是一個(gè)服務(wù)器,提供用戶需要的服務(wù)而已,而實(shí)際上這些服務(wù)是通過(guò)背后的眾多服務(wù)器組成的一個(gè)分布式系統(tǒng),因此分布式系統(tǒng)看起來(lái)像是一個(gè)超級(jí)計(jì)算機(jī)一樣。
例如淘寶,平時(shí)大家都會(huì)使用,它本身就是一個(gè)分布式系統(tǒng),我們通過(guò)瀏覽器訪問(wèn)淘寶網(wǎng)站時(shí),這個(gè)請(qǐng)求的背后就是一個(gè)龐大的分布式系統(tǒng)在為我們提供服務(wù),整個(gè)系統(tǒng)中有的負(fù)責(zé)請(qǐng)求處理,有的負(fù)責(zé)存儲(chǔ),有的負(fù)責(zé)計(jì)算,最終他們相互協(xié)調(diào)把最后的結(jié)果返回并呈現(xiàn)給用戶。
分布式系統(tǒng)的核心理念是讓多臺(tái)服務(wù)器協(xié)同工作,完成單臺(tái)服務(wù)器無(wú)法處理的任務(wù),尤其是高并發(fā)或者大數(shù)據(jù)量的任務(wù)。但通常情況下,分布式系統(tǒng)的每個(gè)節(jié)點(diǎn)一般會(huì)不采用高性能的服務(wù)器,而是性能相對(duì)一般的普通PC服務(wù)器。也就是通過(guò)橫向擴(kuò)展(增加更多的服務(wù)器),以此來(lái)提升分布式系統(tǒng)的整體性能。所以廉價(jià)高效,是分布式系統(tǒng)最顯著的特點(diǎn)。
那么分布式系統(tǒng)又能做些什么呢?
1、增大系統(tǒng)容量。我們的業(yè)務(wù)量越來(lái)越大,而要能應(yīng)對(duì)越來(lái)越大的業(yè)務(wù)量,一臺(tái)機(jī)器的性能已經(jīng)無(wú)法滿足了,我們需要多臺(tái)機(jī)器才能應(yīng)對(duì)大規(guī)模的應(yīng)用場(chǎng)景。所以,我們需要垂直或是水平拆分業(yè)務(wù)系統(tǒng),讓其變成一個(gè)分布式的架構(gòu)。
2、加強(qiáng)系統(tǒng)可用。我們的業(yè)務(wù)越來(lái)越關(guān)鍵,需要提高整個(gè)系統(tǒng)架構(gòu)的可用性,這就意味著架構(gòu)中不能存在單點(diǎn)故障。這樣,整個(gè)系統(tǒng)不會(huì)因?yàn)橐慌_(tái)機(jī)器出故障而導(dǎo)致整體不可用。所以,需要通過(guò)分布式架構(gòu)來(lái)冗余系統(tǒng)以消除單點(diǎn)故障,從而提高系統(tǒng)的可用性。
3、因?yàn)槟K化,所以系統(tǒng)模塊重用度更高
4、因?yàn)檐浖⻊?wù)模塊被拆分,開(kāi)發(fā)和發(fā)布速度可以并行而變得更快
5、系統(tǒng)擴(kuò)展性更高
6、團(tuán)隊(duì)協(xié)作流程也會(huì)得到改善