骑士卡:基于Kafka搭建消息中心,上亿消息推送轻松完成

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 消息中心作为业务运营推广的基石,发挥着重要作用。使用消息队列Kafka即可构造建设一个高性能、高稳定性、可扩展的消息中心,完美契合骑士卡高速发展过程中遇到的需求。

作者:折松,阿里云解决方案架构师


全球购骑士卡是国内领先的会员制特权电商平台,汇聚国内外“吃喝玩乐买”超300项会员专属优惠特权。全球购骑士卡基于移动互联生活方式,打通线上、线下消费场景,汇集时下热门、高频的商品及服务优惠。会员可享全国超万家大型商超购物8折起、全国加油7折起、热门电商平台专属4折起、大牌美食餐饮5折起等,满足用户吃、喝、玩、乐、买各场景的消费需求。截至2020年,全球购骑士卡已累计服务用户超5000万名。2020年4月,全球购骑士卡完成A轮数千万美元融资;同年5月,全球购骑士卡完成数千万美元A+轮融资。


新的需求


全球购骑士特权业务的飞速发展,当前每天平均发送的短信量达到了约200万+,需要PUSH的推送量达到了约1亿+,通过微信推送量达到了5000万+。因此,如何构造建设一个高性能、高稳定性、可扩展的消息中心迫在眉睫。


消息中心技术选型主要参考以下因素:


  • 削峰填谷能力:消息中心需要处理各条业务线的通知和营销任务的信息,而这些信息根据转化的需要,很大可能会集中化地在短期内进行推送,所以需要系统有削峰填谷的能力。
  • 接口通用能力:消息中心的接入方不希望被绑定在某个接口上,不需要对该接口进行维护可以供多个业务方进行发送处理。
  • 活类型划分:消息中心需要支持灵活的业务分类配置, 因为我们消息中心这里的业务配置非常多,大类就有短信、PUSH、微信推送,短信里又分通知、验证码和营销类别,而PUSH又区分APNS、渠道服务商等第三方通道,以及Android厂商通道。
  • 稳定处理能力:所依赖的技术产品运行稳定,因为处于消息中心的通道位置,不能忍受产品本身的稳定性波动带来的业务损失。
  • 集群扩展能力:所依赖的技术产品没有扩容瓶颈,对于我们的业务继续发展有扩展的足够空间,可以快速进行业务扩容诉求。


新的解法


image.png


使用消息中间件来做消息中心的通道是显现而见的目标选项,综合对比多种消息的产品,由于骑士卡并没有需要顺序消息、事务消息等高阶功能,而是重点关注以下这些功能点:


  • 队列的扩展能力: 在这方面,RabbitMQ的单Queue的处理能力不容易扩展;而RocketMQ的Topic是有ConsumerQueue的参数来进行配置扩容的,在Broker的配置文件里指定,但是对Broker层面生效的;而Kafka的Partition可以每个Topic拥有不同的取值。这样在分类灵活性方面,Kafka是最优的选择,RocketMQ次之。
  • 通用的接入方式:本质上RabbitMQ、RocketMQ、Kafka都是私有协议的方式接入,比较云上商业版本的接入方式,对于Kafka支持最纯粹友好,可以使用官方的接入方式进行接入。
  • 消息的吞吐能力:在各类消息的对比测试中, 因为Kafka本身的处理机制原因,都是由客户端进行拉消息,整个broker的处理方式比别的消息中间件要简洁,而Kafka的读写能力/吞吐量都是最大的。
  • 集群稳定性能力:云上的消息产品都很友好地保持业务的连续性来进行升配操作,并且对于商业版本的Kafka做了Broker上的优化,存储上的优化,运维上的优化后,不需要担心自建集群出现的不稳定问题,完全满足骑士卡的需求。


业务价值


使用Kafka构建消息中心,对骑士卡来说最重要的是保障了业务的稳健。利用Kafka的吞吐能力,自定义的partition设定(扩展),通过弹性扩展消费者实例的方式,自消息中心上线以来,一直运行平稳,没有出现过影响业务的故障。


同时,系统运维起来十分简单。利用云上的Kafka能力,避免了测试期自建集群莫名其妙的Broker故障,不需要投入额外的资源来保障消息中间件正常工作。并且可以通过白屏化的升级操作来匹配骑士卡的业务发展,也可以按需要来快速调整实例数。


值得一提的是,使用云产品Kafka,无论在生产环境还是本地开发测试环境,都可以直接使用云产品,最大限度减少通用产品依赖,让团队专注于业务的开拓实现,极大的提升了团队工作效率。


“在全球购骑士卡消息中心的搭建过程中,我们使用阿里云的Kafka完成了消息中心高吞吐量,稳定以及可扩展的目标。目前,消息中心作为业务运营推广的基石,发挥着重要作用,对于新业务的接入,通过消息队列的配置修改即可完成,对现有业务可以做到无侵入,尽可能的减少了故障发生的可能。”

——骑士卡CTO


关联产品:

消息队列 Kafka


扫码了解更多技术内容与客户案例:

image.png


相关文章
|
消息中间件 Kafka
Kafka对于消息顺序性的最佳实践
Kafka对于消息顺序性的最佳实践
|
消息中间件 存储 缓存
不看损失大了,刨根问底,Kafka消息中间件到底会不会丢消息
不看损失大了,刨根问底,Kafka消息中间件到底会不会丢消息
631 10
不看损失大了,刨根问底,Kafka消息中间件到底会不会丢消息
|
消息中间件 存储 缓存
Kafka快速入门(生产者)同步异步发送、分区、消息精确一次发送、幂等性、事务
Kafka快速入门(生产者)同步异步发送、分区、消息精确一次发送、幂等性、事务
Kafka快速入门(生产者)同步异步发送、分区、消息精确一次发送、幂等性、事务
|
消息中间件 监控 Kafka
发送kafka消息的shell脚本
开发和学习时需要造一些kafka消息,于是写了段脚本实现,在这里记录备忘,后面会常用到
402 0
发送kafka消息的shell脚本
|
消息中间件 存储 SQL
阿里云消息队列 Kafka-消息检索实践
本文章主要介绍消息队列使用过程中所遇到的消息丢失、重复消费等痛点问题的排查办法,以及消息队列 Kafka「检索组件」的场景实践,并对其关键技术进行解读。旨在帮助大家对消息队列 Kafka「检索组件」的特点和使用方式更加熟悉,以更有效地解决消息排查过程中所遇到的问题。
阿里云消息队列 Kafka-消息检索实践
|
消息中间件 存储 Kafka
kafka消息丢失的场景分析
kafka消息丢失的场景分析
366 0
kafka消息丢失的场景分析
|
消息中间件 运维 Kafka
【kafka问题】记一次kafka消费者未接收到消息问题
出现了这样一个问题, A说他的kafka消息发送了; B说它没有接收到; 那么问题来了: • A的消息是否发送了? • 如果A的消息发送成功了; B为何没有消费到? 好,带着上面的问题,我们来一步步排查一下问题所在
【kafka问题】记一次kafka消费者未接收到消息问题
|
消息中间件 存储 缓存
双十一期间Kafka以这种方式丢消息让我猝不及防
双十一期间Kafka以这种方式丢消息让我猝不及防
双十一期间Kafka以这种方式丢消息让我猝不及防
|
消息中间件 存储 设计模式
一文读懂kafka消息拉取机制|线程拉取模型
一文读懂kafka消息拉取机制|线程拉取模型
一文读懂kafka消息拉取机制|线程拉取模型
|
消息中间件 存储 负载均衡
Zookeeper搭载kafka消息发布和订阅
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。 分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、 集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
184 0

相关产品

  • 云消息队列 Kafka 版