官术网_书友最值得收藏!

1.3 輕量級Java EE的技術(shù)特點(diǎn)

正是由于傳統(tǒng)企業(yè)級應(yīng)用技術(shù)的不足,迫使開發(fā)者將目光轉(zhuǎn)向了開源社區(qū)。Rod Johnson在2002年編著的Expert One-on-One J2EE Design and Development一書中可以說是一針見血地指出了當(dāng)時Java EE架構(gòu)在實(shí)際開發(fā)中的種種弊端,并推出了Spring框架來簡化企業(yè)級應(yīng)用的開發(fā)。

之后,開源社區(qū)日益繁榮,Hibernate、Structs等輕量級框架相繼推出,以替換Java EE中的“重量級”實(shí)現(xiàn)。

本書主要介紹如何從零開始,吸收市面上優(yōu)秀的開源框架,來實(shí)現(xiàn)屬于自己的Java EE輕量級框架。輕量級Java EE意味著開源、簡單、輕便、快捷。

接下來將介紹輕量級Java EE技術(shù)的特點(diǎn)。

1.3.1 輕量級架構(gòu)

輕量級Java EE技術(shù)具有非侵入性,依賴的東西非常少,占用的資源也非常少,部署簡單,啟動快速,比較容易使用。

輕量級Java EE技術(shù)底層基于Spring框架來實(shí)現(xiàn)bean的管理,因此,只要你有Spring的開發(fā)經(jīng)驗(yàn),上手就非常簡單。即便你是Spring的新手,通過學(xué)習(xí)本書的第6章也可以帶領(lǐng)你入門Spring。

1.3.2 符合二八定律

輕量級Java EE技術(shù)旨在通過花較少的成本(20%)來解決大部分問題(80%)。

輕量級Java EE技術(shù)專注于解決企業(yè)級應(yīng)用中的場景問題,比如對象管理、事務(wù)管理、認(rèn)證與授權(quán)、數(shù)據(jù)存儲、負(fù)載均衡、緩存等,而這些場景基本上涵蓋了所有的企業(yè)級應(yīng)用。

通過輕量級Java EE技術(shù)的學(xué)習(xí),讀者能夠掌握互聯(lián)網(wǎng)公司常用的技術(shù),解決企業(yè)關(guān)注的大部分問題,有利于提升作為一名技術(shù)人員的核心競爭力。

1.3.3 基于開源技術(shù)

輕量級Java EE技術(shù)吸收市面上優(yōu)秀的開源框架技術(shù),去其糟粕,取其精華,使得基于輕量級Java EE技術(shù)的應(yīng)用功能強(qiáng)大,但自身又保持著簡單易于理解。

輕量級Java EE所使用的開源技術(shù)都是目前大型互聯(lián)網(wǎng)公司所采用的成熟技術(shù),包括:

  • 基于Maven實(shí)現(xiàn)模塊化開發(fā)及項目管理。
  • 基于Jetty或者Tomcat提供開箱即用的Servlet容器。
  • 使用Spring實(shí)現(xiàn)IoC和AOP機(jī)制。
  • 基于Spring TestContext及JUnit實(shí)現(xiàn)開發(fā)過程中的單元測試和集成測試。
  • 使用Spring Web MVC實(shí)現(xiàn)MVC模式。
  • 使用Thymeleaf和Bootstrap實(shí)現(xiàn)基于原型的界面開發(fā)。
  • 使用Jersey實(shí)現(xiàn)RESTful風(fēng)格的架構(gòu)。
  • 基于Spring Security實(shí)現(xiàn)認(rèn)證與授權(quán)。
  • 使用MySQL實(shí)現(xiàn)數(shù)據(jù)的高效存儲。
  • 使用MyBatis實(shí)現(xiàn)數(shù)據(jù)庫的操作與對象關(guān)系映射。
  • 使用WebSocket實(shí)現(xiàn)Web應(yīng)用實(shí)時通信。
  • 使用JMS實(shí)現(xiàn)消息發(fā)送。
  • 使用Quartz Scheduler實(shí)現(xiàn)任務(wù)調(diào)度。
  • 使用JCache實(shí)現(xiàn)數(shù)據(jù)緩存。
  • 使用Spring Boot簡化應(yīng)用的配置。
  • 使用Spring Cloud簡化應(yīng)用的配置。

……

本書也會詳細(xì)介紹上述技術(shù)。

1.3.4 支持微服務(wù)

在復(fù)雜的大型互聯(lián)網(wǎng)應(yīng)用架構(gòu)中,傾向于使用微服務(wù)架構(gòu)來劃分為不同的微服務(wù)。這些微服務(wù)面向特定的領(lǐng)域,因此開發(fā)能夠更加專注,所實(shí)現(xiàn)的功能也相對專一。

輕量級Java EE技術(shù)支持微服務(wù)架構(gòu)。輕量級Java EE技術(shù)非常輕量,啟動速度非???。同時,輕量級Java EE技術(shù)傾向于將應(yīng)用打包成Fat JAR(1)的形式,因而能夠輕易在微服務(wù)架構(gòu)常用的容器等技術(shù)中運(yùn)行。

1.3.5 可用性和擴(kuò)展性

由于輕量級Java EE技術(shù)支持微服務(wù)架構(gòu),因此輕量級Java EE技術(shù)所實(shí)現(xiàn)的應(yīng)用很容易實(shí)現(xiàn)自身的橫向擴(kuò)展。

理論上,每個微服務(wù)都是獨(dú)立部署的,且每個微服務(wù)會部署多個實(shí)例以保證可用性和擴(kuò)展性。

同時,獨(dú)立部署微服務(wù)實(shí)例有利于監(jiān)控每個微服務(wù)實(shí)例運(yùn)行的狀態(tài),方便在應(yīng)用達(dá)到告警閾值時及時做出調(diào)整。

1.3.6 支撐大型互聯(lián)網(wǎng)應(yīng)用

正是由于輕量級Java EE技術(shù)具有良好的可用性和擴(kuò)展性,使得輕量級Java EE技術(shù)非常適合用于大型互聯(lián)網(wǎng)應(yīng)用。因?yàn)榇笮突ヂ?lián)網(wǎng)應(yīng)用既要部署快、運(yùn)行快,又要求在運(yùn)維過程中能夠及時處置突發(fā)事件。

圖1-3展示了微服務(wù)實(shí)例自動擴(kuò)展的場景。

圖1-3 自動擴(kuò)展

從圖中可以清楚地看到,監(jiān)控程序會對應(yīng)用持續(xù)監(jiān)控,當(dāng)現(xiàn)有的服務(wù)實(shí)例CPU超過了預(yù)設(shè)的閾值(60%)時,監(jiān)控程序會做出自動擴(kuò)展的決策,新啟動一個“實(shí)例3”來加入原有的系統(tǒng)中。

主站蜘蛛池模板: 宜城市| 南康市| 夏津县| 泊头市| 获嘉县| 增城市| 乃东县| 仁布县| 宜君县| 沧源| 鄂托克旗| 望都县| 沧州市| 澄江县| 曲靖市| 吴桥县| 上饶县| 夏河县| 襄樊市| 洛南县| 洪泽县| 县级市| 宜昌市| 商水县| 怀仁县| 泗水县| 罗田县| 南郑县| 泽州县| 岚皋县| 彭水| 沙洋县| 雷山县| 新和县| 香港| 珠海市| 宁陕县| 潮州市| 资阳市| 屏山县| 平山县|