什麼是Java分佈式?

對於初學者來說,學習Java的根本動力就是分佈式開發,特別是apache下面的hadoop、hdfs、hbase,這些基本是分佈式開發的標配。那麼這篇文章就來和大家一起聊聊分佈式吧!

一、什麼是分佈式系統?

要理解分佈式系統,主要需要明白一下2個方面:

1、分佈式系統一定是由多個節點組成的系統。

其中,節點指的是計算機服務器,而且這些節點一般不是孤立的,而是互通的。

2、這些連通的節點上部署了我們的節點,並且相互的操作會有協同。

分佈式系統對於用戶而言,他們面對的就是一個服務器,提供用戶需要的服務而已。而實際上這些服務是通過背後的衆多服務器組成的一個分佈式系統。因此分佈式系統看起來像是一個超級計算機一樣。

例如淘寶,平時大家都會使用,它本身就是一個分佈式系統。我們通過瀏覽器訪問淘寶網站時,這個請求的背後就是一個龐大的分佈式系統在爲我們提供服務,整個系統中有的負責請求處理,有的負責存儲,有的負責計算,最終他們相互協調把最後的結果返回並呈現給用戶。

使用分佈式系統主要有特點:

**1、增大系統容量。**我們的業務量越來越大,而要能應對越來越大的業務量,一臺機器的性能已經無法滿足了,我們需要多臺機器才能應對大規模的應用場景。所以,我們需要垂直或是水平拆分業務系統,讓其變成一個分佈式的架構。

**2、加強系統可用。**我們的業務越來越關鍵,需要提高整個系統架構的可用性,這就意味着架構中不能存在單點故障。這樣,整個系統不會因爲一臺機器出故障而導致整體不可用。所以,需要通過分佈式架構來冗餘系統以消除單點故障,從而提高系統的可用性。

3、因爲模塊化,所以系統模塊重用度更高。

4、因爲軟件服務模塊被拆分,開發和發佈速度可以並行而變得更快。

5、系統擴展性更高。

6、團隊協作流程也會得到改善。

分佈式系統的類型有三種:

1、分佈式處理,但只有一個總數據庫,沒有局部數據庫。

2、分層式處理,每一層都有自己的數據庫。

3、充分分散的分佈式網絡,沒有中央控制部分,各節點之間的聯繫方式又可以有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式的聯接等。

二、什麼是Java分佈式應用?

一個大型的系統往往被分爲幾個子系統來做,一個子系統可以部署在一臺機器的多個JVM上,也可以部署在多臺機器上。但是每一個系統不是獨立的,不是完全獨立的。需要相互通信,共同實現業務功能。

一句話來說:分佈式就是通過計算機網絡將後端工作分佈到多臺主機上,多個主機一起協同完成工作。

三、實現分佈式主要的方式

分佈式應用用到的技術:網絡通信,基於消息方式的系統間通信和基於遠程調用的系統間通信。

缺點:就是會增加技術的複雜度。基於消息的系統通信方式,主要是利用的網絡協議,比如TCP/IP協議。系統間的通信還需要對數據進行處理,比如同步IO和異步IO。

遠程調用實現系統間的通信:通過調用本地的Java接口的方法來透明的調用遠程Java的實現。具體的細節有框架來實現。

基於Java自身技術實現消息方式的系統間通信:

基於Java自身包實現消息方式的系統間通信的方式有:

TCP/IP+BIO、TCP/IP+NIO、UDP/IP+BIO以及UDP/IP+NIO 4種方式。

TCP/IP+BIO在Java中可基於Socket、ServerSocket來實現TCP/IP+BIO的系統間通信。

Socket主要用於實現建立連接及網絡IO的操作,ServerSocket主要用於實現服務器端端口的監聽及Socket對象的獲取。

多個客戶端訪問服務器端的情況下,會遇到兩個問題:建立多個socket的,佔用過多的本地資源,服務器端要承受巨大的來訪量;創建過多的socket,佔用過多的資源,影響性能。

通常解決這種問題的辦法是,使用連接池,既能限制連接的數量,又能避免創建的過程,可以很大的提高性的問題。缺點就是競爭量大的時候造成激烈的競爭和等待。需要注意的是,要設置超時時間,如果不這樣的話,會造成無限制的等待。

爲了解決這個問題,採用一連接一線程的方式,同時也會帶來副作用,內存佔用過多。

TCP/IP異步通信:Java NIO通道技術實現。

以上就是對Java分佈式的理解了。希望看完這篇文章大家對Java分佈式有更深層次的認識。
————————————————
版權聲明:本文爲CSDN博主「戲精程序媛」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiaoxijing/article/details/99865038

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章