<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>

          lamp-cloud微服務(wù)開發(fā)框架

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

          lamp-cloud的前身是zuihou-admin-cloud,從3.0.0版本開始,改名為lamp-cloud,它是lamp項目的其中一員。

          lamp-cloud 基于SpringCloud(Hoxton.SR9) + SpringBoot(2.3.6.RELEASE) 的微服務(wù)快速開發(fā)平臺,其中的可配置的SaaS功能尤其閃耀, 具備RBAC功能、網(wǎng)關(guān)統(tǒng)一鑒權(quán)、Xss防跨站攻擊、自動代碼生成、多種存儲系統(tǒng)、分布式事務(wù)、分布式定時任務(wù)等多個模塊,支持多業(yè)務(wù)系統(tǒng)并行開發(fā), 支持多服務(wù)并行開發(fā),可以作為后端服務(wù)的開發(fā)腳手架。代碼簡潔,注釋齊全,架構(gòu)清晰,非常適合學(xué)習(xí)和企業(yè)作為基礎(chǔ)框架使用。

          核心技術(shù)采用Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中間件。 希望能努力打造一套從 JavaWeb基礎(chǔ)框架 - 分布式微服務(wù)架構(gòu) - 持續(xù)集成 - 系統(tǒng)監(jiān)測 的解決方案。本項目旨在實現(xiàn)基礎(chǔ)能力,不涉及具體業(yè)務(wù)。

          lamp 項目名字由來

          敘事版:

          在一個夜黑風(fēng)高的晚上,小孩吵著要出去玩,于是和程序員老婆一起帶小孩出去放風(fēng),路上順便討論起項目要換個什么名字,在各自想出的名字都被對方一一否決后,大家陷入了沉思。

          走著走著,在一盞路燈下,孩砸盯著路燈打破寧靜,喊出:燈燈~ 我和媳婦愣了一下,然后對視著一起說:哈哈,這個名字好~

          解釋版:

          燈燈: 是我小孩學(xué)說話時會說的第一個詞,也是我在想了很多項目名后,小孩一語點破的一個名字,燈燈象征著光明,給困境的我們帶來希望,給加班夜歸的程序員們指引前方~

          燈燈(簡稱, 英文名:lamp),他是一個項目的統(tǒng)稱,包含以下幾個子項目

          lamp 項目組成

          項目 gitee github 備注
          工具集 https://gitee.com/zuihou111/lamp-util https://github.com/zuihou/lamp-util 業(yè)務(wù)無關(guān)的工具集,cloud和boot 項目都依賴它
          微服務(wù)版 https://gitee.com/zuihou111/lamp-cloud https://github.com/zuihou/lamp-cloud SpringCloud 版
          單體版 https://gitee.com/zuihou111/lamp-boot https://github.com/zuihou/lamp-boot SpringBoot 版(和lamp-cloud功能基本一致)
          管理后臺 https://gitee.com/zuihou111/lamp-web https://github.com/zuihou/lamp-web PC端管理系統(tǒng)
          代碼生成器 https://gitee.com/zuihou111/lamp-generator https://github.com/zuihou/lamp-generator 給開發(fā)人員使用
          定時調(diào)度器 https://gitee.com/zuihou111/lamp-job https://github.com/zuihou/lamp-job  尚未開發(fā)

           

           

           

           

           

           

          lamp 租戶模式介紹

          本項目可以通過配置,輕松切換項目的租戶模式

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

          lamp 會員版項目演示地址 

          1. 地址: https://tangyh.top
          2. 以下內(nèi)置賬號僅限于內(nèi)置的0000租戶 
          3. 平臺管理員: lamp_pt/lamp (內(nèi)置給公司內(nèi)部運營人員使用)
          4. 超級管理員: lamp/lamp    
          5. 普通管理員: general/lamp
          6. 普通賬號: normal/lamp

          ps: 演示環(huán)境中內(nèi)置租戶沒有寫入權(quán)限,若要在演示環(huán)境測試增刪改,請使用lamp_pt賬號查詢租戶管理員賬號后,登錄新租戶測試

          lamp-cloud + lamp-web 功能介紹:

          1. 租戶管理:運營人員管理所有的租戶創(chuàng)建
          2. 工作臺:普通用戶常用功能
          3. 組織管理:組織、崗位、用戶數(shù)據(jù)維護、重置用戶密碼等
          4. 資源中心:消息、短信、附件管理
          5. 流程管理:流程部署、模型管理、流程示例
          6. 系統(tǒng)設(shè)置:菜單、資源配置、角色管理、給角色綁定用戶、給角色授權(quán)菜單和資源、字典、地區(qū)、系統(tǒng)參數(shù)、操作日志、登錄日志、應(yīng)用管理等
          7. 網(wǎng)關(guān)設(shè)置:限流和阻止訪問
          8. 開發(fā)者管理:定時任務(wù)、接口文檔、注冊&配置中心、服務(wù)監(jiān)控、數(shù)據(jù)庫監(jiān)控、zipkin監(jiān)控、SkyWalking監(jiān)控

          lamp-cloud 項目亮點功能介紹:

          1. 服務(wù)注冊&發(fā)現(xiàn)與調(diào)用:

            基于Nacos來實現(xiàn)的服務(wù)注冊與發(fā)現(xiàn),使用使用Feign來實現(xiàn)服務(wù)互調(diào), 可以做到使用HTTP請求遠程調(diào)用時能與調(diào)用本地方法一樣的編碼體驗,開發(fā)者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。

          2. 負載均衡:

            將服務(wù)保留的rest進行代理和網(wǎng)關(guān)控制,除了平常經(jīng)常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的網(wǎng)關(guān)管控和負載均衡。其中擴展和借鑒國外項目的擴展基于JWT的Zuul限流插件,方面進行限流。

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

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

          4. 熔斷機制:

            因為采取了服務(wù)的分布,為了避免服務(wù)之間的調(diào)用“雪崩”,采用了Hystrix的作為熔斷器,避免了服務(wù)之間的“雪崩”。

          5. 監(jiān)控:

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

          6. 鏈路調(diào)用監(jiān)控:

            同時實現(xiàn)了Zipkin和SkyWalking作為本項目的全鏈路性能監(jiān)控, 從整體維度到局部維度展示各項指標(biāo),將跨應(yīng)用的所有調(diào)用鏈性能信息集中展現(xiàn),可方便度量整體和局部性能,并且方便找到故障產(chǎn)生的源頭,生產(chǎn)上可極大縮短故障排除時間。

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

            利用基于Mybatis的DataScopeInnerInterceptor攔截器實現(xiàn)了數(shù)據(jù)權(quán)限功能

          8. SaaS(多租戶)的無感解決方案

            本項目支持3種常見的租戶解決方案和無租戶方案,同一套代碼,修改一個配置即可實現(xiàn)租戶模式只有切換。

          9. 緩存抽象

            采用CacheOps操作緩存,內(nèi)置2種實現(xiàn):Caffeine、 Redis,可以讓項目應(yīng)急時在無Redis環(huán)境正常運行

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

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

          11. 前后端統(tǒng)一表單驗證

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

          12. 防跨站腳本攻擊(XSS)

            • 通過過濾器對所有請求中的 表單參數(shù) 進行過濾
            • 通過Json反序列化器實現(xiàn)對所有 application/json 類型的參數(shù) 進行過濾
          13. 當(dāng)前登錄用戶信息注入器

            • 通過注解實現(xiàn)用戶身份注入
          14. 在線API

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

          15. 代碼生成器

            基于Mybatis-plus-generator自定義了一套代碼生成器, 通過配置數(shù)據(jù)庫字段的注釋,自動生成枚舉類、數(shù)據(jù)字典注解、SaveDTO、UpdateDTO、表單驗證規(guī)則注解、Swagger注解等。

          16. 定時任務(wù)調(diào)度器

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

          17. 大文件/斷點/分片續(xù)傳

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

          18. 分布式事務(wù)

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

          19. 跨表、跨庫、跨服務(wù)的關(guān)聯(lián)數(shù)據(jù)自動注入器

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

          20. 灰度發(fā)布

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

          lamp-cloud 技術(shù)棧/版本介紹:

          • 所涉及的相關(guān)的技術(shù)有:
            • JSON序列化:Jackson
            • 消息隊列:RabbitMQ
            • 緩存:Redis
            • 數(shù)據(jù)庫: MySQL 5.7.9 或者 MySQL 8.0.19
            • 定時器:采用xxl-jobs項目進行二次改造
            • 前端:vue + element-ui
            • 持久層框架: Mybatis-plus
            • 代碼生成器:基于Mybatis-plus-generator自定義
            • API網(wǎng)關(guān):Gateway/zuul
            • 服務(wù)注冊&發(fā)現(xiàn)和配置中心: Nacos
            • 服務(wù)消費:OpenFeign
            • 負載均衡:Ribbon
            • 服務(wù)熔斷:Hystrix
            • 項目構(gòu)建:Maven
            • 分布式事務(wù): seata
            • 分布式系統(tǒng)的流量防衛(wèi)兵: Sentinel
            • 監(jiān)控: spring-boot-admin
            • 鏈路調(diào)用跟蹤: zipkin/SkyWalking
            • 文件服務(wù)器:FastDFS 5.0.5/阿里云OSS/本地存儲/MinIO
            • Nginx
          • 部署方面:
            • 服務(wù)器:CentOS
            • Jenkins
            • Docker
            • Kubernetes

          頁面預(yù)覽

          瀏覽 12
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <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>
                  日韩欧美大香蕉 | 激情做爱网站 | 豆花视频 无码 | 人人综合网 | 三级中文字幕 |