日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Java應用從集中式步入分布式

系統 2036 0

【IT168 技術】 記得Martin大叔在《企業應用架構模式》中特別強調:“能夠不分布式的應用就不要分布式”,這句話沒什么問 題,尤其對于做過分布式應用的人而言,就更會有深刻的體會了,但這個世界偏偏就沒有那么簡單,大多數人都會碰到分布式應用的場景,尤其是對于大型應用而 言,從集中式步入分布式是不可避免的,只是也許是小型分布式的,也許是大型分布式的;也許是有高性能要求的,也許是沒有的,在這篇blog中我們來看看 java應用從集中式步入分布式后到底會帶來些什么挑戰。

  blog按照應用從集中式演變為大型且高性能的應用的過程來敘述,這也是因為這幾類應用對于設計、開發人員的要求也是從低到高的。

Java應用從集中式步入分布式

  Level 1:小型分布式應用

   對于做習慣了集中式應用的同學而言,當碰到小型分布式應用場景時,最明顯的問題就是如何和遠程的系統通訊,如何發消息給遠程的系統,告訴它做什么事情, 并且得到事情處理的結果,對于java開發人員而言,更習慣的考慮方式也許是如何去調用遠程系統提供的接口,在集中式的應用中可以采用A a=new AImpl();這樣的方式調用,但遠程就沒辦法這么調用了。

  在小型分布式應用中,最需要解決的就是上面所說的遠程系統通訊以及遠程系統調用的問題了,為此就得學習相關的知識體系。

   對于遠程系統通訊而言,至少應該知道下TCP/IP、UDP/IP是個大概什么樣的概念,BIO/NIO是什么概念,另外就是需要知道下基于java如 何去實現tcp/ip+BIO(NIO)、udp/ip+BIO(NIO)的通訊,相應的會需要了解下Java序列化、 服務器 端采用線程池方式處理等知識,在掌握了這些知識后,基本上做一個小型的java遠程通訊的應用不會有什么太大的問題。

   對于通過遠程系統調用就可實現的小型分布式應用而言,也許更為簡單,可以只掌握怎么用spring-remoting、axis或hessian這類的 框架就可以了,直接就可實現,當然,如果能了解下rmi、webservice是什么機制就更好了,另外,畢竟遠程調用很難做到完全和本地調用一樣,盡管 所有的遠程調用框架都想做到完全透明,但遠程調用時僅僅異常就比本地調用會多出好幾種來,例如 網絡 異常、超時異常等,因此在調用遠程系統時,需要明確的了解這些異常的區分,當然,或者可以認為都是同樣的遠程業務異常,但在追查錯誤時,則需要明確區分。

  從上面這些知識點可以看出,應用即使是從集中式應用步入小型分布式應用,無論是對于開發、部署還是測試而言,都復雜了很多。

  Level 2:高性能分布式應用

  對于高性能分布式應用而言,要求就高很多了,因為要做到高性能,僅了解怎么用是不夠的,通訊和調用方面的技術都需要了解到底層的具體機制和實現。

   對于遠程通訊方式的分布式應用而言,需要了解BIO/NIO具體有什么不同,具體機制是怎么樣的,以及使用或參考目前主流的通訊框架,像mina、 grizzly等,看看它們在做NIO實現時有什么高超的技巧,除了了解這些外,還需要掌握線程池應如何配置;長連、短連什么概念,如何實現;連接怎么管 理;序列化如何優化等等。

  對于遠程調用的分布式應用而言,則在上面的基礎上,還需要了解rmi、webservice等的實現機制是怎 么樣的,另外就是spring-remoting、hessian、axis的實現機制是怎么樣的,有什么可改進的地方,在明確了可改進的地方后需要自己 選擇相應的方案去實現。

  從上面這些知識點可以看出,要寫出高性能的分布式應用真的不是蓋的,確實挺困難的。

  Level 3:大型高性能分布式應用

  對于大型高性能分布式應用而言,難度就較之之前兩個level更大很多,它面臨的問題非常的多:

  1、穩定性的問題

  對于大型分布式應用而言,保持穩定是其重點,要做到穩定,就必須對整個應用的通訊過程的實現技術有全面的了解,以能夠做到在使用時盡量的正確,另外就是當出現問題時能夠盡快的查明原因。

  2、統一、標準通訊的問題

  大型分布式應用必然會涉及到很多種不同的應用,應該能夠做到對于任何的應用都采用同樣的方式進行通訊或調用,這樣才能確保使用的簡單。

  3、分布式事務的問題

  當應用變成大型分布式應用后,分布式事務的問題會不可避免的出現,而且這個時候還要求做到高性能,因此通常是不能用傳統的數據庫事務來實現的,目前對于大型應用的分布式事務而言,流行的有BASE和CAP策略,和傳統的ACID策略不同。

  4、如何管理這些應用的問題

  大型分布式應用,意味著應用非常的多,在這樣的場景下,怎么樣管理好這么多的應用呢,例如這些應用之間的依賴關系是怎么樣的,應用運行期的狀況是怎么樣的等等。

  還有很多各種各樣的問題,因此,我們更要說,要做個能支撐大型高性能的分布式應用真的非常非常的不容易,對于實現大型分布式應用而言,目前SOA是個可參考的思想,但其具體如何實現就需要各位架構師根據情況來做出具體的選擇了。

  從以上簡單的描述來看,可以看出,分布式應用比集中式應用真的難很多,至少它是在原有的集中式應用的基礎上增加了更多的挑戰和對于知識體系的更高的要求,當然,對于大型應用而言,它帶來的好處也是非常明顯的,因此就讓我們痛并快樂著吧。

Java應用從集中式步入分布式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 靖江市| 巴中市| 历史| 赣州市| 阿鲁科尔沁旗| 奎屯市| 临猗县| 兴和县| 东乡| 武穴市| 仁寿县| 松溪县| 长海县| 江口县| 卫辉市| 西青区| 社旗县| 潼关县| 句容市| 揭阳市| 都江堰市| 缙云县| 黔江区| 仙居县| 文登市| 祁阳县| 琼结县| 永昌县| 吕梁市| 淮安市| 武夷山市| 湖北省| 东阳市| 涞水县| 民和| 安宁市| 巢湖市| 台东县| 罗田县| 桓仁| 依兰县|