章來源:加米谷大數據
目錄:
開源地址:https://gitee.com/log4j/pig
基于Spring Cloud、OAuth2.0、Vue的前后端分離的系統。 通用RBAC權限設計及其數據權限和分庫分表 支持服務限流、動態路由、灰度發布、 支持常見登錄方式, 多系統SSO登錄。
功能列表:
完善登錄:賬號密碼模式、短信驗證碼模式、社交賬號模式均整合Spring security oAuth
單點登錄:基于Srping security oAuth 提供單點登錄接口,方便其他系統對接
用戶管理:用戶是系統操作者,該功能主要完成系統用戶配置。
機構管理:配置系統組織機構,樹結構展現,可隨意調整上下級。
菜單管理:配置系統菜單,操作權限,按鈕權限標識等。
角色管理:角色菜單權限分配、設置角色按機構進行數據范圍權限劃分。
動態路由:基于zuul實現動態路由,后端可配置化。
灰度發布:自定義ribbon路由規則匹配多版本請求。
終端管理:動態配置oauth終端,后端可配置化。
字典管理:對系統中經常使用的一些較為固定的數據進行維護,如:是否等。
操作日志:系統正常操作日志記錄和查詢;系統異常信息日志記錄和查詢。
服務限流:多種維度的流量控制(服務、IP、用戶等)
消息總線:配置動態實時刷新
分庫分表:shardingdbc分庫分表策略
數據權限: 使用mybatis對原查詢做增強,業務代碼不用控制,即可實現。
文件系統: 支持FastDFS、七牛云,擴展API幾行代碼實現上傳下載
消息中心:短信、郵件模板發送,幾行代碼實現發送
聚合文檔:基于zuul實現 swagger各個模塊的實現
代碼生成:前后端代碼的生成,支持Vue
緩存管理:基于Cache Cloud 保證Redis 的高可用
服務監控: Spring Boot Admin
分布式任務調度: 基于elastic-job的分布式任務,zookeeper做調度中心
zipkin鏈路追蹤: 數據保存ELK,圖形化展示
pinpoint鏈路追蹤: 數據保存hbase,圖形化展示
開源地址:https://gitee.com/shuzheng/zheng
基于Spring+SpringMVC+Mybatis分布式敏捷開發系統架構,提供整套公共微服務服務模塊:集中權限管理(單點登錄)、內容管理、支付中心、用戶管理(支持第三方登錄)、微信平臺、存儲系統、配置中心、日志分析、任務和通知等,支持服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
開源地址:https://gitee.com/minull/ace-securityCloud-Platform
是國內首個基于Spring Cloud微服務化開發平臺,核心技術采用Spring Boot2以及Spring Cloud Gateway相關核心組件,前端采用vue-element-admin組件。具有統一授權、認證后臺管理系統,其中包含具備用戶管理、資源權限管理、網關API管理等多個模塊,支持多業務系統并行開發,可以作為后端服務的開發腳手架。代碼簡潔,架構清晰,適合學習和直接項目中使用。
架構摘要
服務鑒權通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。
監控利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用Hystrix Dashboard來實時查看接口的運行狀態和調用頻率等。
負載均衡將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的網關管控和負載均衡。其中擴展和借鑒國外項目的擴展基于JWT的Zuul限流插件,方面進行限流。
服務注冊與調用基于Consul來實現的服務注冊與調用,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。
熔斷機制因為采取了服務的分布,為了避免服務之間的調用“雪崩”,采用了Hystrix的作為熔斷器,避免了服務之間的“雪崩”。
開源地址:https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一個基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技術,用于快速構建中大型系統的基礎框架。和bootdo有相似之處。
主要特性&&變化
采用前后端分離的模式,前端單獨開源出一個框架:Sword,主要選型技術為React、Ant Design、Umi、Dva
后端采用SpringCloud全家桶,并同時對其基礎組件做了高度的封裝,單獨開源出一個框架:Blade-Tool
Blade-Tool已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重于業務開發
注冊中心選型Consul
部署使用Docker或K8s + Jenkins
使用Traefik進行反向代理
踩了踩Kong的坑,有個基本的使用方案,但不深入,因為涉及到OpenResty。
封裝了簡單的Secure模塊,采用JWT做Token認證,可拓展集成Redis等細顆粒度控制方案
在2.0誕生之前,已經穩定生產了近一年,經歷了從Camden -> Finchley的技術架構,也經歷了從fat jar -> docker -> k8s + jenkins的部署架構
項目分包明確,規范微服務的開發模式,使包與包之間的分工清晰。
開源地址:https://gitee.com/stylefeng/gunsGuns
基于Spring Boot 2,致力于做更簡潔的后臺管理系統,完美整合springmvc + shiro + mybatis-plus + beetl,Guns項目代碼簡潔,注釋豐富,上手容易,同時Guns包含許多基礎模塊(用戶管理,角色管理,部門管理,字典管理等10個模塊),可以直接作為一個后臺管理系統的腳手架!同時提供spring cloud版本!
Guns微服務版本
Guns的核心是roses-kernel項目https://gitee.com/stylefeng-Roses/roses-kernel,提供對spring cloud的支持。
Roses框架基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企業級的分布式和服務化解決方案,Roses擁有高效率的開發體驗,提供可靠消息最終一致性分布式事務解決方案,提供基于調用鏈的服務治理,提供可靠的服務異常定位方案(Log + Trace)等等,一個分布式框架不僅需要構建高效穩定的底層開發框架,更需要解決分布式帶來的種種挑戰!
管理系統功能
1.用戶管理 2.角色管理 3.部門管理 4.菜單管理 5.字典管理 6.業務日志 7.登錄日志 8.監控管理 9.通知管理 10.代碼生成(旗艦版目前還沒完成)
項目特點
基于SpringBoot,簡化了大量項目配置和maven依賴,讓您更專注于業務開發,獨特的分包方式,代碼多而不亂。
完善的日志記錄體系,可記錄登錄日志,業務操作日志(可記錄操作前和操作后的數據),異常日志到數據庫,通過@BussinessLog注解和LogObjectHolder.me().set()方法,業務操作日志可具體記錄哪個用戶,執行了哪些業務,修改了哪些數據,并且日志記錄為異步執行,詳情請見@BussinessLog注解和LogObjectHolder,LogManager,LogAop類。
利用beetl模板引擎對前臺頁面進行封裝和拆分,使臃腫的html代碼變得簡潔,更加易維護。
對常用js插件進行二次封裝,使js代碼變得簡潔,更加易維護,具體請見webapp/static/js/common文件夾內js代碼。
利用ehcache框架對經常調用的查詢進行緩存,提升運行速度,具體請見ConstantFactory類中@Cacheable標記的方法。
controller層采用map + warpper方式的返回結果,返回給前端更為靈活的數據,具體參見com.stylefeng.guns.modular.system.warpper包中具體類。
防止XSS攻擊,通過XssFilter類對所有的輸入的非法字符串進行過濾以及替換。
簡單可用的代碼生成體系,通過SimpleTemplateEngine可生成帶有主頁跳轉和增刪改查的通用控制器、html頁面以及相關的js,還可以生成Service和Dao,并且這些生成項都為可選的,通過ContextConfig下的一些列xxxSwitch開關,可靈活控制生成模板代碼,讓您把時間放在真正的業務上。
控制器層統一的異常攔截機制,利用@ControllerAdvice統一對異常攔截,具體見com.stylefeng.guns.core.aop.GlobalExceptionHandler類。
頁面統一的js key-value單例模式寫法,每個頁面生成一個唯一的全局變量,提高js的利用效率,并且有效防止多個人員開發引起的函數名/類名沖突,并且可以更好地去維護代碼。
業務日志記錄
日志記錄采用aop(LogAop類)方式對所有包含@BussinessLog注解的方法進行aop切入,會記錄下當前用戶執行了哪些操作(即@BussinessLog value屬性的內容),如果涉及到數據修改,會取當前http請求的所有requestParameters與LogObjectHolder類中緩存的Object對象的所有字段作比較(所以在編輯之前的獲取詳情接口中需要緩存被修改對象之前的字段信息),日志內容會異步存入數據庫中(通過ScheduledThreadPoolExecutor類)。
目中經常使用POI操作excel,當然poi有許多的局限性,如果項目難題,可以考慮一個新的工具MyExcel。MyExcel,是一個集導入、導出、加密Excel等多項功能的工具包。
特點:
可生成任意復雜表格:本工具使用迭代單元格方式進行excel繪制,可生成任意復雜度excel,自適應寬度、高度;
零學習成本:使用html作為模板,學習成本幾乎為零;
支持常用背景色、邊框、字體等樣式設置:具體參見文檔-樣式支持部分;
支持.xls、.xlsx、.csv:支持生成.xls、.xlsx后綴的Excel以及.csv文件;
支持公式導出:支持Excel模板中設置公式,降低服務端的計算量;
支持低內存SXSSF模式:支持低內存的SXSSF模式,可利用極低的內存生成.xlsx;
支持生產者消費者模式導出:支持生產者消費者模式導出,無需一次性獲取所有數據,分批獲取數據配合SXSSF模式實現真正意義上海量數據導出;
支持多種模板引擎:已內置Freemarker、Groovy、Beetl、Thymeleaf等常用模板引擎Excel構建器(詳情參見文檔Getting started),推薦使用Beetl模板引擎(Beetl文檔);
提供默認Excel構建器,直接輸出簡單Excel:無需編寫任何html,已內置默認模板,可直接根據POJO數據列表輸出;
支持一次生成多sheet:以table作為sheet單元,支持一份excel文檔中多sheet導出;
支持Excel容量設定:支持設定Excel容量,到達容量后自動新建Excel,可構建成zip壓縮包導出;
使用:
Maven
<dependency>
<groupId>com.github.liaochong</groupId>
<artifactId>myexcel</artifactId>
<version>3.4.1</version>
</dependency>
Gradle
compile group: 'com.github.liaochong', name: 'myexcel', version: '3.4.1'
Ivy
<dependency org="com.github.liaochong" name="myexcel" rev="3.4.1"/>
示例:
Excel/Csv import
更多示例與功能可以參看:
https://github.com/liaochong/myexcel/wiki
也可以下載代碼,學習,參考,項目地址:https://github.com/liaochong/myexcel/。
開源地址:
https://gitee.com/log4j/pig
基于Spring Cloud、OAuth2.0、Vue的前后端分離的系統。 通用RBAC權限設計及其數據權限和分庫分表 支持服務限流、動態路由、灰度發布、 支持常見登錄方式, 多系統SSO登錄。
功能列表:
完善登錄:賬號密碼模式、短信驗證碼模式、社交賬號模式均整合Spring security oAuth
單點登錄:基于Srping security oAuth 提供單點登錄接口,方便其他系統對接
用戶管理:用戶是系統操作者,該功能主要完成系統用戶配置。
機構管理:配置系統組織機構,樹結構展現,可隨意調整上下級。
菜單管理:配置系統菜單,操作權限,按鈕權限標識等。
角色管理:角色菜單權限分配、設置角色按機構進行數據范圍權限劃分。
動態路由:基于zuul實現動態路由,后端可配置化。
灰度發布:自定義ribbon路由規則匹配多版本請求。
終端管理:動態配置oauth終端,后端可配置化。
字典管理:對系統中經常使用的一些較為固定的數據進行維護,如:是否等。
操作日志:系統正常操作日志記錄和查詢;系統異常信息日志記錄和查詢。
服務限流:多種維度的流量控制(服務、IP、用戶等)
消息總線:配置動態實時刷新
分庫分表:shardingdbc分庫分表策略
數據權限: 使用mybatis對原查詢做增強,業務代碼不用控制,即可實現。
文件系統: 支持FastDFS、七牛云,擴展API幾行代碼實現上傳下載
消息中心:短信、郵件模板發送,幾行代碼實現發送
聚合文檔:基于zuul實現 swagger各個模塊的實現
代碼生成:前后端代碼的生成,支持Vue
緩存管理:基于Cache Cloud 保證Redis 的高可用
服務監控: Spring Boot Admin
分布式任務調度: 基于elastic-job的分布式任務,zookeeper做調度中心
zipkin鏈路追蹤: 數據保存ELK,圖形化展示
pinpoint鏈路追蹤: 數據保存hbase,圖形化展示
開源地址:
https://gitee.com/shuzheng/zheng
基于Spring+SpringMVC+Mybatis分布式敏捷開發系統架構,提供整套公共微服務服務模塊:集中權限管理(單點登錄)、內容管理、支付中心、用戶管理(支持第三方登錄)、微信平臺、存儲系統、配置中心、日志分析、任務和通知等,支持服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
開源地址:
https://gitee.com/minull/ace-securityCloud-Platform
是國內首個基于Spring Cloud微服務化開發平臺,核心技術采用Spring Boot2以及Spring Cloud Gateway相關核心組件,前端采用vue-element-admin組件。具有統一授權、認證后臺管理系統,其中包含具備用戶管理、資源權限管理、網關API管理等多個模塊,支持多業務系統并行開發,可以作為后端服務的開發腳手架。代碼簡潔,架構清晰,適合學習和直接項目中使用。
架構摘要
服務鑒權通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。
監控利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用Hystrix Dashboard來實時查看接口的運行狀態和調用頻率等。
負載均衡將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的網關管控和負載均衡。其中擴展和借鑒國外項目的擴展基于JWT的Zuul限流插件,方面進行限流。
服務注冊與調用基于Consul來實現的服務注冊與調用,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。
熔斷機制因為采取了服務的分布,為了避免服務之間的調用“雪崩”,采用了Hystrix的作為熔斷器,避免了服務之間的“雪崩”。
開源地址:
https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一個基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技術,用于快速構建中大型系統的基礎框架。和bootdo有相似之處。
主要特性&&變化
采用前后端分離的模式,前端單獨開源出一個框架:Sword,主要選型技術為React、Ant Design、Umi、Dva
后端采用SpringCloud全家桶,并同時對其基礎組件做了高度的封裝,單獨開源出一個框架:Blade-Tool
Blade-Tool已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重于業務開發
注冊中心選型Consul
部署使用Docker或K8s + Jenkins
使用Traefik進行反向代理
踩了踩Kong的坑,有個基本的使用方案,但不深入,因為涉及到OpenResty。
封裝了簡單的Secure模塊,采用JWT做Token認證,可拓展集成Redis等細顆粒度控制方案
在2.0誕生之前,已經穩定生產了近一年,經歷了從Camden -> Finchley的技術架構,也經歷了從fat jar -> docker -> k8s + jenkins的部署架構
項目分包明確,規范微服務的開發模式,使包與包之間的分工清晰。
開源地址:
https://gitee.com/stylefeng/gunsGuns
基于Spring Boot 2,致力于做更簡潔的后臺管理系統,完美整合springmvc + shiro + mybatis-plus + beetl,Guns項目代碼簡潔,注釋豐富,上手容易,同時Guns包含許多基礎模塊(用戶管理,角色管理,部門管理,字典管理等10個模塊),可以直接作為一個后臺管理系統的腳手架!同時提供spring cloud版本!
Guns微服務版本
Guns的核心是roses-kernel項目
https://gitee.com/stylefeng-Roses/roses-kernel,提供對spring cloud的支持。
Roses框架基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企業級的分布式和服務化解決方案,Roses擁有高效率的開發體驗,提供可靠消息最終一致性分布式事務解決方案,提供基于調用鏈的服務治理,提供可靠的服務異常定位方案(Log + Trace)等等,一個分布式框架不僅需要構建高效穩定的底層開發框架,更需要解決分布式帶來的種種挑戰!
管理系統功能
1.用戶管理 2.角色管理 3.部門管理 4.菜單管理 5.字典管理 6.業務日志 7.登錄日志 8.監控管理 9.通知管理 10.代碼生成(旗艦版目前還沒完成)
項目特點
基于SpringBoot,簡化了大量項目配置和maven依賴,讓您更專注于業務開發,獨特的分包方式,代碼多而不亂。
完善的日志記錄體系,可記錄登錄日志,業務操作日志(可記錄操作前和操作后的數據),異常日志到數據庫,通過@BussinessLog注解和LogObjectHolder.me().set()方法,業務操作日志可具體記錄哪個用戶,執行了哪些業務,修改了哪些數據,并且日志記錄為異步執行,詳情請見@BussinessLog注解和LogObjectHolder,LogManager,LogAop類。
利用beetl模板引擎對前臺頁面進行封裝和拆分,使臃腫的html代碼變得簡潔,更加易維護。
對常用js插件進行二次封裝,使js代碼變得簡潔,更加易維護,具體請見webapp/static/js/common文件夾內js代碼。
利用ehcache框架對經常調用的查詢進行緩存,提升運行速度,具體請見ConstantFactory類中@Cacheable標記的方法。
controller層采用map + warpper方式的返回結果,返回給前端更為靈活的數據,具體參見
com.stylefeng.guns.modular.system.warpper包中具體類。
防止XSS攻擊,通過XssFilter類對所有的輸入的非法字符串進行過濾以及替換。
簡單可用的代碼生成體系,通過SimpleTemplateEngine可生成帶有主頁跳轉和增刪改查的通用控制器、html頁面以及相關的js,還可以生成Service和Dao,并且這些生成項都為可選的,通過ContextConfig下的一些列xxxSwitch開關,可靈活控制生成模板代碼,讓您把時間放在真正的業務上。
控制器層統一的異常攔截機制,利用@ControllerAdvice統一對異常攔截,具體見
com.stylefeng.guns.core.aop.GlobalExceptionHandler類。
頁面統一的js key-value單例模式寫法,每個頁面生成一個唯一的全局變量,提高js的利用效率,并且有效防止多個人員開發引起的函數名/類名沖突,并且可以更好地去維護代碼。
業務日志記錄
日志記錄采用aop(LogAop類)方式對所有包含@BussinessLog注解的方法進行aop切入,會記錄下當前用戶執行了哪些操作(即@BussinessLog value屬性的內容),如果涉及到數據修改,會取當前http請求的所有requestParameters與LogObjectHolder類中緩存的Object對象的所有字段作比較(所以在編輯之前的獲取詳情接口中需要緩存被修改對象之前的字段信息),日志內容會異步存入數據庫中(通過
ScheduledThreadPoolExecutor類)。
感謝大家的關注和支持,歡迎各位道友留言評論。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。