Java項目框架搭建系列(Java學習路線)

前言:

已經工做4年,真是時間飛逝。前端

其實當你在一間公司工做一兩年以後,公司用到的開發框架的基本使用你應該都會了。java

你會根據一個現有項目A複製一下搭建出另一個相似框架的項目B,而後在項目B上進行業務邏輯開發。web

若是你更努力一點,你可能有去摸索一些配置的做用,一些問題的排查會更有經驗和本身的想法。redis

若是你好奇心更強一點,可能會去了解一些框架的原理,各個框架之間是怎麼相互協助工做的。本身可否從無到有將這些框架串聯起來。數據庫

想寫一系列這樣的文章:將Java項目開發過程當中的一些框架,如何一步步串聯起來,而且結合源碼探索其核心部分原理。以及項目從小項目演變到大項目的過程當中,須要開發框架以及結構變化。以及特定業務場景設計。具體概請見下文。json

大概使用的開發框架及工具:後端

基本工具:Eclipse、Maven、Tomcat緩存

前端:Jquery、Vue.js、 Elementtomcat

後臺核心框架:Spring、SpringMVC、MyBatis安全

後臺輔助框架:日誌框架Logback、安全框架Shiro、任務調度框架Quartz

分佈式框架:Dubbo、RabbitMQ、Redis…………..

除了這些框架還有一些特定業務場景,以及高擴展高可用的架構演變過程等等。 
主要分爲下面三個階段博客提綱。

階段一:集中式基本架構

1、基本工具:Eclipse、Maven、Tomcat(此篇不寫博客,關於Maven猿友可自行網上安裝教程及博客)

2、Spring介紹及探索:主要就是依賴注入以及AOP原理,Spring使用大多以配置爲主,所以從配置入手,結合源碼探索其原理。

3、SpringMVC:以實例入手,結合源碼探索其主要原理。

4、Mybatis:以實例入手,結合源碼以及分頁插件拓展探索其用法及原理。

5、日誌框架Logback:結合實例、配置、源碼瞭解其原理,並對Logback封裝,使得更加符合實際業務需求。

6、前端框架Vue.js+Element使用,Jquery默認猿友已經會用了。

7、安全框架Shiro:主要登陸及權限認證明例入手,探索其用法。

8、任務調度框架Quartz:實例+配置+源碼探索用法及基本原理。

9、異步線程池使用及業務場景。

10、數據庫事務實例及應用場景

11、ehcache本地緩存實例及應用場景。

之因此階段一叫集中式基本架構,是由於這種結構適合前端代碼,後臺代碼在一個工程,部署到一臺服務器上裏面。帶來的問題有:性能問題、工程十分臃腫、風險很大、很差迭代。

固然性能問題能夠經過集羣方式,就是部署到多臺機器上,而後根據用戶訪問的ip進行分流到不一樣機器響應。目前web項目大多采用這種作法。

可是一旦業務及功能模塊多了起來,須要快速迭代,必然要模塊拆分。所以必須採用分佈式架構。 
分佈式架構通常根據功能進行劃分模塊,以電商爲例:對外web端一個模塊、管理web端、商品後臺一個模塊、訂單支付後臺等一個模塊、用戶信息後臺一個模塊。各個模塊之間經過接口服務實時通訊,異步經過MQ方式通訊、緩存也須要使用分佈式緩存框架。

接下來咱們看下階段二的博客提綱。

階段二:高擴展、高性能、高可用、快速迭代分佈式架構

1、分佈式服務框架Dubbo:主要實例以及原理探索。

2、日誌流水透傳:讓同一個請求通過的多個模塊的日誌流水保持一致。

3、分佈式消息框架RabbitMQ:實例+配置+源碼理解其原理。

4、任務調度框架Quartz改造:將全部模塊的JOB任務集中管理,以服務調用形式觸發。

5、分佈式緩存框架Redis:瞭解其原理並規範使用,各個模塊定義系統碼,共享緩存內存資源,可是已係統碼隔離。

6、先後端分離:對性能以及用戶體驗較高的web模塊進行先後端分離,前端模塊所有爲靜態資源,部署待靜態資源服務器,與controller拆分開。

7、session共享:以前也提到根據功能劃分模塊,多個web模塊對外提供請求相應,那麼就會涉及session共享,一次登陸便可。主要採用tomcat-redis技術實現session共享。

8、OAuth2.0認證和受權:這是擴展外部合做渠道的畢竟之路,如受權給外部商戶獲取你的用戶信息。如微信公衆號就是這種作法,不少可使用微信登陸以及QQ登陸也是這種作法。

9、封裝經常使用的業務工具類:如批量導入導出,ftp上傳及下載文件、json處理等等。

10、將框架集成部分抽出造成一個基礎框架:這個很是有意義,能夠簡化配置,對框架升級等等。

階段三:適配大數據、高併發以及自動化要求(可能更偏向運維)

1、日誌監控,自動告警:將ERROR日誌經過郵件或短信方式發給對應的開發人員,能夠起到很好的提醒做用。

2、自動化部署以及持續集成:模塊多了,上線部署變得更加頻繁的時候,就須要簡化部署流程。

3、代理與負載均衡&集羣:根據階段二,通常web項目經過ip進行負載分流,後臺可使用Dubbo的負載均衡。

4、資源服務器搭建

5、數據讀寫分離

6、分庫分表

7、秒殺設計

8、非關係型數據庫使用

9、大數據工具的使用

我有一個微信公衆號,常常會分享一些Java技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「Java團長」或者「javatuanzhang」關注。

相關文章
相關標籤/搜索