微服务

196 阅读3分钟

数据同步

数据同步的中间件

  1. Cannal 阿里巴巴开源的数据库binlog数据同步工具,主要应用于数据同步与订阅。其可以监控MySQL的binlog变更,并将变更数据推送到下游消费者,支持数据格式的解析与转化。
  2. Debezium 基于Aphache kafka 开源的的CDC工具。用于捕获数据库变更并将其转化为事件流。支持多种数据库【MySQL,PostgreSQl,MongoDB】的变更捕获,并提供灵活的的时间处理与转换
  3. Datax 阿里巴巴开源的数据库同步工具,支持多种数据源之间的数据传输与转换。其提供丰富的数据读写插接件,可以灵活的配置数据同步任务。并支持高性能的数据,分布式数据同步
  4. Databus Linked 开源的实时数据同步与数据管道工具,用于构建可靠的数据流处理系统。支持数据变更的捕获与传输,并提供了数据一致性的保证与故障恢复机制。
  5. Flinkx Apache开源的数据同步工具,支持实时数据的处理与数据流的转化,提供了丰富的数据源与目标连接器。可以构建复杂的数据同步与数据处理任务。
  6. Bifrost 美团点评的开源实时数据同步工具,支持Mysql与Kafka等数据源之间的数据传输与同步。提供简单易用的配置与管理界面。使用与构建试试数据的管道与数据同步任务。

限流

限流常用的四种算法

固定窗口

  1. 固定窗口的算法指得是简单的请求计数的方式。即就是在固定的时间区间内当请求数量超过阈值时进行限流。
  2. 示例
    • 假定后台服务5s内可处理的请求数为500.
    • 存在下述场合1-4s其请求数为100个,第5s时流量激增为400个。而后在6-9s区间内有490个请求,第10s有10个请求。若单纯从时间区间1-5s,6-10s,其区间内的请求数均为超标。但5s的时间间隔内从第5s-9s,共有890个请求,超标390个请求,后台服务可能已经宕机。

滑动窗口

  1. 滑动窗口计数方法,指得是在一个时间区间内统计器请求数,且随着时间的推移,其固定的窗口滑动迁移。

  2. 示例 假定后台服务QPS为1000个,当滑动窗口的时间区间为100ms,每个时间区间内统计请求数。而后合并10个时间区间的请求总数。当请求总数超过阈值时舍弃多余的请求。当时间节点进入下一个时间区域内(比如第11个时间区间内)此时不再统计第一个时间区间内的值,而是计算第二个时间区间值第11个时间区内的总的请求数。
    image.png

    -滑动窗体算法有效解决该固定窗口的边界值问题。但其对于超限的请求实时为暴力的直接拒绝。

令牌桶

  1. 令牌桶中存放固定量的令牌,每次请求时先尝试获取令牌,若取得令牌的场合,则请求被处理。处理完成后归还令牌。若无令牌则请求等待。

  2. 示例 image.png

漏斗

  1. 以模拟漏桶的原理。即就是其请求进入的流量不做统计,但其出口速率均速。当请求数量大于漏斗容量的场合,其请求被拒。

  2. 示例 image.png

漏斗算法正常流量的场合,其按照匀速的方式请求处理。但在流量突发的场合略显不足