更新時(shí)間:2021-04-20 17:04:51 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1748次
對(duì)于初學(xué)者來(lái)說,學(xué)習(xí)Java的根本動(dòng)力就是分布式開發(fā),特別是apache下面的hadoop、hdfs、hbase,這些基本是分布式開發(fā)的標(biāo)配。今天動(dòng)力節(jié)點(diǎn)小編將為大家分享Java分布式。主要介紹Java分布式是什么?
要理解分布式系統(tǒng),主要需要明白一下2個(gè)方面:
(1)分布式系統(tǒng)一定是由多個(gè)節(jié)點(diǎn)組成的系統(tǒng)。
其中,節(jié)點(diǎn)指的是計(jì)算機(jī)服務(wù)器,而且這些節(jié)點(diǎn)一般不是孤立的,而是互通的。
(2)這些連通的節(jié)點(diǎn)上部署了我們的節(jié)點(diǎn),并且相互的操作會(huì)有協(xié)同。
分布式系統(tǒng)對(duì)于用戶而言,他們面對(duì)的就是一個(gè)服務(wù)器,提供用戶需要的服務(wù)而已。而實(shí)際上這些服務(wù)是通過背后的眾多服務(wù)器組成的一個(gè)分布式系統(tǒng)。因此分布式系統(tǒng)看起來(lái)像是一個(gè)超級(jí)計(jì)算機(jī)一樣。
例如淘寶,平時(shí)大家都會(huì)使用,它本身就是一個(gè)分布式系統(tǒng)。我們通過瀏覽器訪問淘寶網(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)主要有特點(diǎn):
(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)致整體不可用。所以,需要通過分布式架構(gòu)來(lái)冗余系統(tǒng)以消除單點(diǎn)故障,從而提高系統(tǒng)的可用性。
(3)因?yàn)槟K化,所以系統(tǒng)模塊重用度更高。
(4)因?yàn)檐浖?wù)模塊被拆分,開發(fā)和發(fā)布速度可以并行而變得更快。
(5)系統(tǒng)擴(kuò)展性更高。
(6)團(tuán)隊(duì)協(xié)作流程也會(huì)得到改善。
分布式系統(tǒng)的類型有三種:
(1)分布式處理,但只有一個(gè)總數(shù)據(jù)庫(kù),沒有局部數(shù)據(jù)庫(kù)。
(2)分層式處理,每一層都有自己的數(shù)據(jù)庫(kù)。
(3)充分分散的分布式網(wǎng)絡(luò),沒有中央控制部分,各節(jié)點(diǎn)之間的聯(lián)系方式又可以有多種,如松散的聯(lián)接,緊密的聯(lián)接,動(dòng)態(tài)的聯(lián)接,廣播通知式的聯(lián)接等。
一個(gè)大型的系統(tǒng)往往被分為幾個(gè)子系統(tǒng)來(lái)做,一個(gè)子系統(tǒng)可以部署在一臺(tái)機(jī)器的多個(gè)JVM上,也可以部署在多臺(tái)機(jī)器上。但是每一個(gè)系統(tǒng)不是獨(dú)立的,不是完全獨(dú)立的。需要相互通信,共同實(shí)現(xiàn)業(yè)務(wù)功能。
一句話來(lái)說:分布式就是通過計(jì)算機(jī)網(wǎng)絡(luò)將后端工作分布到多臺(tái)主機(jī)上,多個(gè)主機(jī)一起協(xié)同完成工作。
分布式應(yīng)用用到的技術(shù):網(wǎng)絡(luò)通信,基于消息方式的系統(tǒng)間通信和基于遠(yuǎn)程調(diào)用的系統(tǒng)間通信。
缺點(diǎn):就是會(huì)增加技術(shù)的復(fù)雜度?;谙⒌南到y(tǒng)通信方式,主要是利用的網(wǎng)絡(luò)協(xié)議,比如TCP/IP協(xié)議。系統(tǒng)間的通信還需要對(duì)數(shù)據(jù)進(jìn)行處理,比如同步IO和異步IO。
遠(yuǎn)程調(diào)用實(shí)現(xiàn)系統(tǒng)間的通信:通過調(diào)用本地的Java接口的方法來(lái)透明的調(diào)用遠(yuǎn)程Java的實(shí)現(xiàn)。具體的細(xì)節(jié)有框架來(lái)實(shí)現(xiàn)。

基于Java自身技術(shù)實(shí)現(xiàn)消息方式的系統(tǒng)間通信:
基于Java自身包實(shí)現(xiàn)消息方式的系統(tǒng)間通信的方式有:
TCP/IP+BIO、TCP/IP+NIO、UDP/IP+BIO以及UDP/IP+NIO 4種方式。
TCP/IP+BIO在Java中可基于Socket、ServerSocket來(lái)實(shí)現(xiàn)TCP/IP+BIO的系統(tǒng)間通信。
Socket主要用于實(shí)現(xiàn)建立連接及網(wǎng)絡(luò)IO的操作,ServerSocket主要用于實(shí)現(xiàn)服務(wù)器端端口的監(jiān)聽及Socket對(duì)象的獲取。
多個(gè)客戶端訪問服務(wù)器端的情況下,會(huì)遇到兩個(gè)問題:建立多個(gè)socket的,占用過多的本地資源,服務(wù)器端要承受巨大的來(lái)訪量;創(chuàng)建過多的socket,占用過多的資源,影響性能。
通常解決這種問題的辦法是,使用連接池,既能限制連接的數(shù)量,又能避免創(chuàng)建的過程,可以很大的提高性的問題。缺點(diǎn)就是競(jìng)爭(zhēng)量大的時(shí)候造成激烈的競(jìng)爭(zhēng)和等待。需要注意的是,要設(shè)置超時(shí)時(shí)間,如果不這樣的話,會(huì)造成無(wú)限制的等待。
為了解決這個(gè)問題,采用一連接一線程的方式,同時(shí)也會(huì)帶來(lái)副作用,內(nèi)存占用過多。
TCP/IP異步通信:Java NIO通道技術(shù)實(shí)現(xiàn)。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的“Java分布式是什么”的內(nèi)容,希望看完這篇文章大家對(duì)Java分布式有更深層次的認(rèn)識(shí)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)