5款Java微服務開源框架
1.pig
開源地址: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,圖形化展示
2.zheng
開源地址:https://gitee.com/shuzheng/zheng
基於Spring+SpringMVC+Mybatis分散式敏捷開發系統架構,提供整套公共微服務服務模組:集中許可權管理(單點登入)、內容管理、支付中心、使用者管理(支援第三方登入)、微信平臺、儲存系統、配置中心、日誌分析、任務和通知等,支援服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
3.Cloud-Platform
開源地址:
https://gitee.com/minull/ace-security
Cloud-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的作為熔斷器,避免了服務之間的“雪崩”。
4.SpringBlade
開源地址:https://gitee.com/smallc/SpringBlade
SpringBlade 2.0 是一個基於 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技術,用於快速構建中大型系統的基礎框架。
主要特性&&變化
採用前後端分離的模式,前端單獨開源出一個框架: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的部署架構
專案分包明確,規範微服務的開發模式,使包與包之間的分工清晰。
5.Guns
開源地址:https://gitee.com/stylefeng/guns
Guns基於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類)。
相關文章
- TOP 13大最熱開源微服務Java框架微服務Java框架
- KIXEYE Chassis開源微服務框架微服務框架
- 用於微服務開發的 Java 框架微服務Java框架
- Oracle釋出開源的輕量級 Java 微服務框架 HelidonOracleJava微服務框架
- .net core 自帶分散式事務的微服務開源框架JMS分散式微服務框架
- Java輕量微服務框架:Java-microJava微服務框架
- 快速瞭解阿里微服務熱門開源分散式事務框架——Seata阿里微服務分散式框架
- 【開源】.net微服務開發引擎Anno開源啦微服務
- Java 微服務框架 Redkale 入門介紹Java微服務框架
- 騰訊雲原生一站式微服務管理框架 Femas 開源微服務框架
- 微服務、CQRS和eventsourcing開源資源微服務
- 微服務PaaS框架,RestCloud企業級開發框架微服務框架RESTCloud
- 最熱門的13個Java微服務框架Java微服務框架
- 基於微服務框架Micronaut和Eventuate Tram實現分散式事務的開源案例微服務框架分散式
- 分散式/開源框架/微服務/效能調優等應有盡有,這份Java全能筆記火了!分散式框架微服務Java筆記
- 微服務框架-dubbo整合nacos框架微服務框架
- Java微服務開發指南 -- 使用Spring Boot構建微服務Java微服務Spring Boot
- 淺析微服務框架微服務框架
- 微服務前端開發框架React-Admin微服務前端框架React
- Go-chassis 微服務開發框架系列(一)Go微服務框架
- net core 微服務 快速開發框架 Viper 限流微服務框架
- Java程式設計師必備:微服務+開源框架+架構基礎+高效能架構+設計模式Java程式設計師微服務框架架構設計模式
- 業界首個!騰訊雲原生一站式微服務管理框架Femas開源微服務框架
- 基於.NET CORE微服務框架 -surging的介紹和簡單示例 (開源)微服務框架
- go-zero:微服務框架Go微服務框架
- Go chassis 微服務開發框架實戰系列(二)Go微服務框架
- Solon 1.8.0 釋出,雲原生微服務開發框架微服務框架
- 開源.NET8.0小專案偽微服務框架(分散式、EFCore、Redis、RabbitMQ、Mysql等)微服務框架分散式RedisMQMySql
- Java面試寶典之開源框架!Java面試框架
- Java開源框架發展的遐想Java框架
- [開源] Golang 實現的分散式 WebSocket 微服務Golang分散式Web微服務
- 搞微服務用阿里開源的 Nacos 真香啊!微服務阿里
- dotnet core微服務框架Jimu ~ 會員授權微服務微服務框架
- dotnet core微服務框架Jimu ~ 會員註冊微服務微服務框架
- 微服務分散式事務解決方案-開源軟體seata微服務分散式
- 微服務分散式事務Saga框架微服務分散式框架
- 隨行付微服務前端開發框架React Admin微服務前端框架React
- 微服務容錯限流框架Hystrix微服務框架