基于SpringCloud(Hoxton.SR3) + SpringBoot(2.2.6.RELEASE) 的 SaaS型微服務(wù)腳手架,具備用戶管理、資源權(quán)限管理、網(wǎng)關(guān)統(tǒng)一鑒權(quán)、Xss防跨站攻擊、自動(dòng)代碼生成、多存儲(chǔ)系統(tǒng)、分布式事務(wù)、分布式定時(shí)任務(wù)等多個(gè)模塊,支持多業(yè)務(wù)系統(tǒng)并行開(kāi)發(fā), 支持多服務(wù)并行開(kāi)發(fā),可以作為后端服務(wù)的開(kāi)發(fā)腳手架。代碼簡(jiǎn)潔,架構(gòu)清晰,非常適合學(xué)習(xí)使用。核心技術(shù)采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Nacos、Sentinel、 RabbitMQ、FastDFS等主要框架和中間件。
希望能努力打造一套從 SaaS基礎(chǔ)框架 - 分布式微服務(wù)架構(gòu) - 持續(xù)集成 - 系統(tǒng)監(jiān)測(cè) 的解決方案。本項(xiàng)目旨在實(shí)現(xiàn)基礎(chǔ)能力,不涉及具體業(yè)務(wù)。
模式介紹
本項(xiàng)目可以通過(guò)配置,輕松切換項(xiàng)目的 租戶模式。
部署方面, 可以采用以下幾種方式:
- IDEA 啟動(dòng)
- jar部署
- Docker部署
- k8s部署
- jenkins自動(dòng)化部署
項(xiàng)目架構(gòu)圖
技術(shù)棧/版本介紹:
- 所涉及的相關(guān)的技術(shù)有:JSON序列化:Jackson消息隊(duì)列:RabbitMQ緩存:redis緩存框架:J2Cache數(shù)據(jù)庫(kù): MySQL 5.7.9 或者 MySQL 8.0.19定時(shí)器:采用xxl-jobs項(xiàng)目進(jìn)行二次改造前端:vue持久層框架: Mybatis-plus代碼生成器:基于Mybatis-plus-generator自定義API網(wǎng)關(guān):Gateway服務(wù)注冊(cè)與發(fā)現(xiàn): Nacos服務(wù)消費(fèi):OpenFeign負(fù)載均衡:Ribbon配置中心:Nacos服務(wù)熔斷:Hystrix項(xiàng)目構(gòu)建:Maven 3.3分布式事務(wù): seata分布式系統(tǒng)的流量防衛(wèi)兵: Sentinel監(jiān)控: spring-boot-admin 2.2.0鏈路調(diào)用跟蹤: zipkin 2.19.2文件服務(wù)器:FastDFS 5.0.5/阿里云OSS/本地存儲(chǔ)Nginx
- 部署方面:服務(wù)器:centosJenkinsDocker 18.09Kubernetes 1.12
本代碼采用 Intellij IDEA(2018.1 EAP+) 來(lái)編寫(xiě),但源碼與具體的 IDE 無(wú)關(guān)。
PS: Lombok版本過(guò)低會(huì)導(dǎo)致枚舉類(lèi)型的參數(shù)無(wú)法正確獲取參數(shù),經(jīng)過(guò)調(diào)試發(fā)現(xiàn)因?yàn)榘姹径嗟秃螅瑢?dǎo)致EnumDeserializer的 Object obj = p.getCurrentValue();取的值為空。
項(xiàng)目截圖:
源碼以及全部上傳完畢: