背景:

某日, 我们的业务开新城, 运营配错了一个冲单奖活动,原本是想配成月度冲单奖, 达到300单有奖。 但是错配为天天冲单奖。 结果任何骑手都不可能触发这个冲单奖励。  且运营直到6月26日才发现配错, 找到研发和产品要求做善后补救。 希望在对用户无感知的情况下, 完成线上数据修改和数据迁移。

讨论运营事故善后处理方案:

大家先直观的拿出两个方案来, 1是在现有的活动数据基础上做修改。 2. 是创建一个新的活动记录, 并把旧活动的订单奖励数据平滑迁移到新活动上, 同时完成数据修复。

最终确定方案2, 原因是, 方案1对线上数据改动量大, 改动条目太多达到几十万条, 容易出错,而且一旦出错, 数据将很难恢复。

方案2, 是新增数据, 几乎不改动现有活动数据。 而且由于运营引擎对发钱发券的操作都是幂等设计, 因此不需要编写线上数据修复脚本, 只需要重复消费订单相关的消息队列即可完成数据重建。

对于发钱发券相关的业务, 我们优先考虑数据出错的风险, 工作量评估还在其次。 第二个方案兼顾工作量和风险, 数据出错时,回滚也很容易。

风险评估:

讨论方案执行计划时,重点讨论了几种可能的意外情况

1. 消息队列重放的时候, 可能新数据和老活动数据不一致。 丢数据了。

预案: 消息队列第二次重放。 公司基础架构对消息队列服务的SLA是“不丢”, 但不保证不重复。  当讨论这个预案时, 我不觉得有被执行机会。

2. 消息队列重放的时候, 可能新数据和老活动数据不一致。 数据多了。

讨论这个预案的时候, 基于消息队列不丢消息的考虑, 认为可能会由于我们现有系统的bug导致消息在处理时被丢掉。还有在处理时可能有新订单进入系统(凌晨2点后无订单)。 因此大家认为出现数据增多这种情况时, 如果增加的订单不多, 可以抽查看一下原因就可以了。

3.消息队列第二次重放失败

重放当前消息队列的上游消息队列。

执行方案

凌晨2点, 执行计划

1. 02:21 执行更新新活动的start_time为2018-06-25 00:00:00

2. 02:24 执行 删除6月25日创建的老活动,即更新status=5

3. 02:30 停止订单消息队列的消费

4. 02:31  激活新活动

5. 02:34 mq重新启用

6. 监控看到新活动里的订单数据持续增长。

7. 期间三次调整了mq消费速度, 从200qps,一直调整到2000qps, cpu内存监控正常(也顺便做了压力测试)

8. 03.30 消费完毕, 开始数据diff。 发现新老活动的订单数据不一致。 新活动与老活动相比, 多了几百条订单, 少了1万多条订单。

9. 通过日志, 大家确认mq没有发送那几条老数据过来, 气氛紧张起来, 担心是mq丢消息。

10. 04.14, 按照预案, 重新消费消息队列, 同时大家紧张地讨论可能的原因。

11. 04.20, 很快发现, 新活动里的订单数据在涨。大家猜测可能第一次回放消息的时候调整qps导致消息没发过来。

12. 05:00, 老活动订单数据全部迁移完成,并发现多了200多单。 检查发现, 多的订单是由于系统bug, mq连续重试三次写库失败放弃重发。最终这些订单没有入库,而且没有监控报警。

善后计划执行结果和行动:数据修复成功,并发现前面遗留的bug。 把mq重试次数改成2000次。 写库失败的地方加关键点监控报警,mq第一次重放少消息的问题报给基础架构定位解决。

总结:

这次善后处理方案选择和执行计划, 事先经过了很多人几个小时的充分讨论和推演, 并且针对这次善后操作可能导致的各种意外情况准备足了预案。戏剧性的是,我们预想的意外情况也确实都发生了, 并通过事先准备好的预案解决。 最终数据diff确认本次善后方案执行成功。

这次的善后处理真的是, 按部就班,有备无患, 处变不惊。是一次非常成功的best practise。

转载于:https://www.cnblogs.com/realzjx/p/9233514.html

一次运营配错活动的技术善后处理。相关推荐

  1. brew 一直等待_壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破-股票外汇期货配资门户...

    壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破,以下内容由中讯财经网编辑整理,下面跟随小编一起看看关于壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破的最新消息吧! 铜等 ...

  2. 广东省计算机教育软件,2018年广东省计算机教育软件评审活动-教育技术中心.doc...

    2018年广东省计算机教育软件评审活动-教育技术中心.doc - PAGE 2 - - PAGE 15 - 2018年广东省计算机教育软件评审活动 指 南 广东省教育技术中心编 2018年4月 一.参 ...

  3. 运营学习笔记-活动运营

    活动运营 活动类型 活动运营主要分为5类,分别是拉新活动.拉活跃.拉回流.拉收和品牌类. 拉新活动 拉新活动是针对用户量不够或新增用户缺乏的情况,帮助产品注入新用户血液的活动类型.大多是在产品初期阶段 ...

  4. 万字长文|“重新定义公司:谷歌是如何运营的”——某出行产品技术VP带你解读管理和商业逻辑

    文酉,某出行独角兽公司产品技术 VP.先后在云计算.移动直播.第三方支付担任研发负责人.注重研发管理和商业逻辑,致力于通过产品技术驱动业务高速增长. · 01 · 现在的谷歌 Alphabet 的组织 ...

  5. 送技术、链资源、配资金……腾讯技术公益创投计划正式启动

    12月7日,在广州举办的大湾区科学论坛湾区科创峰会上,腾讯技术公益创投计划正式宣布启动(简称创投计划). 该计划重点关注缺乏资金资助.技术支援.运营指导.传播渠道.志愿者能力的五类公益性组织,希望以公 ...

  6. 易观与用友推出云融合产品“智能用户运营”,掀开数字营销技术新篇章

    今年突如其来的疫情影响下,企业全球数字化转型的步伐加速.据IDC预测,2021年全球会有5.5万亿美元投资在数字化转型.企业数字化转型正成为许多中国企业的核心战略,据<2019年数据及存储发展研 ...

  7. 《智能家居产品 从设计到运营》——第2章 技术搭台——与智能家居相关的技术...

    本节书摘来异步社区<智能家居产品 从设计到运营>一书中的第2章,作者:邢袖迪,更多章节内容可以访问云栖社区"异步社区"公众号查看 第2章 技术搭台--与智能家居相关的技 ...

  8. 网站运营如何做好活动策划(转载)

    原文地址:http://www.wangyeba.com/management/chyl/200911/16223.html 作为网站运营来说,主要是产品和运营两个部分,产品不是容易很快见效的,不是想 ...

  9. 淘宝天猫运营,天天特价活动规则、要求,商家攻略

    一.报名流程 1.商家报名 2.系统审核排序 3.锁定库存准备上线 4.活动开始 二.报名前的选款备货 1.选款备货 天天特价初审是机审,不是人工审核.系统会根据商品.店铺的综合评分维度进行排序,挑选 ...

最新文章

  1. 第五课.可变图结构下的归纳式学习图注意力
  2. 数据中心使用dtu远程连接oracel 9i数据库问题
  3. win10 配置 maven_home 一会儿成功一会儿失败_在macbook上运行移动硬盘里的win10和macos...
  4. 【VMCloud云平台】SCDPM(六)额外篇-DPM备份到Azure上
  5. 整合JDBC---SpringBoot
  6. Mac安装webpack报错gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1解决
  7. 网格布局(Grid Layout)
  8. python的高阶函数
  9. 【实习之T100开发】Linux 学习笔记
  10. 微软“杀”不死的数据库软件
  11. Android Studio使用Android Annotations注解框架笔记
  12. 传祺 GS4 和博越 PRO 不知道选谁?体验后的最真实的评价
  13. AutoCAD2020快捷键
  14. 计算机关机键 自动重启,电脑关机后自动重启怎么办?原因及解决方详解
  15. matlab中的矩阵求和
  16. 曾在国内外5家大厂做数据库工程师,这是他给出的5大数据库趋势预测
  17. 【转载】HTML5 控制装置陀螺仪 ( 三轴 )
  18. EpiQuik病毒RNA提取试剂盒,快速、简单、经济有效
  19. imx6ul gpio中断接收(代码)
  20. Arduino ESP32 TFTLCD ST7735 代码和原理

热门文章

  1. 程序员的7个被动收入途径——我如何每月赚 5万
  2. C#实现简单进销存管理系统EMS
  3. 从零构建区块链量化交易平台课程总结-思维模型和方法论提炼
  4. 100以内加减法练习题,打印到A4纸
  5. ORACLE 数据、表误删恢复(转)
  6. 营销老炮儿征战史:渠道开发
  7. 2017全国计算机二级报考,2017年全国计算机等级考试报考须知
  8. 路由器交换机:配置命令
  9. push与push_back
  10. Scrapy爬取中国地震台网1年内地震数据