1. 程式人生 > >Java項目框架搭建系列(Java學習路線)

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

Java 編程語言

前言:

已經工作4年,真是時間飛逝。

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

你會根據一個現有項目A復制一下搭建出另外一個類似框架的項目B,然後在項目B上進行業務邏輯開發。

如果你更努力一點,你可能有去摸索一些配置的作用,一些問題的排查會更有經驗和自己的想法。

如果你好奇心更強一點,可能會去了解一些框架的原理,各個框架之間是怎麽相互協助工作的。自己能否從無到有將這些框架串聯起來。

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

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

基本工具:Eclipse、Maven、Tomcat

前端:Jquery、Vue.js、 Element

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

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

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

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

階段一:集中式基本架構

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

二、Spring介紹及探索:主要就是依賴註入以及AOP原理,Spring使用大多以配置為主,因此從配置入手,結合源碼探索其原理。

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

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

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

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

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

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

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

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

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

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

當然性能問題可以通過集群方式,就是部署到多臺機器上,然後根據用戶訪問的ip進行分流到不同機器響應。目前web項目大多采用這種做法。

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

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

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

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

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

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

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

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

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

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

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

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

十、將框架集成部分抽出形成一個基礎框架:這個非常有意義,可以簡化配置,對框架升級等等。

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

一、日誌監控,自動告警:將ERROR日誌通過郵件或短信方式發給對應的開發人員,可以起到很好的提醒作用。

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

三、代理與負載均衡&集群:根據階段二,一般web項目通過ip進行負載分流,後臺可以使用Dubbo的負載均衡。

四、資源服務器搭建

五、數據讀寫分離

六、分庫分表

七、秒殺設計

八、非關系型數據庫使用

九、大數據工具的使用

我有一個微信公眾號,經常會分享一些Java技術相關的幹貨;如果你喜歡我的分享,可以用微信搜索“Java團長”或者“javatuanzhang”關註。

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