<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 《燈燈》中后臺快速開發平臺 [![Language](https://img.shields.io/badge/語言-Java%20%7C%20SpringCloud%20%7C%20Vue3%20%7C%20...-red?style=flat-square&color=42b883)](https://github.com/zuihou/lamp-cloud) [![License](https://img.shields.io/github/license/zuihou/lamp-cloud?color=42b883&style=flat-square)](https://github.com/zuihou/lamp-cloud/blob/master/LICENSE) [![Author](https://img.shields.io/badge/作者-zuihou-orange.svg)](https://github.com/zuihou) [![Version](https://img.shields.io/badge/版本-3.9.0-brightgreen.svg)](https://github.com/zuihou/lamp-cloud) [![Star](https://img.shields.io/github/stars/zuihou/lamp-cloud?color=42b883&logo=github&style=flat-square)](https://github.com/zuihou/lamp-cloud/stargazers) [![Fork](https://img.shields.io/github/forks/zuihou/lamp-cloud?color=42b883&logo=github&style=flat-square)](https://github.com/zuihou/lamp-cloud/network/members) [![Star](https://gitee.com/zuihou111/lamp-cloud/badge/star.svg?theme=gray)](https://gitee.com/zuihou111/lamp-cloud/stargazers) [![Fork](https://gitee.com/zuihou111/lamp-cloud/badge/fork.svg?theme=gray)](https://gitee.com/zuihou111/lamp-cloud/members) ***** # 注意 **本文檔是lamp-cloud項目3.x版本的文檔,4.x文檔請閱讀:https://tangyh.top/doc/%E7%AE%80%E4%BB%8B.html** **3.x源碼已經不在更新,目前持續更新4.x版本** ***** # 燈燈(lamp)項目名字由來 在一個夜黑風高的晚上,小孩吵著要出去玩,于是和`程序員老婆`一起帶小孩出去放風,路上順便討論起項目要換個什么名字,在各自想出的名字都被對方一一否決后,大家陷入了沉思。 走著走著,在一盞路燈下,孩砸盯著路燈打破寧靜,喊出:燈燈~ 我和媳婦愣了一下,然后對視著一起說:哈哈,這個名字好~ ## lamp 項目組成 注意: 請先下載lamp-util 代碼并編譯(mvn install) 到本地倉庫,然后在編譯(mvn install)lamp-cloud或lamp-boot項目, 最后編譯(mvn install)lamp-job項目!!! ## 工具集 | 項目 | gitee | github | 備注 | | --- | --- | --- | --- | | lamp-util | [lamp-util](https://gitee.com/zuihou111/lamp-util) | [lamp-util](https://github.com/zuihou/lamp-util) | 核心工具集 | | lamp-generator | [lamp-generator](https://gitee.com/zuihou111/lamp-generator) | [lamp-generator](https://github.com/zuihou/lamp-generator) | 代碼生成器 | | lamp-job | [lamp-job](https://gitee.com/zuihou111/lamp-job) | [lamp-job](https://github.com/zuihou/lamp-job) | 分布式定時調度器 | ## 后端 | 項目 | gitee | github | 備注 | | --- | --- | --- | --- | | lamp-cloud | [lamp-cloud](https://gitee.com/zuihou111/lamp-cloud) | [lamp-cloud](https://github.com/zuihou/lamp-cloud) | SpringCloud(微服務)版 | | lamp-boot | [lamp-boot](https://gitee.com/zuihou111/lamp-boot) | [lamp-boot](https://github.com/zuihou/lamp-boot) | SpringBoot(單體)版 | | 微服務版示例 | [lamp-samples](https://gitee.com/zuihou111/lamp-samples) | [lamp-samples](https://github.com/zuihou/lamp-samples) | 常用示例 | ## 前端 | 項目 | gitee | github | 備注 | 演示地址 | | --- | --- | --- | --- | --- | | lamp-web | [lamp-web](https://gitee.com/zuihou111/lamp-web) | [lamp-web](https://github.com/zuihou/lamp-web) | 基于 vue-admin-element (element-ui) | http://tangyh.top/lamp-web | | lamp-web-plus(強烈推薦!??????) | [lamp-web-plus](https://gitee.com/zuihou111/lamp-web-plus) | [lamp-web-plus](https://github.com/zuihou/lamp-web-plus) | 基于 vue-vben-admin (vue 3 + ant design vue 2) | http://tangyh.top | # lamp-cloud 簡介 `lamp-cloud` 是 `lamp`項目的其中一員。她基于 `jdk11/jdk8` + `SpringCloud` + `SpringBoot` 的微服務快速開發平臺,同時也是一個SaaS項目開發平臺。 它具備RBAC、網關統一鑒權、Xss防跨站攻擊、代碼自動生成、多種存儲系統、分布式事務、分布式定時任務等功能,支持多業務系統、多服務并行開發,可以作為Java Web項目的開發腳手架。代碼優美,注釋齊全,架構清晰,非常適合學習和企業作為基礎框架使用。 核心技術采用Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中間件。 希望能努力打造一套從 `JavaWeb基礎框架` - `分布式微服務架構` - `持續集成` - `系統監測` 的解決方案。`本項目旨在實現基礎能力,不涉及具體業務。` ## 分支介紹 1. master 分支為最新的穩定版本,每次提交都會升級一個版本號 2. dev 分支為作者的開發分支,作者開發的最新功能會實時提交上來,喜歡嘗鮮的可以切換為dev。 但可能有報錯、漏提等,對項目不是很熟的朋友千萬別嘗試。 3. tag 每個固定的版本都會打一個tag方便后續切換任意版本。 ## lamp 租戶模式介紹 本項目可以通過配置,輕松切換項目的 **租戶模式**。 | 租戶模式 | 描述 | 優點 | 缺點 | |---|---|---|---| | NONE(非租戶模式) | 沒有租戶 | 簡單、適合獨立系統 | 缺少租戶系統的優點 | | COLUMN(字段模式) | 租戶共用一個數據庫,在業務表中增加字段來區分 | 簡單、不復雜、開發無感知 | 數據隔離性差、安全性差、數據備份和恢復困難、 | | SCHEMA(獨立schema) | 每個租戶獨立一個 數據庫(schema),執行sql時,動態在表名前增加schema | 簡單、開發無感知、數據隔離性好 | 配置文件中必須配置數據庫的root賬號、不支持復雜sql和 sql嵌套自定義函數 | | DATASOURCE(獨立數據源) | 每個租戶獨立一個 數據庫(數據源),執行代碼時,動態切換數據源 | 可獨立部署數據庫,數據隔離性好、擴展性高、故障影響小 | 相對復雜、開發需要注意切換數據源時的事務問題、需要較多的數據庫 | | DATASOURCE_COLUMN(獨立數據源+字段模式) | 每個租戶獨立一個 數據庫(數據源),執行代碼時,動態切換數據源,在動態拼接 子租戶id 二次隔離 | 可獨立部署數據庫,數據隔離性好、擴展性高、故障影響小、支持大租戶小門店形式 | 相對復雜、開發需要注意切換數據源時的事務問題、需要較多的數據庫 | # 體驗地址 - 官網:https://tangyh.top - 4.x 企業版體驗地址: https://pro.tangyh.top - 3.x 企業版體驗地址。演示地址: https://boot.tangyh.top - 3.x 開源版體驗地址。演示地址: https://boot.tangyh.top/lamp-web ## lamp-cloud 項目亮點功能介紹: 1. **服務注冊&發現與調用:** 基于Nacos來實現的服務注冊與發現,使用使用Feign來實現服務互調, 可以做到使用HTTP請求遠程調用時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。 2. **負載均衡:** 將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的gateway 和 loadbalancer 可以幫我們進行正常的網關管控和負載均衡。 3. **RBAC:** 通過JWT生成token,存儲用戶基本信息,并自研權限配置、鑒權方案。 4. **熔斷機制:** 因為采取了服務的分布,為了避免服務之間的調用“雪崩”,采用了Sentinel的作為熔斷器,避免了服務之間的“雪崩”。 5. **監控:** 利用Spring Boot Admin 來監控各個獨立服務的運行狀態、健康情況。 6. **鏈路調用監控:** 同時實現了SkyWalking作為本項目的全鏈路性能監控, 從整體維度到局部維度展示各項指標,將跨應用的所有調用鏈性能信息集中展現,可方便度量整體和局部性能,并且方便找到故障產生的源頭,生產上可極大縮短故障排除時間。 7. **數據權限** 利用基于Mybatis的DataScopeInnerInterceptor攔截器實現了數據權限功能 8. **SaaS(多租戶)的無感解決方案** 本項目支持3種常見的租戶解決方案和無租戶方案,同一套代碼,修改一個配置即可實現租戶模式只有切換。 9. **緩存抽象** 采用CacheOps操作緩存,內置2種實現:Caffeine、 Redis,可以讓項目應急時在無Redis環境正常運行 10. **優雅的Bean轉換** 采用Dozer、BeanUtil等組件來對 DTO、DO、PO等對象的優化轉換 11. **前后端統一表單驗證** 嚴謹的表單驗證通常需要 前端+后端同時驗證, 但傳統的項目,均只能前后端各做一次檢驗, 后期規則變更,又得前后端同時修改。 故在`hibernate-validator`的基礎上封裝了`lamp-validator-starter`起步依賴,提供一個通用接口,可以獲取需要校驗表單的規則,然后前端使用后端返回的規則, 以后若規則改變,只需要后端修改即可。 12. **防跨站腳本攻擊(XSS)** - 通過過濾器對所有請求中的 表單參數 進行過濾 - 通過Json反序列化器實現對所有 application/json 類型的參數 進行過濾 13. **當前登錄用戶信息注入器** - 通過注解實現用戶身份注入 14. **在線API** 由于原生swagger-ui某些功能支持不夠友好,故采用了國內開源的`knife4j`,并制作了stater,方便springboot用戶使用。 15. **代碼生成器** 基于Mybatis-plus-generator自定義了一套代碼生成器, 通過配置數據庫字段的注釋,自動生成枚舉類、數據字典注解、SaveDTO、UpdateDTO、表單驗證規則注解、Swagger注解等。 16. **定時任務調度器**: 基于xxl-jobs進行了功能增強。(如:指定時間發送任務、執行器和調度器合并項目、多數據源) 18. **分布式事務** 集成了阿里的分布式事務中間件:seata,以 **高效** 并且對業務 **0侵入** 的方式,解決 微服務 場景下面臨的分布式事務問題。 19. **跨表、跨庫、跨服務的關聯數據自動回顯** 用于解決跨表、跨庫、跨服務分頁數據的屬性或單個對象的屬性 回顯關聯數據之痛, 支持對靜態數據屬性(數據字典)、動態主鍵數據進行自動回顯。 20. **灰度發布** 為了解決頻繁的服務更新上線,版本回退,快速迭代,公司內部協同開發,本項目采用修改 loadbalancer 的負載均衡策略來實現來灰度發布。 ## lamp-cloud 技術棧/版本介紹: - 所涉及的相關的技術有: - JSON序列化:Jackson - 消息隊列:RabbitMQ - 緩存:Redis - 數據庫: MySQL 5.7.9 或者 MySQL 8 - 定時器:采用xxl-jobs項目進行二次改造 - 前端:vue2 + element-ui / vue3 + ant design vue - 持久層框架: Mybatis-plus - 代碼生成器:基于Mybatis-plus-generator自定義 - API網關:Gateway - 服務注冊&發現和配置中心: Nacos - 服務消費:OpenFeign - 負載均衡:Ribbon - 服務熔斷:Sentinel - 項目構建:Maven - 分布式事務: seata - 分布式系統的流量防衛兵: Sentinel - 監控: spring-boot-admin - 鏈路調用跟蹤: SkyWalking - 文件服務器:FastDFS 5.0.5/阿里云OSS/本地存儲/MinIO - Nginx - 部署方面: - 服務器:CentOS - Jenkins - Docker - Kubernetes # 項目截圖: | 預覽 | 預覽 | |---|---| | ![](https://img.kancloud.cn/d4/c1/d4c163bff622aab64ee9b51eddee8040_1411x781.png) | ![](https://img.kancloud.cn/e7/d2/e7d26bf2334c84332e6f85f89d5f437e_1700x937.png) | | ![](https://img.kancloud.cn/41/e3/41e345c23cc3ff8fc0ae53889275fc8b_3406x1724.jpg) | ![](https://img.kancloud.cn/9c/ce/9cce9d43fb7f28b0a7947ab5bd60d76d_1695x933.png) | | ![](https://img.kancloud.cn/51/b3/51b39263618e723f8c0ca03a8cc08a14_1713x933.png) | ![](https://img.kancloud.cn/c3/34/c334925e6158ca5f6fd60e5637ca735c_1696x818.png) | | ![](https://img.kancloud.cn/e0/04/e0045ea1d3087ceb91a52bced5054639_1668x915.png) | ![](https://img.kancloud.cn/d4/30/d430f74693e46f7efc1f10d652483698_1696x933.png) | # 交流群。加群前請先給項目點個 "Star",謝謝!?? - 63202894 - 1011148503 # 遇到問題請先查看歷史issue,未找到解決方案,在提交issue(問題描述詳細一些,報錯截圖大一些,復現步驟全一些) https://github.com/zuihou/lamp-cloud/issues
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看