其中,節點指的是計算機服務器,而且這些節點一般不是孤立的,而是互通的。
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 分布式學習目錄,幫助了解分布式都有哪些東西
第 1 章 分布式 Java應用
1.1 基於消息方式實現系統間的通信
1.1.1 基於 Java自身技術實現消息方式的系統間通信
1.1.2 基於開源框架實現消息方式的系統間通信
1.2 基於遠程調用方式實現系統間的通信
1.2.1 基於 Java自身技術實現遠程調用方式的系統間通信
1.2.2 基於開源框架實現遠程調用方式的系統間通信
第 2 章 大型分布式 Java應用與 SOA
2.1 基於 SCA實現 SOA平台
2.2 基於 ESB實現 SOA平台
2.3 基於 Tuscany實現 SOA平台
2.4 基於 Mule 實現 SOA平台
3.1 Java代碼的執行機制
3.1.1 Java源碼編譯機制
3.1.2 類加載機制
3.1.3 類執行機制
3.2 JVM內存管理
3.2.1 內存空間
3.2.2 內存分配
3.2.3 內存回收
3.2.4 JVM 內存狀況查看方法和分析工具
3.3 JVM線程資源同步及交互機制
3.3.1 線程資源同步機制
3.3.2 線程交互機制
3.3.3 線程狀態及分析
第 4 章 分布式應用與 SunJDK類庫
4.1 集合包
4.1.1 ArrayList
4.1.2 LinkedList
4.1.3 Vector
4.1.4 Stack
4.1.5 HashSet
4.1.6 TreeSet
4.1.7 HashMap
4.1.8 TreeMap
4.1.9 性能測試
4.1.10 小結
4.2 並發包( java.util.concurrent )
4.2.1 ConcurrentHashMap
4.2.2 CopyOnWriteArrayList
4.2.3 CopyOnWriteArraySet
4.2.4 ArrayBlockingQueue
4.2.5 AtomicInteger
4.2.6 ThreadPoolExecutor
4.2.7 Executors
4.2.8 FutureTask
4.2.9 Semaphore
4.2.10 CountDownLatch
4.2.11 CyclicBarrier
4.2.12 ReentrantLock
4.2.13 Condition
4.2.14 ReentrantReadWriteLock
4.3 序列化 /反序列化
4.3.1 序列化
4.3.2 反序列化
第 5 章 性能調優
5.1 尋找性能瓶頸
5.1.1 CPU消耗分析
5.1.2 文件 IO 消耗分析
5.1.3 網絡 IO 消耗分析
5.1.4 內存消耗分析
5.1.5 程序執行慢原因分析
5.2 調優
5.2.1 JVM 調優
5.2.2 程序調優
5.2.3 對於資源消耗不多,但程序執行慢的情況
第 6 章 構建高可用的系統
6.1 避免系統中出現單點
6.1.1 負載均衡技術
6.1.2 熱備
6.2 提高應用自身的可用性
6.2.1 盡可能地避免故障
6.2.2 及時發現故障
6.2.3 及時處理故障
6.2.4 訪問量及數據量不斷上漲的應對策略
第 7 章 構建可伸縮的系統
7.1 垂直伸縮
7.1.1 支撐高訪問量
7.1.2 支撐大數據量
7.1.3 提升計算能力
7.2 水平伸縮
7.2.1 支撐高訪問量
7.2.2 支撐大數據量
7.2.3 提升計算能力
掃描下方二維碼獲取更多知識和學習資料

