上云无忧 > 文档中心 > 腾讯云消息队列 CMQ 版实战教程 - 春晚微信红包案例
消息队列 CMQ 版
腾讯云消息队列 CMQ 版实战教程 - 春晚微信红包案例

文档简介:
春晚红包活动涉及四个大型系统的联动,包括微信、微信支付、红包系统和财付通系统。以下简单介绍各个系统: 红包系统:个人红包的发、抢、拆和列表查看; 财付通系统:包括支付订单、异步入账流水的高性能存储,用户余额和账单的实时展示;
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
春晚红包活动涉及四个大型系统的联动,包括微信、微信支付、红包系统和财付通系统。以下简单介绍各个系统:
红包系统:个人红包的发、抢、拆和列表查看;
财付通系统:包括支付订单、异步入账流水的高性能存储,用户余额和账单的实时展示;
微信接入:确保微信用户公网接入的质量;
微信支付:在线交易的入口。

类似红包系统的分布式事务是关注的热点。举一个典型的例子,『用户 A 给用户 B 发了10元的红包』,有以下步骤:
1. 从 A 账号中把余额读出来。
2. 对 A 账号做减法操作(减10元)。
3. 把结果写回 A 账号中(一次确认)。
4. 从 B 账号中把余额读出来。
5. 拆开 A 发送给 B 的红包,读出数值。
6. 对 B 账号做加法操作(加10元)。
7. 把结果写到 B 账号中。
为了保证数据的一致性,上述步骤只有两种结果:都成功完成或者都不成功执行回滚。而且这个操作的过程中,对 A、B 账号还需引入分布式锁机制来避免脏数据的问题。在微信红包这个庞大的分布式集群内,事情将变的异常复杂。
微信红包系统引入了 TDMQ CMQ 版以避免分布式事务增加对系统的开销。同样 A 用户给 B 用户发10元红包的场景,下面介绍引入TDMQ CMQ 版后的新策略。
在上述案例中的第七步,B 用户拆开了红包,红包里有10块钱。在做最后的入账操作时由于当天并发压力大,常出现入账失败的情况。
红包团队把入账失败的请求,全部转入TDMQ CMQ 版。当B用户更新账户余额失败时,手机客户端显示等待状态。随后账户系统将不断从TDMQ CMQ 版重新拉取重试此更新操作。TDMQ CMQ 版保证了这 10 元的入账消息永远不丢,直至它被取出。
在除夕当天,用户红包的发、拆、入账等动作,转化为了十亿级别的海量请求。若使用传统的事务方式,会放大并发压力使系统崩溃。
TDMQ CMQ 版消息队列保证了红包消息的可靠存储、传递,实时写三份保证数据不丢。资金入账失败时可多次重试,避免失败回滚和频繁轮询数据库等传统方式的弊端。
相似文档
  • 与微信支付紧密合作的第三方移动金融支付解决方案提供商,如深圳威富通等,促进了全国各行各业的线下商铺的发展,通过微信支付,提高效率,免除现金结算的低效率。
  • 阅文集团旗下的起点文学网,使用 TDMQ CMQ 版满足了3个核心需求: 1. 『仗义书财』的运营系统,里面抢红包月票的功能,消费者入账的时候是异步的。入账信息会先写到 MQ 里。 消费者过来拉,且消费者确认已成功消费后,回调接口把 MQ 里的信息删掉。
  • 投递描述: CMQ 通过发送 POST 请求将主题消息推送到订阅的 HTTP Endpoint 端,消息格式支持两种:JSON 格式和 SIMPLIFIED 精简格式。 JSON 格式:推送的 HTTP 请求 Body 包含消息的正文和消息的属性信息。Content-type 为 text/plain。
  • 新版 CMQ 与原 CMQ 参数差异说明: 新版 CMQ 在数据流(消息收发)SDK 的用法和语法上与原 CMQ 一致,但有些参数与特性会和原 CMQ 有一定的差异。这些差异新版 CMQ 会通过特殊设置这些参数来保证在您迁移之后不会改变原有的生产消费逻辑,但如果是新建的队列或主题则尽可能参考新 CMQ 的逻辑进行设置。
  • TDMQ CMQ 版可以使用外网域名吗? TDMQ CMQ 版可以使用外网域名,具体地址在控制台的 API请求地址获取。推荐您使用内网域名,使用外网会收取流量费用,且外网时延可能费用较高。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部