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

                # 模式介紹 本項目可以通過修改配置文件的中一個參數,輕松切換項目的 **租戶模式**。 ``` lamp: database: multiTenantType: SCHEMA # 可選值: NONE COLUMN SCHEMA SCHEMA_COLUMN DATASOURCE(會員版專屬) DATASOURCE_COLUMN(會員版專屬) ``` ## 本項目支持以下幾種模式: | 租戶模式 | 描述 | 優點 | 缺點 | |---|---|---|---| | NONE(非租戶模式) | 非租戶模式,就是普通項目 | 簡單、適合獨立系統 | 缺少租戶系統的優點 | | COLUMN(字段模式) | 租戶共用一個數據庫,在業務表中增加字段來區分 | 簡單、不復雜、開發無感知 | 數據隔離性差、安全性差、數據備份和恢復困難、 | | SCHEMA(獨立schema) | 每個租戶獨立一個 數據庫(schema),執行sql時,動態在表名前增加schema | 簡單、開發無感知、數據隔離性好 | 配置文件中必須配置數據庫的root賬號、不支持復雜sql和 sql嵌套自定義函數 | | DATASOURCE(獨立數據源) | 每個租戶獨立一個 數據庫(數據源),執行代碼時,動態切換數據源 | 可獨立部署數據庫,數據隔離性好、擴展性高、故障影響小 | 相對復雜、開發需要注意切換數據源時的事務問題、需要較多的數據庫 | | DATASOURCE_COLUMN(獨立數據源+字段模式) | 每個租戶獨立一個 數據庫(數據源),執行代碼時,動態切換數據源,在動態拼接 子租戶id 二次隔離 | 可獨立部署數據庫,數據隔離性好、擴展性高、故障影響小、支持大租戶小門店形式 | 相對復雜、開發需要注意切換數據源時的事務問題、需要較多的數據庫 | ## 每種模式的數據庫和字段情況 | 模式 | 表中有無租戶字段 | 實體類中有無租戶字段 | 分布式事務| 有幾個數據庫 | |---|---|---|---|---| | NONE | 無 | 無 | 支持 | lamp_none、lamp_activiti | | COLUMN | 有 | 無 | 支持 | lamp_column、lamp_activiti | | SCHEMA | 無 | 無 | 支持 | lamp_defaults、lamp_base_{tenant}、lamp_extend_{tenant} | | DATASOURCE | 無 | 無 | 支持 | lamp_defaults、lamp_base_{tenant}、lamp_extend_{tenant} | | SCHEMA_COLUMN | 有 | 無 | 支持 | lamp_defaults、lamp_base_{tenant}、lamp_extend_{tenant} | | DATASOURCE_COLUMN | 有 | 無 | 支持 | lamp_defaults、lamp_base_{tenant}、lamp_extend_{tenant} | # SCHEMA、DATASOURCE、SCHEMA_COLUMN、DATASOURCE_COLUMN 模式各個服務需要準備的數據庫 | 后臺服務 | 服務名 | 啟動時連接的庫 | 運行時租戶庫 | 功能描述 | |---|---|---|---|---| | 認證服務 | oauth | lamp_defaults | lamp_base_{tenant} | 負責登錄、用戶必備的數據接口 | | 工作流服務 | activiti | lamp_activiti | lamp_activiti | 會員版專屬功能 | | 基礎服務 | authority | lamp_defaults | lamp_base_{tenant} | 資源、系統配置、組織架構等基礎功能 | | 文件服務 | file | lamp_defaults | lamp_base_{tenant} | 負責文件上傳、下載等功能 | | 消息服務 | msg | lamp_defaults | lamp_base_{tenant} | 負責站內信、消息、短信、郵件等功能 | | 租戶服務 | tenant | lamp_defaults | lamp_defaults | 負責租戶模式管理租戶 | | 網關服務 | gate | lamp_defaults | lamp_extend_{tenant} | 負責統一路由、認證、限流等 | ## 題外話: 問: `01-docs/sql/*.sql` 和 `lamp-tenant/lamp-tenant-server/src/main/resources/sqls/*.sql` 有什么區別? 答: `01-docs/sql/*.sql` 存放的是系統內置的數據庫腳本,腳本里面除了`表結構`和一些`必要數據`,主要用于啟動項目, 作者會實時的將自己環境的腳本和數據導出到這里。 `lamp-tenant/lamp-tenant-server/sqls/*.sql` 里面的腳本用于項目啟動后,配置 `SCHEMA` 模式,新建租戶時使用。 - `lamp_base.sql` 存放的是新租戶基礎庫的`表結構` - `lamp_base_data.sql` 存放的是新租戶基礎庫的`必要數據` - `lamp_extend.sql` 存放的是新租戶擴展庫的`表結構` - `lamp_extend_data.sql` 存放的是新租戶擴展庫的`必要數據` - 腳本里面的`SELECT 1`用于防止代碼執行空腳本時報錯,就隨便放入一條無關緊要的sql (可以改成其他無關緊要的sql) 開源版本請忽略下面的這條: `lamp-authority-server`、`lamp-gateway-server`、`lamp-msgs-server` 等任意一個服務`src/main/resources/sqls/*.sql` 下的腳本文件用于`DATASOURCE`模式,新建租戶時使用。 SCEHMA模式是在tenant服務一次性將整個服務腳本初始化,DATASOURCE模式是每個服務、每個租戶獨立數據源,所以得分散在各自的服務初始化自己服務的腳本和數據! # 分庫原則: SCHEMA模式和DATASOURCE模式不建議每個服務一個庫,假設權限、文件、消息、認證、網關服務每個服務獨立數據庫(共5個), 那么新增一個租戶時,租戶庫會成倍的增加, 會占用N * 5個庫(還有一個默認庫)。 COLUMN和NONE模式則不用考慮上述問題。 鑒于此,合理的合庫至關重要,在本系統中,權限、消息、文件、認證服務等都可以理解成基礎功能,而網關、訂單、demo服務等屬于擴展功能, 使用本框架二次開發某種類型的項目時(如商城、ERP、CMS等)可以理解成業務功能, 所以推薦分庫規則為: 1. 租戶服務、定時任務 共用默認庫,命名規則為 lamp_defaults 2. 權限、消息、文件、認證服務 共用基礎庫,命名規則為 lamp_base_{TENANT} 3. 網關、訂單、demo服務 共用擴展庫,命名規則為 lamp_extend_{TENANT} **4. 二次開發時可以新建一個業務庫,命名規則為 lamp_biz_{TENANT} (本項目不涉及該庫)**
                  <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>

                              哎呀哎呀视频在线观看