红包,这几年最火的营销系统。各大厂,无论双11、春节都花费了大力气,五花八门的产品竭力吸引眼球。

那么如何设计一个能抗住亿级并发的红包系统了。这恐怕对任何一个团队来说,都是一个很大的挑战。经过这几年的大促红包开发(AR小狮子,红包雨等),我们苏宁团队也在系统架构设计上积累一些经验。

架构设计

核心业务系统架构设计做到大系统小做,各个服务之间做到高内聚低耦合,服务之间做到异步化,突发事件的时候能够做到对非核心业务进行降级,保证核心功能可用,最大程度保证用户体验。

系统主要分前台和后台两个模块。

  • 后台:主要负责活动信息、奖项信息配置,并实时下发前台系统。
  • 前台:主要提供了活动资格校验、奖项配额扣减、概率服务、奖项列表服务等。

后台配置管理

后台配置管理维护活动信息及奖项信息,通过MQ下发给前台系统。前台系统将配置刷入本地缓存中。

准入验证

活动开启时间的,用户级别、是否实名认证,每天活动期间抽奖次数验证。

奖项配额管理(库存扣减)

在大规模的流量下,我们要做到奖项数量不多发、不少发,还有合理的奖项发放能力和发放速度。保证整个活动按照产权预期效果执行。

强大的奖项处理能力。通过概率服务计算完之后,奖项数量通过redis做扣减,异步落DB和异步发放。

异步发奖

通过MQ的形式,通知下游系统(促销中心,易付宝),发放券和现金红包。和下游系统完全解耦,在大流量并发场景下,保护下游系统,不被外部系统拖死。

数据实时计算

为了前端准确展示和数据决策的需要,我们需要知道准备的已发放的红包数和现金数。基于多个IDC的多集群部署,我们需要多IDC的数据汇聚进行统计,我们通过数据库Binlog抽数单向复制汇聚主机房,然后写入kafka,通过spark的流式计算获得秒级数据,写入缓存。

流量控制与防刷

如何顺利扛过流量洪峰,我们通过客户端过载保护、流量清洗、流控控制、风控防刷、单机保护来保证系统平稳的运行。而且在过载保护和流控的时候,我们通过客户端的预埋逻辑来展示未中奖的彩蛋,保证用户体验。

  • 客户过载保护:在客户端层面进行流量拦截,在系统处于过载状态的时候,通过客户端的预埋逻辑,获取实时配置,根据实时配置来限制流量往后发送。通过长连接推送和拉的形式来实现配置实时下发。
  • 流量清洗:通过CDN和应用防火墙WAF进行流量清洗,有效的防止CC和DDOS等流量恶意攻击。
  • 集群限流策略:通过WAF层来实现流量控制,总量通过令牌桶算法限制总量,通过其他行为策略(单IP,单UA)来限制异常流量。
  • 单机限流策略:限制单台机器的总访问QPS,对超过阀值的流量进行限流。限制单机接口粒度的访问QPS,对超过阀值的流量进行限流。
  • 风控防刷策略:通过用户账号质量,用户行为,用户属性(各种认证),恶意IP等策略来进行风控防刷。

资源管理

单元化部署

路由层(CDN层上实现)根据用户的会员号,按照规则算法(取模等),垂直上下切分,形成各个独立的集群。将流量分散到各个集群中,互不影响。而且不同集群可以部署到不同的机房。

故障切换

通过单元化的部署,在某一个IDC出现网络问题或不可预测的问题,可以短时间修改路由规则将流量切换到其他IDC集群。

弹性扩容

服务层扩容: 利用苏宁云的Docker的快速部署服务,当流量峰值超过预期的时候,通过Docker自动化操作集群,对服务层进行弹性扩容。

数据库扩容: 数据库部署为1主2备。预先设计好多个分表(比如512个表)并分配好主备对应的分表。在需要对数据库层进行水平扩容时,将备库切为写库,同时一键切换MYCAT的配置。

链路压测

任何系统设计再完美,也不能保证在线上能够完美达到预期,我们需要对系统在线上生产环境进行性能压测。通过整个链路的压测,我们能够清晰的了解我们各个服务间的能力和瓶颈(主机、数据库、网络、带宽等),能够针对瓶颈有效指定降级方案。

内部预热和流量模型修正

前期在产品设计阶段,我们通过往年数据和计划引流方案,估算到各个页面和各个系统的流量模型,通过模型来预估我们的系统容量。

在产品真正对外之前,发起几轮内部的预热,进行业务的演练,测试部分功能问题和体验问题。同时,通过页面埋点,根据真实的用户行为习惯,修正我们预估的流量模型,能够更好的来分配我们资源。

系统监控

当系统正式上线运行时,我们需要实时了解系统各个资源运行状态,流量大小,业务参数。充分的保障业务节点的可用性、性能可靠性。及时发现突发状况,按照预先准备的降级手段进行降级。

目前苏宁的监控手段还是比较丰富的,通过云迹(日志)、调用链监控、ZABBIX等平台,可以全面监控到:服务器负载监控、资源层负载监控、网络层监控、应用层接口监控、应用日志监控、应用服务器jVM层监控。

小结

每年的红包大战还在继续,越来越多的营销产品的不断迭代,对我们IT团队提出更高的要求。系统架构设计是没有最终完美的,我们需要根据不同产品形式和要求,不断迭代和重构我们的系统。未来,我们脚下的路还很长,苏宁IT人还在砥砺前行。

作者简介

夏成,苏宁易购IT总部消费者研发中心架构师,主要负责易购主站核心交易中心各系统的架构设计优化与大促保障工作。曾负责历次苏宁大促红包系统架构设计、苏宁小店系统开发、支付中台系统重构、流量控制组件开发。专注于打造高可靠、高性能、高并发服务系统的技术研究。

苏宁11.11:如何 hold 住大促红包相关推荐

  1. 深度干货 | 双十一电商大促流量承接与变现的产品设计分析

    2015年的双十一电商大促已经谢幕,回想起除了那些高到令人咂舌的数据以外,是否还有那些铺天盖地而来的广告宣传,这是千亿成交的第一步,曝光与流量:下一步就是流量承接的产品页面,如:大促会场.SNS活动. ...

  2. 中通大数据平台在大促中的进化

    一年一度的双十一又双叒叕来了,给技术人最好的礼物就是大促技术指南! 而经过这些年的发展,大促早已不仅仅局限于电商行业,现在各行各业其实都会采用类似方式做运营活动,汽车界有 818,电商有 618 .1 ...

  3. 解救电商大促没灵感的设计师|攻略模板奉上

    每逢大促前,最忙都是我们这些苦逼的设计师啊.作为设计师的你们,今年的页面做的怎么样了啊? 2020年双11即将来临,电商行业工作者又开始忙碌起来.设计师们迎来一个又一个页面需求.那么在做大促页面的时候 ...

  4. 电商企业营销案例方案:2019年618大促用红包推广引流

    2019年全网天猫京东苏宁等平台"618大促"还有两三个月,小编倾情呈上新鲜出炉的2019年"618大促"#红包攻略#!说到红包,它在营销引流上可以为企业拉取新 ...

  5. 轻松hold住双11数据洪峰背后的秘密

    双11刚刚拉下帷幕,激动的心还停留在那一刻--当秒针刚跨过11号零点的一瞬间,来自线上线下的千万剁手党在第一时间涌入了这场年度大趴--从进入会场到点击详情页,再到下单付款一气呵成. 前台在大家狂欢的同 ...

  6. 大促下的智能运维挑战:阿里如何抗住“双11猫晚”?

    作者 | 阿里文娱技术专家子霖 出品 | AI科技大本营(ID:rgznai100) 2019 双 11 猫晚在全球近 190 个国家和地区播出,海外重保是首要任务,如何提升海外用户观看猫晚的体验?本 ...

  7. 看苏宁易购的运营保障体系如何hold住818大促

    运营质量的好坏关系着用户的体验.在日常的业务运营过程中,商品无货.页面或券过期.商铺下架.视频无法播放等问题都严重影响用户体验.如果仅凭运营的人工监控和维护来保证服务质量,不仅效率低,而且效果也不佳. ...

  8. 苏宁11.11:苏宁易购订单搜索系统架构及实现

    背景 随着苏宁易购平台规模的飞速发展,平台的订单量呈现指数级的增长,存储容量已达TB级,订单量更是到了万亿级别,尤其在双11大促流量洪峰的场景下,面临两个挑战: 1.如何存储如此巨大的数据量 2.如何 ...

  9. 【云周刊】第146期:史上最大规模人机协同的双11,12位技术大V揭秘背后黑科技...

    摘要: 史上最大规模人机协同的双11,12位技术大V揭秘背后黑科技,INTERSPEECH 2017系列 | 语音识别之语言模型技术,机器学习初学者必须知道的十大算法,云数据库SQL Server 2 ...

最新文章

  1. 【CV】深度学习中Epoch, Batch, Iteration的含义
  2. 一次900万+数据量 SQL 查询优化后的原理总结!
  3. 深度神经网络:WX+b vs XW+b
  4. win32中GBK、UTF8的互转
  5. CI框架源码阅读笔记4 引导文件CodeIgniter.php
  6. 不同协议的数据包如何处理_【项目申报专员】如何处理各种不同的项目申报工作呢...
  7. python 横坐标旋转,python 横坐标旋转
  8. K8S安全军规101:对CNCF最佳实践的扩充
  9. 先验、后验、似然、置信的理解
  10. 页面重绘和回流以及优化
  11. 开源正在蚕食 500 亿美元的数据库行业!
  12. 卑微测试员自述:入职新公司一个月,就让我做自动化测试?!
  13. 使用as3控制动画的播放与暂停
  14. linux补丁服务,Linux补丁程序管理_补丁工具 _ ManageEngine Desktop Central
  15. 计算机工程制图课程安排,2017工程制图课程简介
  16. 太酷了!金山云重磅开源鎏光云游戏引擎
  17. 直播系统开发,直播平台源码切忌一成不变
  18. CREATE TABLESPACE命令详解
  19. linux下vi编辑器方向键变成字母的解决方法
  20. JavaScript网课一

热门文章

  1. yjk只算弹性的不计算弹塑性_YJK的优势
  2. layui如何刷新iframe页面
  3. C语言—找出单身狗(2个)
  4. (一)线程安全问题-线程锁(synchronized的使用)
  5. 耳朵经济频现风口,荔枝能把握住吗
  6. jquery制作王者荣耀英雄详情表
  7. 【WORD文档部分消失】元素结束标记中的名称必须与开始标记中的元素类型相匹配
  8. 【Linux】时间同步
  9. java 乘法保留两位小数,Java保留两位小数的方法
  10. 基于 MFC+Halcon 实现图像缩放、平移