转转二手电商延时消息中台架构设计实践(Redis+时间轮+RocketMQ 优雅方案)

2022-04-08 12:46:11 浏览数 (1)

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

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

  • 延时队列都有哪些方案?
  • 如何实现一个秒级延时消息系统?
  • Kafka、RabbitMQ、RocketMQ适用场景分别是什么?

1

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

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

  • 实现买卖双方在线沟通的IM系统
  • 自动取消长时间未支付的订单
  • 买家收货一段时间以后自动确认打款

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

2

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

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

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

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

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

Redis 实现时间轮

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

3

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

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

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

课程市场价299元

前100名开放0元免费加入

仅限48h,即将涨价!

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

0 人点赞