上周我们发布了 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。

链接

posted @ 2022-08-15 15:00 Scott Lewis 阅读(280) 评论(1) 推荐(0) 编辑
摘要: 在 v0.1.0 版本我们发布了分布式事务功能,支持各种编程语言协调分布式事务。在 v0.2.0 版本我们发布了读写分离功能,用户在开启读写分离功能的情况下,使用分布式事务协调功能不再需要做复杂的集成,DBPack 提供了一站式的解决方案。在 v0.3.0 版本,我们加入 SQL Tracing 的功能,使用该功能可以收集到一个完整的分布式事务链路,查看事务的执行情况。我们还加入了数据加密功能,通过该功能保护用户的重要数据资产。 阅读全文
posted @ 2022-08-01 09:22 Scott Lewis 阅读(427) 评论(0) 推荐(1) 编辑
摘要: 在 v0.1.0 版本我们发布了分布式事务功能,并提供了读写分离功能预览。在 v0.2.0 这个版本,我们加入了通过 UseDB hint 自定义查询请求路由的功能,并修复了一些 bug。另外,在这个版本,我们还提供了审计日志功能的预览,该功能将在 v0.3.0 正式发布。 修复 bug 情况 PH 阅读全文
posted @ 2022-07-11 11:03 Scott Lewis 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 新兴的AT事务解决方案,例如Seata和Seata-golang,通过数据源代理层的资源管理器RM记录SQL回滚日志,跟随本地事务一起提交,大幅减少了数据的锁定时间,性能好且对业务几乎没有侵入。其缺点是支持的语言比较单一,例如Seata只支持Java语言类型的微服务,Seata-golang只支持Go语言类型的微服务。为了突破AT事务对业务编程语言的限制,现在业界正在往DB Mesh的方向发展,通过将事务中间件部署在SideCar的方式,达到任何编程语言都能使用分布式事务中间件的效果。 阅读全文
posted @ 2022-07-01 09:58 Scott Lewis 阅读(704) 评论(0) 推荐(1) 编辑
摘要: 以 python 为例演示 dbpack 协调分布式事务,用 flask web 框架实现了事务发起方的两个handler,通过两个http请求我们可以模拟分布式事务发起或者回滚。可以使用docker-compose一键拉起以上 demo。 阅读全文
posted @ 2022-06-24 09:58 Scott Lewis 阅读(454) 评论(0) 推荐(0) 编辑
摘要: dotnet core 也能协调分布式事务啦! v0.1.1 我们增加了对 COM_QUERY 请求协调分布式事务的支持,使 dotnet 也能使用 dbpack 协调分布式事务。还增加了 status api 帮助查看 dbpack 的运行状态。在下一个版本,我们会增加 tracing 和审计日志的功能。 阅读全文
posted @ 2022-06-09 09:37 Scott Lewis 阅读(632) 评论(0) 推荐(3) 编辑
摘要: hptx 是当前性能最强的云原生、无侵入分布式事务解决方案,选择其他内存型存储组件理论上可以得到更高的性能,但综合可靠性和性能,ETCD 是目前最好的选择。 阅读全文
posted @ 2022-06-02 09:51 Scott Lewis 阅读(990) 评论(0) 推荐(1) 编辑
摘要: 2022 年 4 月,中国电子云开源了其云原生数据库 Mesh 项目 DBPack。该项目的诞生,旨在解决用户上云过程中面临的一些技术难点,诸如分布式事务、分库分表等。由于它数据库 Mesh 的定位,意味着它可以支持任意微服务编程语言。DBPack 从 Kubernetes control loop 思想中获得灵感,采用 ETCD Watch 机制来驱动分布式事务提交回滚。在采用代理使连接增加一跳的情况下,它的性能相比采用 MYSQL 存储的分布式事务解决方案 seata-golang 性能提高了百分之 50。 阅读全文
posted @ 2022-05-13 16:51 Scott Lewis 阅读(338) 评论(3) 推荐(0) 编辑
摘要: 源码👇seata-golang ####概述 我们知道 Seata Java Client 的 AT 模式,通过代理数据源,实现了对业务代码无侵入的分布式事务协调机制,将与 Transaction Coordinator (TC) 交互的逻辑、Commit 的逻辑、Rollback 的逻辑,隐藏在 阅读全文
posted @ 2020-06-09 10:35 Scott Lewis 阅读(2005) 评论(0) 推荐(1) 编辑
摘要: 众所周知,这几年微服务、云原生提得很火热。2017年,当时公司的领导刘巍,敏锐得提出公司转型微服务。那时,提到微服务大家一头雾水,经过两年的实践,逐渐有了一些心得。但有个问题始终萦绕在微服务开发者的头上,分布式事务到底如何解决,有没有比较完美的方案?二阶段提交、柔性事务、最终一致性? 2019 年, 阅读全文
posted @ 2020-04-27 18:36 Scott Lewis 阅读(1621) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示