SpringBoot2搭建基礎架構——開源軟件誕生4

技術框架篇--第4篇

用日志記錄“開源軟件”的誕生

赤龍ERP開源地址:

點亮星標,感謝支持,加微信與開發者交流 kzca2000

碼云:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp



準備工作

搭建基礎框架前,一定要準備好開發環境。先安裝軟件(以我本地環境為例),包括:

1、IDE(Eclipse最新版)

2、JDK1.8

3、Tomcat8.5

4、MySQL8.0

5、Redis最新版

6、SVN、Git

安裝流程不做詳細說明。說幾個需要注意的地方:

(1)Tomcat安裝好后需要對server.xml做一些配置和優化(端口、應用、域名、NIO、線程池、SSL等)

(2)對JVM做必要的內存配置優化

(3)MySQL安裝時注意編碼UTF-8

(4)Redis需要配置密碼和持久化(AOF)

框架的基本要求

搭建應用的底層框架,總是要或多或少的根據情景考慮一些問題,而不能是框架和技術的簡單堆砌。那么搭建框架要滿足哪些要求呢?

(1)安全性:由于是信息化管理系統,使用的用戶是企業內部的職員和高管,那么對于安全性和權限的考慮就要提升一個層次了。比如:誰能訪問哪些功能、誰能做哪些操作,誰能看到什么數據、又使用什么方式可以更便捷的實現各種安全性的考慮。

(2)降低信息流的復雜性:簡單解釋一下,ERP系統是一個很特殊的系統,因為它是企業中復雜管理流程、業務流程、財務流程的實現。所以它有著嚴密的邏輯與流程,系統中幾乎沒有獨立的模塊或功能,系統內部各部分互相依賴的復雜程度難以想象。如何降低這些依賴關系的復雜度,就是框架中迫不及待解決的問題。

(3)提高開發效率:信息化系統開發時的一大特點就是代碼復用程度高,無論是重復的增刪改查,還是表單處理,設置是各種報表,太多的重復工作會浪費太多的時間。開發人員應該把工作集中在邏輯和算法上面,而不是這些簡單的復制粘貼修改上。

(4)靈活的可配置可擴展:信息化系統的另一個特色就是個性化需求非常高,即使對于一個簡單的流程,也可能出現多樣化的各種要求。這往往根據企業的管理情況而定。如何竭盡所能在減少客戶化開發的前提下,滿足更多的需求是我們要考慮的問題。

(5)降低學習成本和維護成本:由于這是一款開源軟件,我們要考慮的不能僅僅是高大上的技術使用,而是要能讓更多的開發者和使用者,可以快速部署,并進行個性化開發。無論在展示層、控制層、持久層,還是在各第三方組件的使用中都要盡量考慮到如何讓更多的人可以使用我們的軟件。

如何解決問題


針對以上的要求,我們如何設計系統,解決問題,并最終搭建滿足我們需求的底層框架呢?我們一起來嘗試摸索一下。

1、說到安全性,就離不開登陸、權限、加密這些場景。

(1)登陸我使用了cas,它是一個SSO框架,采用票據驗證機制保證了,認證的安全。

(2)授權我采用了shiro框架與cas無縫整合,根據三類權限的設置,保證了菜單、按鈕、數據的精細控制

(3)加密包括對HTTP頭的加密(SSL),對關鍵業務數據的加密(AES、SHA1)

2、降低信息流的復雜性,最核心的是如何梳理,如何切分業務,模塊之間如何互相調用。

(1)梳理和切分業務其實更多的是經驗問題,但有個通用的大原則,高內聚;也就是把關聯性極高的功能放在一起,而對外暴露必要的接口供調用即可。其中還要考慮到一些基礎數據的通用化設計。比如:組織信息、職員信息、主數據、數據字典等,單獨設計并對外提供有雙層緩存的接口。(其中也要考慮到緩存的更新策略)

(2)模塊間我用Maven父子項目做了劃分,也為直接的接口調用和REST風格的API調用做了不同方式的設計

3、如何提高開發效率,應該是我們認真思考的話題。因為這真的很重要。如果處理得當甚至會節省30%-40%的研發時間。

(1)代碼自動生成工具:我研發了一套可以自動生成Controller、Service、Dao、Model以及所有配置及注解的工具。當前這是基于我指定的代碼規范。只需要修改兩到三個配置項,即可一鍵在項目下生成我們所需的代碼。本來至少要編寫半小時的代碼,現在只需要10秒鐘。

(2)可復用的工具包:十幾年積累的所有工具類可提供快速的靜態調用方式

(3)抽絲剝繭,獨立的功能設計:很多常用的第三方組件或技術的處理方式,抽象出來,加以復用。比如:線程、Redis、JMS、Socket、Json、Groovy、Mongo等。

(4)多功能的AOP處理:基本思路是通過AOP及自定義注解靈活加入各種輔助處理功能。比如:方法緩存、自動set基礎字段值、日志處理、數據權限控制等。

(5)必要的通用功能:通過Spring提供的技術,實現異常處理、類型轉換、數據驗證、API請求攔截等各種處理要求。

4、可配置可擴展其實說起來簡單做起來難。可能很多軟件都是這么宣傳的,但真正做到的并不多。其實我認為主要做到如下幾點就可以了:

(1)字段的可擴展,即可以通過配置的方式增加輔助字段,并且能實現1對1結構,和1對多結構的兩種方式。

(2)流程的靈活處理。軟件往往設計上會固定某一主流程,只要設計上讓這一流程的組織不固定,而相對松散的實現即可。

(3)功能性模塊的高度可配:比如權限系統、報表系統、工作流、數據字典

5、最后一個是有關降低學習成本和維護成本的問題。我覺得這更多是因為要匹配開源的要求,開源的使用者多數是個人或小團體,這對于普及一款開源產品顯得尤為重要。怎么做呢?

(1)用最普及的技術、最少的技術種類、實現更多的需求。

(2)提供最簡單的配置文檔以實現程序部署。

對未來的考慮

為了考慮單體需求的激增,不得不應對高并發以及高可用的情景。所以現在技術選擇以及底層搭建時就一定要有所考量。當前框架一定要可以快速引入新技術并可以高效整合。我認為Springboot一定是Java語言當下是最優的選擇,也為SpringCloud的升級做了足夠準備。

當然其中還有很多要考慮的內容,比如:負載均衡、消息隊列、數據總線、讀寫分離、異步并發、降級限流等。在此不展開討論,如果有興趣可與開發者直接溝通。

后記

今天的日志寫的比較長,但還沒有包括很多中間件的優化和配置說明,為了給開源軟件的使用者簡化他們的部署工作,我會在后面附加一個技術補充文章。

希望您讀完本文可以幫助筆者進入【碼云】或【GitHub】點點星標。感謝大家的支持!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379