首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 應用從集中式邁向分布式:三個層級的挑戰與演進

     編輯:Java 相關知識

Martin Fowler 在《企業應用架構模式》中強調:「能不分布式就不要分布式」,做過分布式應用的人深有體會。但現實往往不由人,大多數人都會碰到分布式場景,尤其是大型應用,從集中式邁向分布式不可避免。本文按應用從集中式演變為大型高性能應用的過程敘述,對設計開發人員要求也從低到高。

Level 1:小型分布式應用——解決遠程通訊與調用

對習慣集中式開發者,小型分布式最明顯的問題是如何與遠程系統通訊、發消息、調用接口。集中式可用 new AImpl() 直接調用,遠程則不行。

需掌握知識體系:

  • 遠程通訊:了解 TCP/IP、UDP/IP、BIO/NIO 概念;Java 實現 tcp/ip+ BIO/NIO、udp/ip+ BIO/NIO 通訊;Java 序列化、服務端線程池處理。
  • 遠程調用:掌握 spring-remoting、axis、hessian 等框架;了解 RMI、WebService 機制;遠程調用異常(網絡異常、超時異常)與本地調用區別,追查錯誤時需明確區分。

即使小型分布式,對開發、部署、測試都複雜許多。

Level 2:高性能分布式應用——深入底層機制

要求高很多,僅懂怎麼用不夠,通訊調用技術需了解到底層機制與實現。

  • 遠程通訊:深入 BIO/NIO 差異與機制;參考主流框架;線程池配置;長連/短連概念與實現;連接管理;序列化優化。
  • 遠程調用:在上述基礎上,了解 RMI、WebService、spring-remoting、hessian、axis 實現機制與改進點,自行選擇方案實現。

寫出高性能分布式應用確實不易。

Level 3:大型高性能分布式應用——多維度挑戰

難度遠超前兩級,面臨問題極多:

  1. 穩定性:重中之重,需全面了解通訊實現技術,使用時盡量正確,出問題能快速定位。
  2. 統一標準通訊:涉及多種不同應用,需同樣方式通訊調用,確保使用簡單。
  3. 分布式事務:不可避免,且要求高性能,通常不能用傳統數據庫事務(ACID),流行 BASE 與 CAP 策略。
  4. 應用管理:應用眾多,如何管理依賴關係、運行狀態等。

還有許多各類問題。SOA 是可參考思想,但具體實現需架構師根據情況選擇。分布式應用比集中式難得多,在原有基礎上增加更多挑戰與知識要求,但對大型應用好處明顯,讓我們痛並快樂著吧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved