Yudao 框架增强能力

核心定位

一句話說清楚:在 Yudao 原生能力之上,RuoYiPlus 對框架基礎設施進行了 8 大維度的企業級增強,讓框架具備「開箱即用」的生產級能力。

解決什麼問題

痛點Yudao 原生RuoYiPlus 增強後
資料許可權不夠細僅部門級過濾使用者/角色/崗位/部門四層 + 欄位級
敏感資訊洩露風險無脫敏機制註解式自動脫敏
操作日誌不完整基礎日誌智慧變更追蹤 + 風險評分 + 區塊鏈存證
API 缺乏保護基礎路由請求籤名 + 限流 + 熔斷
分散式能力弱分散式事務 + 鎖 + 冪等
快取策略單一Redis 單層Caffeine + Redis 多級快取
資料庫擴充套件難單庫讀寫分離 + 分庫分表 + 資料歸檔
監控能力弱SkyWalking 全鏈路追蹤 + 自定義指標

適合什麼樣的使用者

mindmap root((適合使用者)) 軟體廠商 需要授權管理 需要商業化基礎設施 企業 IT 團隊 需要安全合規 需要多租戶隔離 系統整合商 需要快速交付 需要模組化組裝 SaaS 運營商 需要多租戶架構 需要計費體系

1. 資料許可權引擎

1.1 四層許可權模型

graph LR subgraph "許可權來源" F["使用者許可權
優先順序最高"] G["角色許可權"] H["崗位許可權"] I["部門許可權
優先順序最低"] F ~~~ G ~~~ H ~~~ I end subgraph "許可權決策引擎" A["使用者請求"] --> B["許可權解析"] B --> C["許可權合併"] C --> D["資料過濾"] D --> E["等級過濾"] end subgraph "許可權過濾" J["SQL 過濾"] --> K["返回結果"] end 許可權來源 --> 許可權決策引擎 許可權決策引擎 --> 許可權過濾 style B fill:#FFA500,color:#fff,font-weight:bold

1.2 能力對比

能力項原生支援增強後
部門級資料過濾
角色級資料過濾
自定義 SQL 過濾
欄位級許可權控制
動態資料許可權規則
客戶等級過濾

1.3 使用方式

// 基於角色的資料許可權:銷售經理看團隊資料,區域總監看本區域資料
@DataPermission(roles = {"sales_manager", "region_director"})
public class CustomerServiceImpl { }

// 基於部門的層級許可權
@DataPermission(deptIds = "#{currentUser.deptId}")
public class ReportService { }

// 自定義資料範圍
@DataPermission(scope = "custom", sqlFilter = "region_id = #{currentUser.regionId}")
public class RegionService { }

// 欄位隱藏
@DataPermission(fields = {"salary", "bankCard"}, operation = DataPermission.Operation.HIDE)
public class EmployeeService { }

// 欄位只讀
@DataPermission(fields = {"createTime", "creator"}, operation = DataPermission.Operation.READONLY)
public class OrderService { }

2. 敏感欄位脫敏

2.1 脫敏架構

graph LR A["資料查詢"] --> B["脫敏規則匹配"] B --> C["欄位型別識別"] C --> D["脫敏演算法應用"] D --> E["返回脫敏結果"]

2.2 支援的脫敏型別

脫敏型別示例說明
手機號138****1234中間4位脫敏
郵箱a***@163.com使用者名稱脫敏
身份證310***********1234出生日期+後4位脫敏
銀行卡**** **** **** 1234僅保留後4位
姓名張*姓氏外脫敏
地址上海市徐彙區****詳細地址脫敏
密碼******完全脫敏

2.3 使用方式

// 註解式脫敏
public class Customer {
    @SensitiveField(type = SensitiveType.PHONE)
    private String phone;

    @SensitiveField(type = SensitiveType.EMAIL)
    private String email;

    @SensitiveField(type = SensitiveType.ID_CARD)
    private String idCard;
}

// 查詢時自動脫敏
@SensitiveQuery(fields = {"phone", "email"})
public List<Customer> getCustomerList(CustomerQuery query) { }

3. 操作日誌中心

3.1 日誌體系

graph TB subgraph "日誌採集" A["操作行為"] B["登入事件"] C["API 呼叫"] end subgraph "日誌處理" D["日誌解析"] E["變更對比"] F["風險評分"] end subgraph "日誌儲存" G["熱資料儲存"] H["冷資料歸檔"] I["區塊鏈存證"] end A --> D B --> D C --> D D --> E E --> F F --> G F --> H F --> I

3.2 智慧變更追蹤

// 自動對比修改前後差異,僅記錄變更欄位
@OperateLog(title = "客戶管理", businessType = BusinessType.UPDATE)
public void updateCustomer(Customer customer) { }

3.3 敏感操作告警

aegis:
  audit:
    alert-rules:
      - event: "資料匯出"
        threshold: 10  # 10分鐘內超過10次
        action: "notify_admin"
      - event: "批次刪除"
        action: "require_approval"

4. API 閘道器增強

4.1 閘道器架構

graph LR A["客戶端請求"] --> B["API 閘道器"] B --> C["請求籤名驗證"] C --> D["流量控制"] D --> E["熔斷降級"] E --> F["請求快取"] F --> G["協議轉換"] G --> H["後端服務"]

4.2 增強特性

能力項說明
請求籤名API 請求籤名驗證,防篡改
流量控制多維度限流策略
熔斷降級服務熔斷保護
請求快取API 響應快取
協議轉換SOAP → REST 轉換

5. 服務治理能力

5.1 分散式事務

基於 Seata 的分散式事務解決方案:

graph TB A["業務請求"] --> B["事務發起方"] B --> C["Seata TC"] C --> D["分支事務1"] C --> E["分支事務2"] C --> F["分支事務3"] D --> G["全域性提交/回滾"] E --> G F --> G

5.2 分散式鎖與冪等

// Redis + Redisson 分散式鎖
@DistributedLock(key = "order:lock:", waitTime = 30, leaseTime = 60)
public void processOrder(Order order) { }

// 冪等控制
@Idempotent(key = "order:create:{userId}:{productId}", expireTime = 60)
public Order createOrder(CreateOrderRequest request) { }

6. 快取增強

6.1 多級快取架構

graph LR A["應用請求"] --> B["L1 Caffeine"] B --> C["L2 Redis"] C --> D["資料庫"] D --> C C --> B B --> A

6.2 註解式快取

@Cacheable(name = "user:list:", expire = 300)
public List<User> getUserList() { }

@CacheEvict(name = "user:list:")
public void updateUser(User user) { }

@CachePut(name = "user:{id}")
public User getUser(Long id) { }

7. 資料庫增強

graph LR A["寫請求"] --> B["主庫"] C["讀請求"] --> D["從庫"] B --> E["資料同步"] E --> D
能力說明
讀寫分離自動路由讀寫請求,dynamic-datasource
分庫分表ShardingSphere 分片策略
資料歸檔自動冷熱資料分離,定時歸檔

8. 監控增強

graph TB A["客戶端"] --> B["閘道器"] B --> C["服務1"] C --> D["服務2"] D --> E["服務3"] E --> F["資料庫"] G["SkyWalking"] -.-> B G -.-> C G -.-> D G -.-> E
  • 全鏈路追蹤:整合 SkyWalking 分散式追蹤
  • 自定義指標@CustomMonitor 註解自動記錄
  • 告警規則:支援多級閾值告警

技術架構總覽

graph TB subgraph "RuoYiPlus 框架增強層" P1["資料許可權引擎
四層許可權+欄位級"] P2["敏感欄位脫敏
註解式自動脫敏"] P3["操作日誌中心
變更追蹤+區塊鏈存證"] P4["API 閘道器
簽名+限流+熔斷"] P5["服務治理
分散式事務+鎖+冪等"] P6["多級快取
Caffeine+Redis"] P7["資料庫增強
讀寫分離+分庫分表"] P8["全鏈路監控
SkyWalking+自定義指標"] end subgraph "Yudao Framework Core" CORE["Spring Boot 3 + MyBatis-Plus + Redis"] end P1 --> CORE P2 --> CORE P3 --> CORE P4 --> CORE P5 --> CORE P6 --> CORE P7 --> CORE P8 --> CORE
docs