更新時間:2021-07-19 15:31:01 來源:動力節點 瀏覽1615次
協議
擴展:由網絡層的IP協議和傳輸層的TCP協議組成,TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。而IP是給因特網的每一臺聯網設備規定一個地址。
1.當系統之間要通信時,就向外發送消息,消息可以使字節流、字節數組,甚至是java對象,其他系統收到消息后則進行相應的業務處理。消息方式的通信,通常是基于網絡協議來實現的,常用的系統間通信的協議有:TCP/IP和UDP/IP
2.TCP/IP是一種可靠的網絡數據傳輸的協議。TCP/IP要求通信雙方首先建立連接,之后再進行數據的傳輸TCP/IP負責保證數據傳輸的可靠性,包括數據的可到達、數據到達的順序等。但由于TCP/IP需要保證連接及數據傳輸的可靠,因此可能會犧牲一些性能。
3.UDP/IP是一種不保證數據一定到達的網絡數據傳輸協議。UDP/IP并不直接給通信雙方建立連接,而是發送發到網絡上進行傳遞。由于UDP/IP不建立連接,并且不能保證數據傳輸的可靠,因此性能上表現相對較好,但是可能會出現數據丟失以及數據亂序的現象。
4.TCP/IP和UDP/IP可用于完成數據的傳輸,但是要完成系統間通信,還需要對數據進行處理。列如讀取和寫入數據,按照標準分為同步IO和異步IO兩種。其中同步IO中最常用的是BIO(Blocking IO)和NIO(Non-Blocking IO)
5.從程序角度而言,BIO就是當發起IO的讀取或寫操作時,均為阻塞方式,只有當程序讀到了流或將流寫入操作系統后才釋放資源。f.NIO是基于事件驅動思想的,實現上通常采用Reactor模式,從程序角度而言,當發起IO的讀或寫操作時,是非租塞的。
(BIO)Socket ServerSocket一連接一線程.一個socket需要一個線程處理。建立連接、讀數據,寫數據的操作都可能阻塞。為了支持并發連接需要線程池
(NIO)SocketChannel ServerSocketChannel服務端一個線程監聽連接的事件,一個或多個線程來監聽網絡讀寫事件。當有實際的網絡流讀寫事件發生后,再放入線程池中處理。一請求一線程.NIO的明顯好處就是不需要為每一個socket分配一個線程,而可以在一個線程中處理多個scoket。
組播(Multicast)傳輸:在發送者和每一接收者之間實現點對多點網絡連接。如果一臺發送者同時給多個的接收者傳輸相同的數據,也只需復制一份的相同數據包。它提高了數據傳送效率。減少了骨干網絡出現擁塞的可能性。
開源框架
性能角度
連接管理
連接池連接復用短連接、長連接
遠程調用方式應該可能的是系統間的通信和系統內部一樣,讓使用者感覺調用遠程同調用本地一樣,但其實并沒有辦法做到完全透明。由于遠程調用帶來的網絡問題、超時問題,序列化反序列化問題、復雜調試問
基于java包
原理:client----[proxy]----->封裝對象、序列化為流<----[TCP/IP BIO]---->反序列化、調用----->反射調用實例對象
在java領域可以理解為一個javaweb應用。
什么是傳統的分布式架構?簡單來說,按照業務垂直切分,每個應用都是單體架構,通過API相互調用。
在構建了共用業務邏輯系統和拆分系統后,最明顯的問題就是系統之間如何交互。如果不控制會出現系統之間存在多種交互方式:http、TCP/IP+NIO、Hessian、RMI、WebService等;同步異步都可能出現,這會導致開發人員每訪問一個共用業務邏輯系統或拆分出來的系統,都有可能需要學習不同交互方式;同時也會造成各開發團隊重復造輪子,提供不同交互方式用的框架,這對于應用的性能可用性而言帶來了極大的挑戰。
面向服務的家否是一種軟件體系結構,其應用程序的不同組件通過網絡上的協議向其他提供服務和消費服務。簡單來說,soa是不同業務建立不同的服務,服務之間的數據交互可以通過服務接口分級,這樣松散耦合提高服務的可重用性,也讓業務邏輯變得可組合,并且每個服務根據適應情況作出合理的分布式部署,從而讓服務變得規范、高性能、高可用。soa架構中兩個主要角色:服務提供者(provider)和服務消費者(consumer).阿里開源的Dubbo是soa的典型實現。
將單一程序開發成一個微服務,每個微服務運行在自己的進程中,并使用輕量級機制通信,通常采用HTTP RestFul API.這些服務圍繞業務能力來劃分構建的,并通過全完自動化部署機制來獨立部署。這些服務可以使用不同的編程需要,以及不同數據存儲技術,以保證最低限度的集中式管理。
SOA往往與企業服務總線(ESB)聯系在一起,主要原因在于SOA的實施思路是根據ESB模式來整合集成大量單一龐大的系統,這是soa主要的落地方式。微服務相對于和ESB聯系在一起的SOA顯示輕便敏捷得多,微服務將復雜的業務組件化,實際也是一種面向服務思想的體現。對于微服務來說,它是SOA的一種體現,但是它比ESB實現的SOA更加輕便、敏捷和簡單。
以上就是動力節點小編介紹的"Java分布式基礎學習指南",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習