國內(nèi)比較火的5款Java微服務(wù)開源項(xiàng)目
目錄:
- 1.pig
- 2.zheng
- 3.Cloud-Platform
- 4.SpringBlade
- 5.Guns
一、 pig
開源地址:https://gitee.com/log4j/pig
基于Spring Cloud、OAuth2.0、Vue的前后端分離的系統(tǒng)。 通用RBAC權(quán)限設(shè)計(jì)及其數(shù)據(jù)權(quán)限和分庫分表 支持服務(wù)限流、動(dòng)態(tài)路由、灰度發(fā)布、 支持常見登錄方式, 多系統(tǒng)SSO登錄。

功能列表:
完善登錄:賬號(hào)密碼模式、短信驗(yàn)證碼模式、社交賬號(hào)模式均整合Spring security oAuth
單點(diǎn)登錄:基于Srping security oAuth 提供單點(diǎn)登錄接口,方便其他系統(tǒng)對(duì)接
用戶管理:用戶是系統(tǒng)操作者,該功能主要完成系統(tǒng)用戶配置。
機(jī)構(gòu)管理:配置系統(tǒng)組織機(jī)構(gòu),樹結(jié)構(gòu)展現(xiàn),可隨意調(diào)整上下級(jí)。
菜單管理:配置系統(tǒng)菜單,操作權(quán)限,按鈕權(quán)限標(biāo)識(shí)等。
角色管理:角色菜單權(quán)限分配、設(shè)置角色按機(jī)構(gòu)進(jìn)行數(shù)據(jù)范圍權(quán)限劃分。
動(dòng)態(tài)路由:基于zuul實(shí)現(xiàn)動(dòng)態(tài)路由,后端可配置化。
灰度發(fā)布:自定義ribbon路由規(guī)則匹配多版本請(qǐng)求。
終端管理:動(dòng)態(tài)配置oauth終端,后端可配置化。
字典管理:對(duì)系統(tǒng)中經(jīng)常使用的一些較為固定的數(shù)據(jù)進(jìn)行維護(hù),如:是否等。
操作日志:系統(tǒng)正常操作日志記錄和查詢;系統(tǒng)異常信息日志記錄和查詢。
服務(wù)限流:多種維度的流量控制(服務(wù)、IP、用戶等)
消息總線:配置動(dòng)態(tài)實(shí)時(shí)刷新
分庫分表:shardingdbc分庫分表策略
數(shù)據(jù)權(quán)限: 使用mybatis對(duì)原查詢做增強(qiáng),業(yè)務(wù)代碼不用控制,即可實(shí)現(xiàn)。
文件系統(tǒng): 支持FastDFS、七牛云,擴(kuò)展API幾行代碼實(shí)現(xiàn)上傳下載
消息中心:短信、郵件模板發(fā)送,幾行代碼實(shí)現(xiàn)發(fā)送
聚合文檔:基于zuul實(shí)現(xiàn) swagger各個(gè)模塊的實(shí)現(xiàn)
代碼生成:前后端代碼的生成,支持Vue
緩存管理:基于Cache Cloud 保證Redis 的高可用
服務(wù)監(jiān)控: Spring Boot Admin
分布式任務(wù)調(diào)度: 基于elastic-job的分布式任務(wù),zookeeper做調(diào)度中心
zipkin鏈路追蹤: 數(shù)據(jù)保存ELK,圖形化展示
pinpoint鏈路追蹤: 數(shù)據(jù)保存hbase,圖形化展示
二、zheng
開源地址:https://gitee.com/shuzheng/zheng
基于Spring+SpringMVC+Mybatis分布式敏捷開發(fā)系統(tǒng)架構(gòu),提供整套公共微服務(wù)服務(wù)模塊:集中權(quán)限管理(單點(diǎn)登錄)、內(nèi)容管理、支付中心、用戶管理(支持第三方登錄)、微信平臺(tái)、存儲(chǔ)系統(tǒng)、配置中心、日志分析、任務(wù)和通知等,支持服務(wù)治理、監(jiān)控和追蹤,努力為中小型企業(yè)打造全方位J2EE企業(yè)級(jí)開發(fā)解決方案。

三 、Cloud-Platform
開源地址:https://gitee.com/minull/ace-securityCloud-Platform
是國內(nèi)首個(gè)基于Spring Cloud微服務(wù)化開發(fā)平臺(tái),核心技術(shù)采用Spring Boot2以及Spring Cloud Gateway相關(guān)核心組件,前端采用vue-element-admin組件。具有統(tǒng)一授權(quán)、認(rèn)證后臺(tái)管理系統(tǒng),其中包含具備用戶管理、資源權(quán)限管理、網(wǎng)關(guān)API管理等多個(gè)模塊,支持多業(yè)務(wù)系統(tǒng)并行開發(fā),可以作為后端服務(wù)的開發(fā)腳手架。代碼簡(jiǎn)潔,架構(gòu)清晰,適合學(xué)習(xí)和直接項(xiàng)目中使用。

架構(gòu)摘要
服務(wù)鑒權(quán)通過JWT的方式來加強(qiáng)服務(wù)之間調(diào)度的權(quán)限驗(yàn)證,保證內(nèi)部服務(wù)的安全性。
監(jiān)控利用Spring Boot Admin 來監(jiān)控各個(gè)獨(dú)立Service的運(yùn)行狀態(tài);利用Hystrix Dashboard來實(shí)時(shí)查看接口的運(yùn)行狀態(tài)和調(diào)用頻率等。
負(fù)載均衡將服務(wù)保留的rest進(jìn)行代理和網(wǎng)關(guān)控制,除了平常經(jīng)常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進(jìn)行正常的網(wǎng)關(guān)管控和負(fù)載均衡。其中擴(kuò)展和借鑒國外項(xiàng)目的擴(kuò)展基于JWT的Zuul限流插件,方面進(jìn)行限流。
服務(wù)注冊(cè)與調(diào)用基于Consul來實(shí)現(xiàn)的服務(wù)注冊(cè)與調(diào)用,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請(qǐng)求遠(yuǎn)程服務(wù)時(shí)能與調(diào)用本地方法一樣的編碼體驗(yàn),開發(fā)者完全感知不到這是遠(yuǎn)程方法,更感知不到這是個(gè)HTTP請(qǐng)求。
熔斷機(jī)制因?yàn)椴扇×朔?wù)的分布,為了避免服務(wù)之間的調(diào)用“雪崩”,采用了Hystrix的作為熔斷器,避免了服務(wù)之間的“雪崩”。
四 、SpringBlade
開源地址:https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一個(gè)基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技術(shù),用于快速構(gòu)建中大型系統(tǒng)的基礎(chǔ)框架。和bootdo有相似之處。

主要特性&&變化
采用前后端分離的模式,前端單獨(dú)開源出一個(gè)框架:Sword,主要選型技術(shù)為React、Ant Design、Umi、Dva
后端采用SpringCloud全家桶,并同時(shí)對(duì)其基礎(chǔ)組件做了高度的封裝,單獨(dú)開源出一個(gè)框架:Blade-Tool
Blade-Tool已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重于業(yè)務(wù)開發(fā)
注冊(cè)中心選型Consul
部署使用Docker或K8s + Jenkins
使用Traefik進(jìn)行反向代理
踩了踩Kong的坑,有個(gè)基本的使用方案,但不深入,因?yàn)樯婕暗絆penResty。
封裝了簡(jiǎn)單的Secure模塊,采用JWT做Token認(rèn)證,可拓展集成Redis等細(xì)顆粒度控制方案
在2.0誕生之前,已經(jīng)穩(wěn)定生產(chǎn)了近一年,經(jīng)歷了從Camden -> Finchley的技術(shù)架構(gòu),也經(jīng)歷了從fat jar -> docker -> k8s + jenkins的部署架構(gòu)
項(xiàng)目分包明確,規(guī)范微服務(wù)的開發(fā)模式,使包與包之間的分工清晰。
五 、Guns
開源地址:https://gitee.com/stylefeng/gunsGuns
基于Spring Boot 2,致力于做更簡(jiǎn)潔的后臺(tái)管理系統(tǒng),完美整合springmvc + shiro + mybatis-plus + beetl,Guns項(xiàng)目代碼簡(jiǎn)潔,注釋豐富,上手容易,同時(shí)Guns包含許多基礎(chǔ)模塊(用戶管理,角色管理,部門管理,字典管理等10個(gè)模塊),可以直接作為一個(gè)后臺(tái)管理系統(tǒng)的腳手架!同時(shí)提供spring cloud版本!

Guns微服務(wù)版本
Guns的核心是roses-kernel項(xiàng)目https://gitee.com/stylefeng-Roses/roses-kernel,提供對(duì)spring cloud的支持。
Roses框架基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企業(yè)級(jí)的分布式和服務(wù)化解決方案,Roses擁有高效率的開發(fā)體驗(yàn),提供可靠消息最終一致性分布式事務(wù)解決方案,提供基于調(diào)用鏈的服務(wù)治理,提供可靠的服務(wù)異常定位方案(Log + Trace)等等,一個(gè)分布式框架不僅需要構(gòu)建高效穩(wěn)定的底層開發(fā)框架,更需要解決分布式帶來的種種挑戰(zhàn)!
管理系統(tǒng)功能
1.用戶管理 2.角色管理 3.部門管理 4.菜單管理 5.字典管理 6.業(yè)務(wù)日志 7.登錄日志 8.監(jiān)控管理 9.通知管理 10.代碼生成(旗艦版目前還沒完成)
項(xiàng)目特點(diǎn)
基于SpringBoot,簡(jiǎn)化了大量項(xiàng)目配置和maven依賴,讓您更專注于業(yè)務(wù)開發(fā),獨(dú)特的分包方式,代碼多而不亂。
完善的日志記錄體系,可記錄登錄日志,業(yè)務(wù)操作日志(可記錄操作前和操作后的數(shù)據(jù)),異常日志到數(shù)據(jù)庫,通過@BussinessLog注解和LogObjectHolder.me().set()方法,業(yè)務(wù)操作日志可具體記錄哪個(gè)用戶,執(zhí)行了哪些業(yè)務(wù),修改了哪些數(shù)據(jù),并且日志記錄為異步執(zhí)行,詳情請(qǐng)見@BussinessLog注解和LogObjectHolder,LogManager,LogAop類。
利用beetl模板引擎對(duì)前臺(tái)頁面進(jìn)行封裝和拆分,使臃腫的html代碼變得簡(jiǎn)潔,更加易維護(hù)。
對(duì)常用js插件進(jìn)行二次封裝,使js代碼變得簡(jiǎn)潔,更加易維護(hù),具體請(qǐng)見webapp/static/js/common文件夾內(nèi)js代碼。
利用ehcache框架對(duì)經(jīng)常調(diào)用的查詢進(jìn)行緩存,提升運(yùn)行速度,具體請(qǐng)見ConstantFactory類中@Cacheable標(biāo)記的方法。
controller層采用map + warpper方式的返回結(jié)果,返回給前端更為靈活的數(shù)據(jù),具體參見com.stylefeng.guns.modular.system.warpper包中具體類。
防止XSS攻擊,通過XssFilter類對(duì)所有的輸入的非法字符串進(jìn)行過濾以及替換。
簡(jiǎn)單可用的代碼生成體系,通過SimpleTemplateEngine可生成帶有主頁跳轉(zhuǎn)和增刪改查的通用控制器、html頁面以及相關(guān)的js,還可以生成Service和Dao,并且這些生成項(xiàng)都為可選的,通過ContextConfig下的一些列xxxSwitch開關(guān),可靈活控制生成模板代碼,讓您把時(shí)間放在真正的業(yè)務(wù)上。
控制器層統(tǒng)一的異常攔截機(jī)制,利用@ControllerAdvice統(tǒng)一對(duì)異常攔截,具體見com.stylefeng.guns.core.aop.GlobalExceptionHandler類。
頁面統(tǒng)一的js key-value單例模式寫法,每個(gè)頁面生成一個(gè)唯一的全局變量,提高js的利用效率,并且有效防止多個(gè)人員開發(fā)引起的函數(shù)名/類名沖突,并且可以更好地去維護(hù)代碼。
業(yè)務(wù)日志記錄
日志記錄采用aop(LogAop類)方式對(duì)所有包含@BussinessLog注解的方法進(jìn)行aop切入,會(huì)記錄下當(dāng)前用戶執(zhí)行了哪些操作(即@BussinessLog value屬性的內(nèi)容),如果涉及到數(shù)據(jù)修改,會(huì)取當(dāng)前http請(qǐng)求的所有requestParameters與LogObjectHolder類中緩存的Object對(duì)象的所有字段作比較(所以在編輯之前的獲取詳情接口中需要緩存被修改對(duì)象之前的字段信息),日志內(nèi)容會(huì)異步存入數(shù)據(jù)庫中(通過ScheduledThreadPoolExecutor類)。