DBPack 限流熔斷功能發布說明
- 2022 年 8 月 15 日
- 筆記
- database mesh, DBMesh, 分散式事務, 分庫分表
上周我們發布了 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
上面的配置表示:
- 60 秒內累計錯誤次數達到 20 次,熔斷器狀態為
Open
打開狀態,此時請求不能執行。 - 熔斷器打開 60 秒後,熔斷器狀態變為
HalfOpen
半開狀態,此時可以執行請求。 - 熔斷器狀態變為
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。
鏈接
- dbpack: //github.com/CECTC/dbpack
- dbpack-samples: //github.com/CECTC/dbpack-samples
- dbpack-doc: //github.com/CECTC/dbpack-doc
- 事件驅動分散式事務設計://mp.weixin.qq.com/s/r43JvRY3LCETMoZjrdNxXA
- 影片介紹:
- 《dbpack 分散式事務功能詳解》 //www.bilibili.com/video/BV1cg411X7Ek
- 《高性能分散式事務框架實踐》//www.bilibili.com/video/BV1Xr4y1L7kD