开启并行数理论上增加(并行数/批量数)的倍数并发处理能力要求数据无序,针对乱序,数据存储,不影响业务
4.2.2 并行有序的方案1)实现数据幂等性,增加缓存,并行消费策略
方案流程

文章插图
基础实现流程:
1)根据binlake发送mq,在mq端开启并行消费,确保并行消费2)根据业务单号对,单号加锁(如麦哲伦对运单号加锁,即对单号加分布式锁),根据对应的ID获取ES数据 。3)校验数据是否有效,若查询无数据,则直接新增;若查询的数据状态大于当前数据状态,则直接抛弃,若查询状态小于当前数据状态,则直接更新数据4)更新缓存并释放锁
优点
- 指定资源情况下,增大消费端并发
- 可以开启并行消费,且保证顺序消费
- 可以使得资源充分利用,增加消费性能
- 增加毫秒级缓存额外开销
2)binlake主题分发子主题,显示增大并发策略

文章插图
优点:
- 逻辑相对简单,不需要开发复杂逻辑,无需引入额外中间件
- 预估转发消息速率即是实际处理速率
- 原主题单线程处理一条数据存储到ES时间为es_time,举例为50ms,每秒吞吐量是20条
- 现单线程转发MQ一条数据时间为trans_time,举例为20ms,每秒转发吞吐量50条
- 假设转发topic为N个子主题,则吞吐量理论为n*20实际小于转发吞吐量50,此处多子主题对cpu核数竞争
- 提升吞吐量为=(1000ms/trans_time )转发吞吐量 - (1000ms/es_time)原有吞吐量
- 扩展性不好,实际结果有待验证,小于预估值
3)俩种方案对比
主题较少一个俩个主题情况下,且业务处理比较耗时情况下,不想额外开发,可选方案二长期方案选择方案一,并行消费策略,可伸缩性,可扩展,支持动态扩容
5.总结针对MQ积压问题,并行消费可以是解决问题的一大利器,本文从binlake同步ES进行分析,同时针对积压推荐俩种方案,并从性能合理利用及扩展性分析,简要介绍方案二并行有序消费策略,希望能够帮助大家,如有问题,请随时指出!
作者:任洪波【京东云开发者|mysql基于binlake同步ES积压解决方案】
经验总结扩展阅读
- 洱海在云南哪里
- 防盗门品牌有哪些?
- 双十一买家电京东便宜还是淘宝便宜 双十一买家电哪个平台划算
- 最新苹果iOS个人开发者账号注册申请流程 申请苹果id账号注册
- 广州白云机场有高铁吗
- 10月27日北京今日天空云量较多最高气温仅有14℃ 秋凉明显需添衣保暖
- 奥比岛:梦想国度暗夜袭击魔药店失窃疑云答案是什么
- 10月28日今起至周末北京云量较多雨水频繁 最高气温15℃左右体感阴冷
- 2022京东双十一当天能退款吗 在京东买东西退款多久到账
- 一加AcePro怎么进入开发者模式 一加AcePro进入开发者模式方法介绍