C C++最全【面试题】消息堆积解决方案,推荐一个GitHub项目

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

整个链路的demo如下图所示。
在这里插入图片描述
中间件监控如下图所示
在这里插入图片描述

2、解决方案

2.1、加机器

一开始以为偶尔出现的一波流量,加一台机器看看。所以整个链路如下图所示。机器总数小于分区总数
在这里插入图片描述
观察了一段时间,发现延迟增长缓慢,说明有效果,如下图所示。但是还是延迟

在这里插入图片描述

2.2、继续加机器

发现上面加机器有效果,继续加机器,如下图中的蓝色pod,此时延迟还是增长,不符合预期。此时我了解到当机器等于分区数时,再加机器没有效果。因此需要提高单台机器的消费能力
在这里插入图片描述

2.3、多线程

提升单台机器的消费能力开多线程。拉取消息的时候批量拉,如下图所示,我拉三条消息,收到消息后抛到线程池(三个线程)中。此时系统消费能力提高三倍
在这里插入图片描述

此时遇到不顺序消费问题,如上图所示,当我的消息需要顺序消费(同userld顺序)时,但是因为我把消息打平了,所以出现了不顺序消费的问题。

2.4、多线程-顺序消费

通过对消息中的业务key(本文中的userid)做路由,如下图中的接收线程中的hash再路由到固定的线程,从而实现本批次的顺序消费。此处参考了Netty的Reactor模型加分项)。
在这里插入图片描述

  • 偏移量什么时候提交?
    本批次全部消费完提交,不论失败与成功。使用CDL。
  • 消费失败怎么办?
    记录日志,人工接入。

3、案例拓展

  • 大盘监控:完善的监控报警方案,早发现早治疗,别等用户反馈。老板喜欢看大盘。
  • 变更通知:操作前一定要周知上下游,包括异步链路。
  • 批次灰度:上一批观察一下兄弟团队反馈,没问题推下一批。
  • 流量隔离:针对此方案,我们专门搭建了一个消费消费的分组或集群,能实现上述情况出现时不影响正常流量。

一起学习,共同进步👇👇👇

在这里插入图片描述

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值