使用分佈式系統主要有特色:
java
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 提高計算能力
掃描下方二維碼獲取更多知識和學習資料