更新時間:2021-04-20 17:04:51 來源:動力節(jié)點 瀏覽1500次
對于初學者來說,學習Java的根本動力就是分布式開發(fā),特別是apache下面的hadoop、hdfs、hbase,這些基本是分布式開發(fā)的標配。今天動力節(jié)點小編將為大家分享Java分布式。主要介紹Java分布式是什么?
要理解分布式系統(tǒng),主要需要明白一下2個方面:
(1)分布式系統(tǒng)一定是由多個節(jié)點組成的系統(tǒng)。
其中,節(jié)點指的是計算機服務器,而且這些節(jié)點一般不是孤立的,而是互通的。
(2)這些連通的節(jié)點上部署了我們的節(jié)點,并且相互的操作會有協同。
分布式系統(tǒng)對于用戶而言,他們面對的就是一個服務器,提供用戶需要的服務而已。而實際上這些服務是通過背后的眾多服務器組成的一個分布式系統(tǒng)。因此分布式系統(tǒng)看起來像是一個超級計算機一樣。
例如淘寶,平時大家都會使用,它本身就是一個分布式系統(tǒng)。我們通過瀏覽器訪問淘寶網站時,這個請求的背后就是一個龐大的分布式系統(tǒng)在為我們提供服務,整個系統(tǒng)中有的負責請求處理,有的負責存儲,有的負責計算,最終他們相互協調把最后的結果返回并呈現給用戶。
使用分布式系統(tǒng)主要有特點:
(1)增大系統(tǒng)容量。我們的業(yè)務量越來越大,而要能應對越來越大的業(yè)務量,一臺機器的性能已經無法滿足了,我們需要多臺機器才能應對大規(guī)模的應用場景。所以,我們需要垂直或是水平拆分業(yè)務系統(tǒng),讓其變成一個分布式的架構。
(2)加強系統(tǒng)可用。我們的業(yè)務越來越關鍵,需要提高整個系統(tǒng)架構的可用性,這就意味著架構中不能存在單點故障。這樣,整個系統(tǒng)不會因為一臺機器出故障而導致整體不可用。所以,需要通過分布式架構來冗余系統(tǒng)以消除單點故障,從而提高系統(tǒng)的可用性。
(3)因為模塊化,所以系統(tǒng)模塊重用度更高。
(4)因為軟件服務模塊被拆分,開發(fā)和發(fā)布速度可以并行而變得更快。
(5)系統(tǒng)擴展性更高。
(6)團隊協作流程也會得到改善。
分布式系統(tǒng)的類型有三種:
(1)分布式處理,但只有一個總數據庫,沒有局部數據庫。
(2)分層式處理,每一層都有自己的數據庫。
(3)充分分散的分布式網絡,沒有中央控制部分,各節(jié)點之間的聯系方式又可以有多種,如松散的聯接,緊密的聯接,動態(tài)的聯接,廣播通知式的聯接等。
一個大型的系統(tǒng)往往被分為幾個子系統(tǒng)來做,一個子系統(tǒng)可以部署在一臺機器的多個JVM上,也可以部署在多臺機器上。但是每一個系統(tǒng)不是獨立的,不是完全獨立的。需要相互通信,共同實現業(yè)務功能。
一句話來說:分布式就是通過計算機網絡將后端工作分布到多臺主機上,多個主機一起協同完成工作。
分布式應用用到的技術:網絡通信,基于消息方式的系統(tǒng)間通信和基于遠程調用的系統(tǒng)間通信。
缺點:就是會增加技術的復雜度?;谙⒌南到y(tǒng)通信方式,主要是利用的網絡協議,比如TCP/IP協議。系統(tǒng)間的通信還需要對數據進行處理,比如同步IO和異步IO。
遠程調用實現系統(tǒng)間的通信:通過調用本地的Java接口的方法來透明的調用遠程Java的實現。具體的細節(jié)有框架來實現。
基于Java自身技術實現消息方式的系統(tǒng)間通信:
基于Java自身包實現消息方式的系統(tǒng)間通信的方式有:
TCP/IP+BIO、TCP/IP+NIO、UDP/IP+BIO以及UDP/IP+NIO 4種方式。
TCP/IP+BIO在Java中可基于Socket、ServerSocket來實現TCP/IP+BIO的系統(tǒng)間通信。
Socket主要用于實現建立連接及網絡IO的操作,ServerSocket主要用于實現服務器端端口的監(jiān)聽及Socket對象的獲取。
多個客戶端訪問服務器端的情況下,會遇到兩個問題:建立多個socket的,占用過多的本地資源,服務器端要承受巨大的來訪量;創(chuàng)建過多的socket,占用過多的資源,影響性能。
通常解決這種問題的辦法是,使用連接池,既能限制連接的數量,又能避免創(chuàng)建的過程,可以很大的提高性的問題。缺點就是競爭量大的時候造成激烈的競爭和等待。需要注意的是,要設置超時時間,如果不這樣的話,會造成無限制的等待。
為了解決這個問題,采用一連接一線程的方式,同時也會帶來副作用,內存占用過多。
TCP/IP異步通信:Java NIO通道技術實現。
以上就是動力節(jié)點小編介紹的“Java分布式是什么”的內容,希望看完這篇文章大家對Java分布式有更深層次的認識。