<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          zuihou-admin-cloud微服務(wù)腳手架

          聯(lián)合創(chuàng)作 · 2023-09-20 03:06

          本項(xiàng)目是基于SpringCloud + SpringBoot 的 SaaS型微服務(wù)腳手架,具備用戶(hù)管理、資源權(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í)際項(xiàng)目中使用。核心技術(shù)采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Sentinel、RabbitMQ、FastDFS等主要框架和中間件。

          希望能努力打造一套 基礎(chǔ)開(kāi)發(fā)框架 - 分布式微服務(wù)架構(gòu) - 持續(xù)集成 - 自動(dòng)化部署 - 系統(tǒng)監(jiān)測(cè) 的解決方案。

          另本項(xiàng)目旨在實(shí)現(xiàn)基礎(chǔ)能力,不涉及具體業(yè)務(wù),項(xiàng)目中很多配置都嚴(yán)格按照開(kāi)發(fā)+生產(chǎn)級(jí)動(dòng)態(tài)切換的設(shè)計(jì)思路,所以很多配置比較繞,需要對(duì)框架有一定的了解才能理解,努力達(dá)到:開(kāi)發(fā)環(huán)境效率第一、生產(chǎn)環(huán)境的安全&性能第一!。

           

          租戶(hù)模式: 

          她既是一套SaaS基礎(chǔ)開(kāi)發(fā)平臺(tái),也是一套非SaaS基礎(chǔ)開(kāi)發(fā)平臺(tái),一套代碼,實(shí)現(xiàn)4種租戶(hù)模式,只需要對(duì)配置文件做一個(gè)改動(dòng),既能實(shí)現(xiàn)4中模式的

          租戶(hù)模式 描述 優(yōu)點(diǎn) 缺點(diǎn) 分布式事務(wù)
          NONE(非租戶(hù)模式)  沒(méi)有租戶(hù) 簡(jiǎn)單、適合獨(dú)立系統(tǒng) 缺少租戶(hù)系統(tǒng)的便利性 支持
          COLUMN(字段模式) 租戶(hù)共用一個(gè)數(shù)據(jù)庫(kù),在業(yè)務(wù)表中增加字段來(lái)區(qū)分   簡(jiǎn)單、不復(fù)雜、開(kāi)發(fā)無(wú)感知  數(shù)據(jù)隔離性差、安全性差、數(shù)據(jù)備份和恢復(fù)困難 支持
          SCHEMA(獨(dú)立schema)  每個(gè)租戶(hù)獨(dú)立一個(gè) 數(shù)據(jù)庫(kù)(schema),執(zhí)行sql時(shí),動(dòng)態(tài)在表名前增加schema 簡(jiǎn)單、開(kāi)發(fā)無(wú)感知、數(shù)據(jù)隔離性好 配置文件中必須配置數(shù)據(jù)庫(kù)的root賬號(hào)、不支持復(fù)雜sql和 sql嵌套自定義函數(shù) 支持
          DATASOURCE(獨(dú)立數(shù)據(jù)源)  每個(gè)租戶(hù)獨(dú)立一個(gè) 數(shù)據(jù)庫(kù)(數(shù)據(jù)源),執(zhí)行代碼時(shí),動(dòng)態(tài)切換數(shù)據(jù)源 可獨(dú)立部署數(shù)據(jù)庫(kù),數(shù)據(jù)隔離性好、擴(kuò)展性高、故障影響小 相對(duì)復(fù)雜、開(kāi)發(fā)需要注意切換數(shù)據(jù)源時(shí)的事務(wù)問(wèn)題、需要較多的數(shù)據(jù)庫(kù) 支持

          功能點(diǎn)介紹:

           服務(wù)鑒權(quán):

          通過(guò)JWT的方式來(lái)加強(qiáng)服務(wù)之間調(diào)度的權(quán)限驗(yàn)證,保證內(nèi)部服務(wù)的安全性。

          監(jiān)控:

          利用Spring Boot Admin 來(lái)監(jiān)控各個(gè)獨(dú)立Service的運(yùn)行狀態(tài);利用turbine來(lái)實(shí)時(shí)查看接口的運(yùn)行狀態(tài)和調(diào)用頻率;通過(guò)Zipkin來(lái)查看各個(gè)服務(wù)之間的調(diào)用鏈等。

          數(shù)據(jù)權(quán)限:

          利用基于Mybatis的DataScopeInterceptor攔截器實(shí)現(xiàn)了簡(jiǎn)單的數(shù)據(jù)權(quán)限

          SaaS的無(wú)感解決方案:

          使用Mybatis攔截器實(shí)現(xiàn)對(duì)所有SQL的攔截,COLUMN模式動(dòng)態(tài)拼接租戶(hù)編碼,SCHEMA模式修改默認(rèn)的Schema,DATASOURCE模式動(dòng)態(tài)切換數(shù)據(jù)源,從而實(shí)現(xiàn)多租戶(hù)數(shù)據(jù)隔離的目的。并且支持禁用租戶(hù)模式。

          二級(jí)緩存:

          采用J2Cache操作緩存,第一級(jí)緩存使用內(nèi)存(Caffeine),第二級(jí)緩存使用 Redis。 由于大量的緩存讀取會(huì)導(dǎo)致 L2 的網(wǎng)絡(luò)成為整個(gè)系統(tǒng)的瓶頸,因此 L1 的目標(biāo)是降低對(duì) L2 的讀取次數(shù)。 該緩存框架主要用于集群環(huán)境中。單機(jī)也可使用,用于避免應(yīng)用重啟導(dǎo)致的緩存冷啟動(dòng)后對(duì)后端業(yè)務(wù)的沖擊。

          優(yōu)雅的Bean轉(zhuǎn)換:

          采用Dozer組件來(lái)對(duì) DTO、DO、PO等對(duì)象的優(yōu)化轉(zhuǎn)換

          前后端統(tǒng)一表單驗(yàn)證:

          嚴(yán)謹(jǐn)?shù)谋韱悟?yàn)證通常需要 前端+后端同時(shí)驗(yàn)證, 但傳統(tǒng)的項(xiàng)目,均只能前后端各做一次檢驗(yàn), 后期規(guī)則變更,又得前后端同時(shí)修改。 故在hibernate-validator的基礎(chǔ)上封裝了zuihou-validator-starter起步依賴(lài),提供一個(gè)通用接口,可以獲取需要校驗(yàn)表單的規(guī)則,然后前端使用后端返回的規(guī)則, 以后若規(guī)則改變,只需要后端修改即可。

          防跨站腳本攻擊(XSS):

          •      通過(guò)過(guò)濾器對(duì)所有請(qǐng)求中的 表單參數(shù) 進(jìn)行過(guò)濾
          •      通過(guò)Json反序列化器實(shí)現(xiàn)對(duì)所有 application/json 類(lèi)型的參數(shù) 進(jìn)行過(guò)濾

          當(dāng)前用戶(hù)信息注入器:

           通過(guò)注解實(shí)現(xiàn)用戶(hù)身份注入

          在線API:

          由于原生swagger-ui某些功能支持不夠友好,故采用了國(guó)內(nèi)開(kāi)源的 knife4j ,并制作了stater,方便springboot用戶(hù)使用。

          代碼生成器:

          基于Mybatis-plus-generator自定義了一套代碼生成器, 通過(guò)配置數(shù)據(jù)庫(kù)字段的注釋?zhuān)詣?dòng)生成枚舉類(lèi)、數(shù)據(jù)字典注解、SaveDTO、UpdateDTO、表單驗(yàn)證規(guī)則注解、Swagger注解等。

          定時(shí)任務(wù)調(diào)度器:

          基于xxl-jobs進(jìn)行了功能增強(qiáng)。(如:指定時(shí)間發(fā)送任務(wù)、執(zhí)行器和調(diào)度器合并項(xiàng)目、多數(shù)據(jù)源)

          大文件/斷點(diǎn)/分片續(xù)傳:

          前端采用webupload.js、后端采用NIO實(shí)現(xiàn)了大文件斷點(diǎn)分片續(xù)傳,啟動(dòng)Eureka、Zuul、File服務(wù)后,直接打開(kāi)docs/chunkUploadDemo/demo.html即可進(jìn)行測(cè)試。 經(jīng)測(cè)試,本地限制堆棧最大內(nèi)存128M啟動(dòng)File服務(wù),5分鐘內(nèi)能成功上傳4.6G+的大文件,正式服耗時(shí)則會(huì)受到用戶(hù)帶寬和服務(wù)器帶寬的影響,時(shí)間比較長(zhǎng)。

          分布式事務(wù):

          集成了阿里的分布式事務(wù)中間件:seata,以 高效 并且對(duì)業(yè)務(wù) 0侵入 的方式,解決 微服務(wù) 場(chǎng)景下面臨的分布式事務(wù)問(wèn)題。

          灰度發(fā)布:
              
          為了解決頻繁的服務(wù)更新上線,版本回退,快速迭代,公司內(nèi)部協(xié)同開(kāi)發(fā),本項(xiàng)目采用修改ribbon的負(fù)載均衡策略來(lái)實(shí)現(xiàn)來(lái)灰度發(fā)布。     

          關(guān)聯(lián)數(shù)據(jù)自動(dòng)注入:

          用于解決跨表、跨庫(kù)、跨服務(wù)分頁(yè)數(shù)據(jù)的屬性或單個(gè)對(duì)象的屬性 回顯關(guān)聯(lián)數(shù)據(jù)之痛, 支持對(duì)靜態(tài)數(shù)據(jù)屬性(數(shù)據(jù)字典)、動(dòng)態(tài)主鍵數(shù)據(jù)進(jìn)行自動(dòng)注入。

           

          架構(gòu)圖

           

          系統(tǒng)一覽

           

           

          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜日逼| 久久美国发布站 | 一起操在线免费观看 | 亚洲无码视频在线观看 | 伊人成人在线观看 |