热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里二面被问RocketMQ延时消息方案?14:03进去的,14:08就出来了…

在后端开发中,高并发电商业务的开发、架构设计难度堪称一绝,而在电商系统中,又数大量定时任务的业务场景最为棘手。所以,一提起电

在后端开发中,高并发电商业务的开发、架构设计难度堪称一绝,而在电商系统中,又数大量定时任务的业务场景最为棘手。所以,一提起电商系统,MQ的使用是一个绕不开的话题。

像阿里、京东这样有电商业务的公司,和抖音、快手这样的电商后起之秀,延时队列方案是面试重点考察的核心之一,    比如:

  • 延时队列都有哪些方案?

  • 如何实现一个秒级延时消息系统?

  • Kafka、RabbitMQ、RocketMQ适用场景分别是什么?

cdf587878d077f792317ef031f3f0e52.png

 1 

电商业务面对的延时消息挑战

提起延时消息场景,大多数人马上就会想到以下几个:

  • 实现买卖双方在线沟通的IM系统

  • 自动取消长时间未支付的订单

  • 买家收货一段时间以后自动确认打款

在业务规模小时,定时扫库就可以解决问题,但会有1min左右延迟。业务规模大时,数据库读取压力会急剧上升,甚至会拖垮数据库,这时就需要更优雅的技术方案解决定时任务问题了。

 2 

转转二手电商的高可用延时消息中台

转转作为58集团旗下的二手电商APP,近两年发展迅猛,迅速成为国内数一数二的二手交易平台。随着业务不断发展,转转延时消息方案亟待升级和变革。

在转转自研的高可用延时消息方案中,创新引入时间轮算法,高效、高精度地实现了延时消息场景。

a324971146e93108e3c191fd2f244f3c.png

Current Pos指向数组中某个桶,每秒钟向下移动一次,指向下个桶

而由于时间轮将数据放在应用进程内存中,可靠性较差,转转技术团队又再次迭代架构,选择用Redis中的List和String两种数据类型实现时间轮,提高了数据可靠性,同时可以多个实例访问时间轮,避免了单点问题。

a99e78b10da33594eaedd49541fb245d.png

Redis 实现时间轮

但这时,新的问题又出现了。现在的时间轮可以满足秒级定时任务,如果时间跨度较大,超大的轮子会占用非常多内存资源;另一方面,目前的时间轮方案固然惊艳,但它还只是一个逻辑功能,其他业务方只能不断重复造轮子才能使用……又该如何解决?

 3 

手把手教你打造延时消息中台

这套优雅架构由前转转高级架构师/技术委员会核心成员陈东(东哥)设计并落地,完美解决了转转的延时消息业务需求,一经公开就在业内引起了不小反响。

现在,东哥将这次宝贵的企业级实战,整理成了一堂《手把手教你打造一个高可用延时消息中台》公开课,直播中,东哥不仅会详尽讲解这套方案的精华所在,还会和大家畅谈 2022 程序员的职业抉择与弯道超车4月12日~13日晚20:00,直播间不见不散!公开课原价299元,限时0元免费报名!

0f9ef3de1b69573d38a31c81c6691339.png

课程市场价299元

前100名开放0元免费学

仅限48h,即将涨价!

获得Top1%架构师的2天实战精华

👇👇👇

52fd825f7f43834f2e83560011a12434.png

打破困局,扫码即刻开始👆

现在报名免费加赠

金三银四【简历指导】服务

4月12日 - 4月13日晚20:00,0元免费报名。主讲东哥是前转转资深架构师/技术负责人跟着陈东老师提升架构的底层能力和项目优化的核心技术,有问题就在直播间和群里随时提问,几乎没有什么好顾虑的。

公开课有多实用,看看目录你就懂了:

0542aa52eee6913a9d98f3bc5ab6abe9.png

另外,现在报名还免费赠送前端金三银四【大厂内推】服务,腾讯、字节、阿里、网易、微软、转转、谷歌、美团等超一线大厂免费内推机会,在通过实战课程提升能力的同时,也为你提供升职加薪全新契机。

877d5a7b4f618d45c82854d1ecc03963.png

明星级教学教研团队

金牌教研团,平均从业年限10年以上,具备大厂实战经验,对技术深度钻研,对教学精益求精,历时半年精打细磨。

ec72758560ac8b163dfc02073d651bfe.png

行业大咖级主讲,前转转高级架构师/基础架构平台负责人,奈学教育科技联合创始人。

02c9177a509ada6e87fe6c7911b90edc.png

备教测练评学习闭环,帮助学员循序渐进提升技术硬实力,老师全程辅导,稳步提升职场软实力。

369a96a594a71235aba34dddc1c436ee.png

行业名师好评如潮

教研教学更有保障

b56098fee57993f7efe4aff797846b95.png7eb012480f4e1427a2b5c8c2db475ea8.png1db8fa1fb981d9f69854a4cd13ae18b4.png

左右滑动查看更多

架构师必备的高可用延时消息方案设计

你需要真正掌握它!

11节干货,2天直播速成

前100名开放0元免费学

仅限48h,即将涨价!

获得Top1%架构师的2天实战精华

👇👇👇

355ca2567b2c1e0e3024d7012bab689e.png

本公众号仅限前50名特惠购买

请耐心等待课程顾问通过

55c5f9e22a9a2a61f2ca0af3828d953a.gif

0元免费好课

赠送金三银四【名师答疑】服务

👇 点击“阅读原文”抢占优惠名额!


推荐阅读
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 深入解析队列机制及其广泛的应用场景
    本文深入探讨了队列机制的核心原理及其在多种应用场景中的广泛应用。首先,文章详细解析了队列的基本概念、操作方法及其时间复杂度。接着,通过具体实例,阐述了队列在操作系统任务调度、网络通信、事件处理等领域的实际应用。此外,文章还对比了队列与其他常见数据结构(如栈、数组和链表)的优缺点,帮助读者更好地理解和选择合适的数据结构。最后,通过具体的编程示例,进一步巩固了对队列机制的理解和应用。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 分布式一致性算法:Paxos 的企业级实战
    一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ... [详细]
  • Alibaba珍藏版mybatis手写文档,值得一读!
    一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • php redis 消息队列_redis怎么实现消息队列?
    把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取。本文主要和大家分享redis如何实现消息队列,希望能帮助到大家 ... [详细]
  • 题目难度:★★☆☆☆ 类型:算法你是一名经验丰富的窃贼,计划对一条街道上的房屋进行盗窃。每栋房屋内都存放有一定数量的现金,但你的行动受到一个关键限制:相邻房屋安装了相互连接的报警系统,因此不能连续偷窃两间相邻的房屋。为了最大化收益,你需要设计一种高效的算法来确定最佳的盗窃方案。本文将通过 Python 代码实现这一问题的优化解决方案,并详细解析其背后的数学原理和算法思路。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 如何提升Python处理约1GB数据集时的运行效率?
    如何提升Python处理约1GB数据集时的运行效率?本文探讨了在后端开发中使用Python处理大规模数据集的优化方法。通过分析常见的性能瓶颈,介绍了多种提高数据处理速度的技术,包括使用高效的数据结构、并行计算、内存管理和代码优化策略。此外,文章还提供了在Ubuntu环境下配置和测试这些优化方案的具体步骤,适用于从事推荐系统等领域的开发者。 ... [详细]
  • 乐观锁_乐观锁 VS 悲观锁
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了乐观锁VS悲观锁相关的知识,希望对你有一定的参考价值。 ... [详细]
  • RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP,SMTP,STOMP,也 ... [详细]
  • 摘要:本文中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的 ... [详细]
author-avatar
davychen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有