DBPack 限流熔斷功能發布說明

上周我們發布了 v0.4.0 版本,增加了限流熔斷功能,現對這兩個功能做如下說明。

限流

DBPack 限流熔斷功能通過 filter 實現。要設置限流規則,首先要定義 RateLimitFilter

    - name: rateLimiterFilter
      kind: RateLimiterFilter
        conf:
        # 1000 requests per second
        insert_limit: 1000
        # 1000 requests per second
        update_limit: 1000
        # 1000 requests per second
        delete_limit: 1000
        # 1000 requests per second
        select_limit: 1000

支援對增刪改查請求單獨限流。限流策略以秒為單位,即允許每秒執行多少次請求(RPS)。如果設置為 0 表示不限流。上面的例子表示限制為每秒執行 1000 次請求。

定義好 RateLimitFilter 後,將 filter 的名字加入到 Executor 的 filter list 中:

    executors:
      - name: redirect
        mode: sdb
        config:
          data_source_ref: employees
        filters:
          - cryptoFilter
          # 限流 filter
          - rateLimiterFilter

這樣就配置好限流功能了。

熔斷

配置 DBPack 的熔斷功能,需要先定義 CircuitBreakerFilter

      - name: circuitBreakerFilter
        kind: CircuitBreakerFilter
        conf:
          # error 次數
          error_threshold: 20
          # success 次數
          success_threshold: 5
          // seconds
          timeout: 60

上面的配置表示:

  1. 60 秒內累計錯誤次數達到 20 次,熔斷器狀態為 Open 打開狀態,此時請求不能執行。
  2. 熔斷器打開 60 秒後,熔斷器狀態變為 HalfOpen 半開狀態,此時可以執行請求。
  3. 熔斷器狀態變為 HalfOpen 半開狀態後,執行的第一個請求,如果執行失敗,熔斷器再次變為 Open 打開狀態;如果連續 5 次請求執行成功,則關閉熔斷器,熔斷器狀態變為 Closed

定義好 CircuitBreakerFilter 後,將 filter 的名字加入到 Executor 的 filter list 中:

    executors:
      - name: redirect
        mode: sdb
        config:
          data_source_ref: employees
        filters:
          - cryptoFilter
          # 熔斷 filter
          - circuitBreakerFilter

這樣就配置好了熔斷功能。

綜述

在 v0.1.0 版本我們發布了分散式事務功能,支援各種程式語言協調分散式事務。

在 v0.2.0 版本我們發布了讀寫分離功能,用戶在開啟讀寫分離功能的情況下,使用分散式事務協調功能不再需要做複雜的集成,DBPack 提供了一站式的解決方案。

在 v0.3.0 版本,我們加入 SQL Tracing 的功能,使用該功能可以收集到一個完整的分散式事務鏈路,查看事務的執行情況。我們還加入了數據加密功能,通過該功能保護用戶的重要數據資產。

在 v0.4.0 版本,我們加入了限流熔斷功能,該功能能保護資料庫不受到超過自身處理能力的請求流量衝擊。

在 v0.5.0 版本中,我們將加入分庫分表功能。

歡迎開源愛好者和我們一起建設 DBPack 社區,加群或參與社區建設,請微信聯繫:scottlewis。

鏈接