已經工做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」關注。