1, 刪除 原服務表以及相關代碼,重新思考系統中 API 接口的實現方案。
2,新增 系統api接口表、應用-系統api 關聯表 以及相關接口, 用於外部應用的api授權
3,修改 應用表相關欄位,並重新生成代碼
4,新增 zuihou-scan-starter 起步依賴模塊,實現自動掃描服務的所有api接口, 並提供2種遠程調用權限服務持久化的方式(feign or rabbitmq)
5,升級 swagger-bootstrap-ui 1.9.6 為 knife4j 2.0.0
6,兄弟項目:zuihou-admin-boot 完成權限、消息、文件服務的代碼合併,並改在原來的攔截器,實現網關過濾器的解析token功能,並成功對接現有的前端項目。
基於Eureka來實現的服務註冊與調用,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。
通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。
將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和rebbion,可以幫我們進行正常的網關管控和負載均衡。其中擴展和借鑑國外項目的擴展基於JWT的Zuul限流插件,方面進行限流。
因為採取了服務的分布,為了避免服務之間的調用「雪崩」,採用了Hystrix的作為熔斷器,避免了服務之間的「雪崩」。
利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用turbine來實時查看接口的運行狀態和調用頻率;通過Zipkin來查看各個服務之間的調用鏈等。
利用基於Mybatis的DataScopeInterceptor攔截器實現了簡單的數據權限
使用Mybatis攔截器實現對所有SQL的攔截,修改默認的Schema,從而實現多租戶數據隔離的目的。
採用J2Cache操作緩存,第一級緩存使用內存(Caffeine),第二級緩存使用 Redis。 由於大量的緩存讀取會導致 L2 的網絡成為整個系統的瓶頸,因此 L1 的目標是降低對 L2 的讀取次數。 該緩存框架主要用於集群環境中。單機也可使用,用於避免應用重啟導致的緩存冷啟動後對後端業務的衝擊。
採用Dozer組件來對 DTO、DO、PO等對象的優化轉換
嚴謹的表單驗證通常需要 前端+後端同時驗證, 但傳統的項目,均只能前後端各做一次檢驗, 後期規則變更,又得前後端同時修改。 故在`hibernate-validator`的基礎上封裝了`zuihou-validator-starter`起步依賴,提供一個通用接口,可以獲取需要校驗表單的規則,然後前端使用後端返回的規則, 以後若規則改變,只需要後端修改即可。
由於原生swagger-ui某些功能支持不夠友好,故採用了國內開源的`swagger-bootstrap-ui`,並製作了stater,方便springboot用戶使用。
基於Mybatis-plus-generator自定義了一套代碼生成器, 通過配置資料庫欄位的注釋,自動生成枚舉類、數據字典註解、SaveDTO、UpdateDTO、表單驗證規則註解、Swagger註解等。
基於xxl-jobs進行了功能增強。(如:指定時間發送任務、執行器和調度器合併項目、多數據源)
請切換分支進行查看
前端採用webupload.js、後端採用NIO實現了大文件斷點分片續傳,啟動Eureka、Zuul、File服務後,直接打開docs/chunkUploadDemo/demo.html即可進行測試。 經測試,本地限制堆棧最大內存128M啟動File服務,5分鐘內能成功上傳4.6G+的大文件,正式服耗時則會受到用戶帶寬和伺服器帶寬的影響,時間比較長。
集成了阿里的分布式事務中間件:seata,以 **高效** 並且對業務 **0侵入** 的方式,解決 微服務 場景下面臨的分布式事務問題。
微服務後端 代碼:
[gitee] https://gitee.com/zuihou111/zuihou-admin-cloud /[github] https://github.com/zuihou/zuihou-admin-cloud
租戶系統 代碼:
[gitee] https://gitee.com/zuihou111/zuihou-ui / [github] https://github.com/zuihou/zuihou-ui
開發&運營管理系統 代碼:
[gitee] https://gitee.com/zuihou111/zuihou-admin-ui / [github] https://github.com/zuihou/zuihou-admin-ui
[代碼生成器] https://github.com/zuihou/zuihou-generator
[租戶系統演示環境] http://tangyh.top:10000/zuihou-ui/
平臺管理員帳號/密碼: zuihou/zuihou
普通用戶帳號/密碼: test/zuiou
[開發&運營平臺演示環境] http://tangyh.top:180/zuihou-admin-ui/
帳號/密碼: demoAdmin/zuihou