社交软件红包技术解密(九):谈谈手Q红包的功能逻辑、容灾、运维、架构等

b. 对账补送解决不少发的问题:

发货失败是不可避免的,诸如网络波动/游戏方发货接口故障之类的问题都可能导致调用发货接口失败。在同步领取环境下,用户可以通过重试在一定程度上解决这个问题。但是对于异步发货,用户点击领取后发货请求由{4.1 AMS 外网发货新 OP}放入 MQ 中就算成功了,即使后台调用游戏的实际发货接口失败了没有实际到账,用户对此也无感知不能进行重试但是会投诉,后台发货系统必须通过自身的容错保证即使游戏方的发货接口不稳定偶尔会失败,用户所领的礼包能最终到。这里我们使用了对账补送方案。

对账:用户领取礼包调用的接口{4.1 AMS 外网发货新 OP}成功写应发流水,{4.3 AMS 内网发货 OP}调用游戏方发货接口的写实发流水,由于部分消息会堆积在消息队列中,这部分称为队列堆积流水。故实际要进行补发操作的流水由以下公式可得:
失败补发流水= 应发流水 - 实发流水 - 队列堆积流水。

由于订单号的存在,可以保证同一个发货请求重复发送也不会多发,对队列中堆积的消息提前进行补发操作也不会导致多发。故当队列中堆积的流水较少的时候,采用应发流水与实发流水的差集作为失败补发流水是合理,只是每个对账周期会对队列中堆积的消息进行两次发货操作,对性能略有损耗。

后台每个小时运行一次增量对账功能,检测 MQ 消息堆积量量低于某个阈值,则进行对账操作,截取上次对账到此时的应发流水/实发流水,两者相减得到补发流水。

补送:对对账操作得到的补发流水调用游戏方发货接口进行发货补送操作。

架构16 社交软件红包技术09相关推荐

  1. 架构17 社交软件红包技术10

    社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践 1)入口配置: 包含活动入口吊坠.小程序入口Banner和一些控制开关等配置内容.春节红包活动横跨小年.除夕.大年初一,每天有4 ...

  2. 架构11 社交软件红包技术03

    四.摇一摇红包系统组成 红包系统由三部分组成: 1)信息流: 2)业务流: 3)资金流. 这三部分在组织架构上由不同的后台团队完成: 1)信息流--微信后台: 2)业务流--微信支付后台: 3)资金流 ...

  3. 架构12 社交软件红包技术05

    如上图所示,微信红包的业务包含包.发.抢.拆.查询发送红包和收红包数量,其中最关键的步骤是发红包和抢红包. 微信红包是微信支付的商户,微信红包这个商户出售的是钱.发红包用户在微信红包平台使用微信支付购 ...

  4. 架构09 社交软件红包技术01

    4.1.接入层 接入层是红包后台服务的大门,负责抽奖请求预处理,确保有效的请求才透传给后端服务.为保证自身高可用.高稳定,接入层还可实时控制手机 QQ 请求频率,避免海量请求压垮接入层,出现不可控局面 ...

  5. 即时通讯技术文集(第15期):IM跨平台和社交软件红包技术 [共19篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第15 期. [- 1 -] IM跨平台技术学习(一):快速了解新一代跨平台桌面技术--Elec ...

  6. 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等

    本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...

  7. 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等...

    本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...

  8. 微博红包技术探究:架构、防刷、监控和资源调度

    编者按 每年的红包大战都是用户的现金盛宴,对于整个系统却是残酷的考验. 与传统意义上的红包相比,近两年火起来的"红包",似乎才是如今春节的一大重头戏.历经上千年时代传承与变迁,春节 ...

  9. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2013年下半年系统架构设计师考试论文真题(论软件可靠性设计技术的应用)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2013年下半年系统架构设计师考试论文真题(论软件可靠性设计技术的应用) 论软件可靠性设计技术的应用 随 ...

最新文章

  1. 2022-2028年中国康养地产行业市场需求前景及投资战略分析报告
  2. 会议冲突!临时更新客户端!这些在线视频会议痛点统统解决掉!
  3. 中国移动短信网关CMPP3.0 C#源代码:使用示例
  4. Linux下的buffer与cache
  5. python3的float数精度_python浮点数精度问题
  6. aop阻止方法运行_新型AOP高级氧化高浓度COD废水处理系统介绍
  7. Parameter '**' not found. Available parameters are [0, 1, param1, param2]解决办法
  8. android 编译 sdl,SDL编译 - Android本地视频播放器开发_Linux编程_Linux公社-Linux系统门户网站...
  9. 在java编程中会使用汉字字符_在java程序中将中文字符写入文件中或者是将文件中的中文字符读入程序时会出现乱码或者一串“?”,求...
  10. 关于ajax页面里的js方法无法使用的解决办法
  11. [Js插件]使用JqueryUI的弹出框做一个“炫”的登录页面
  12. 线程安全(thread-safe)介绍
  13. 2M口,电口,光口的区别
  14. 鸿蒙os系统3.0电脑,华为鸿蒙系统升级指南,速看!
  15. 搭建自己的存储服务器NAS
  16. AngularJS中的双向数据绑定
  17. 三点求圆心坐标(三角形外心)
  18. Android学习-指南针(方向传感器)
  19. 刷机升级Android版本,ROM之家简析:Android手机系统怎么升级
  20. 计算字符串长度.length()和数组长度.length的区别

热门文章

  1. 设计一个 60T 的医院数据仓库及其 OLAP 分析平台,你怎么做?
  2. python擅长做什么工作_【一点资讯】Python是个什么鬼?为何火遍国内外……
  3. 网络通信-滑动窗口协议-SWP
  4. 微型计算机中使用的数据库管理系统,微型机数据库管理系统—dBASE-Ⅲ 董长德编.pdf...
  5. Altium Designer 22 中文字符乱码
  6. 【Linux 系统】文件系统--- Buildroot 从零开始制作文件系统 史上最详细
  7. 比以往来得更猛烈的免费WiFi
  8. VC 之获取硬盘序列号
  9. 利用原始socket简单实现FTP的客户端和服务器端程序
  10. H5游戏开发引擎的基本使用