老庙黄金2016春晚抢红包活动技术架构详解
https://yq.aliyun.com/articles/7442?spm=5176.team24.teamshow1.12.KE1gur
抢红包、秒杀等营销手段现在越来越流行了,而这种活动却带给IT攻城狮们巨大的挑战。抢红包系统从前端看起来都是很简单的,但实际上对应的后端系统却非常复杂,因为瞬时高并发所带来的问题将整个系统架构的复杂度提升了几个数量级。
![](https://oss.aliyuncs.com/yqfiles/fb150d8900b45abaaba123bfa21b0a86e9b94131.jpeg)
- 恐怖的峰值并发,并发/TPS/QPS一般都是在数万甚至数十万。(双11天猫的交易大约在10万笔/秒);
- 时效性非常强, 活动一般都在固定的时间或者事件触发,错过了就没有了;
- 稳定性要求高,只许成功不许失败。正是由于活动的时效性很强,比如春晚直播的那一两分钟,如果系统出现哪怕10秒的故障对整个活动的效果就会大打折扣;
- 性能要求高,不能慢。高并发时往往带来的就是对请求的响应时间变长,但是在促销情况下过长的延时用户是无法忍受的;
- 系统压力未知性,访问量,用户量,并发量的不可预测。在活动前一般都会做一定的预测,但是不确定性非常大,可能由于某一个特殊事件,系统访问量就会远远超于预期。因此健壮的架构必须能够承担超额的访问量,并且要做到足够弹性,当业务压力增长时可以随时扩容。
- 资源弹性,计算资源、网络资源需要多少随时就可以获取和扩展。
- 快速交付能力,整个项目从开发到上线只有20天时间,不用云估计很难完成。
- 成本,由于整个活动只持续春节期间15天左右的时间,较低的综合成本是必须考虑的。
![](https://oss.aliyuncs.com/yqfiles/e296850b800e09b789286a629a0eaaf3835b1381.png)
- 接入层使用负载均衡SLB的原因很简单,因为整个系统的并发会很大,不是几台机器可以完成的,因此必须用SLB将整个负载分担至 几十台机器上,同时也有两个好处: 1. 可用性大幅提升,单个机器或者某一个可用区(机房)故障不会影响系统 2. 计算的扩展性,访问量大只需要在SLB后增加机器即可。并发量大时接入层很容易成为瓶颈,但是使用SLB的好处是它本身就是一个集群,并且在负载转发上做好了高可用和优化,因此我们只需要简单的配置SLB的端口转发规则即可,其他的基本不需要考虑。
- 应用层,使用python开发,pypy+tornado+Nginx作为后端服务。由于后端逻辑简单,同时为了追求开发速度而选择python,而使用Pypy比原生的CPython速度要提升10倍以上,Tornado的非阻塞异步IO处理方式也可以轻松应对高并发,Nginx作为静态页面的处理也是非常合适的。
- 数据层,由于红包涉及到后续消费时的验证,因此每个红包必须有唯一id。那么生成id和存放数据如果用关系型数据库在压力大时很容易把数据库撑爆,那就要考虑到用缓存来处理,因此最后选用OCS(memcached)作为数据层。而数据的持久化则通过异步处理方式写入关系型数据库RDS(MySQL)(还有一个选择是Redis,具体就不再累述)。
- 不知道该冗余多少。因为访问量是否会超过预期是不知道的;
- 无法做全面的冗余,因为故障有可能在网络,有可能在io,也有可能在数据库,缓存等。因为这些原因只靠冗余是无法保证系统100%的稳定的,那么限流手段就必须要使用了,所谓限流就是当系统访问流量压力超出系统所能承受时应该作何响应,给用户返回排队页面或者让客户稍后重试,这种应答对后台系统基本无压力,同时可以将并发错峰。虽然有点“无赖”,但这是此类系统必不可少的故障应对机制。
![](https://oss.aliyuncs.com/yqfiles/6aad9eca604d9fb163a7085a3948a812a461c41f.jpeg)
- 几十台机器的并发日志写入性能没问题;
- 日志统一管理查询,便于后续问题排查和分析;
![](https://oss.aliyuncs.com/yqfiles/2fd650448f18817d308037729bcbefa3cf0e1170.png)
![](https://oss.aliyuncs.com/yqfiles/2c550956ecc11f1a0b3788337191e28efb2b3743.png)
- 网络层:DDoS防护、域名解析、CDN加速;
- 接入层:主要是4层负载均衡SLB,将访问请求分发至后端服务器;
- 应用层:将虚拟机ECS分为两个可用区A和B来提高系统整体可用性。OCS用于做数据缓存,MQS则通过消息队列方式将一些数据异步写入数据库。而所有服务器的日志都集中记录入SLS,为后续的数据分析做好准备,同时也方便日志的查找;
- 数据层:由于单个RDS的性能有限,因此使用DRDS来组成一个RDS MySQL集群,将系统压力分担至多个RDS;
- ODPS则用来做最终的数据分析,比如用户量、访问量、用户行为等;
- 运维监控:云监控和Zabbix结合来实现整个系统从云资源到应用到业务的监控。Ansible用于自动化部署;
老庙黄金2016春晚抢红包活动技术架构详解相关推荐
- 你在央视春晚抢红包,京东云却在后台玩起了“剧本杀”
2022年1月31日晚22:00,正是酒足饭饱.万众期待的抢红包环节,春晚主持人刚刚说出红包口令,京东春晚"重保"项目指挥部传出了一句简短的口令: "断网!" ...
- 关于春晚红包活动自己的思考
概述 2019年春晚,百度的抢红包活动和观众互动的总次数为208亿次.春晚红包的互动为四轮,也就是说每轮大概为40亿次到60亿次之间.每次如果是持续半小时的话,平均每秒钟要承受的要超过300万次.峰值 ...
- 微博春晚背后的技术故事
一年一度的春晚再次落下帷幕,而微博也顺利地陪伴大家度过除夕之夜. 谈及马年春晚,人们首先想到的不是春晚上精彩的节目,而是微博上的吐槽,边看春晚,边刷微博,边吐槽,已经成了国人的习惯.看春晚不再是为了看 ...
- thinksnsv4.6运行php,SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例...
ThinkSNS是什么? ThinkSNS(简称TS)是一款起始于2008年的全平台综合性的sns社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS ...
- AD(活动目录)详解
活动目录(Active Directory) 是面向Windows Standard Server.Windows Enterprise Server以及 Windows Datacenter Ser ...
- 开心辞典计算机科学,2016年信息技术高考模拟题十详解.pdf
高中信息技术(必修模块)期末考试试题 班级 ____________ 学号 _______________ 姓名 ______________ 一.单选题(本大题共 40 小题,每小题 2 分,共 8 ...
- php 活动报名,phpcms 活动报名功能详解一 【原创】
一.打开pc后台,在模块里找到表单向导,此时我们添加表单向导. 点击确定,生成一个表单,并在数据库里添加一个sign_up的表,然后点击生成字段,我们需要报名的基本信息即字段为your_name.yo ...
- 2021春招BAT面试真题详解,etl开发工程师简历模板
Spring面试高频问题 SpringMVC面试高频问题 MyBatis面试高频问题 SpringBoot面试高频题 SpringCloud面试高频问题 Redis高级面试题 Dubbo高频常问面试问 ...
- 2021春招BAT面试真题详解,java数据字典开发实例
数据库 1. MySQL 索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效 查询条件包含or,可能导致索引失效 如何字段类型 ...
- 【离散数学及其应用】2018-2019学年春夏学期期末考试 习题详解
一.判断题 2.注意transitive的等价条件是R对任意n成立,不是相等关系. [回顾]transitive相关的条件转化 ①求transitive closure:Warshall's Algo ...
最新文章
- 在Java Build Path中找不到超类“javax.servlet.http.HttpServlet”[重复]
- 前端学习(1773):前端调试之快速清空所有的本地存储资源
- java 将json转成utf 8_解决JSON.stringify()自动将中文转译成unicode的方法
- C++ 中 new 操作符内幕:new operator、operator new、placement new
- 【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面
- iOS8开发-Swift编程
- 操作选项_Win 10系统中的电源选项及任务栏图标等功能介绍和操作
- 使用 json 进行神经网络结构信息的格式化 (dump load)
- 福昕高级PDF 专业版程序安装及注意事项
- 微信公众号基础篇(个人订阅号)
- 通用能力-《即兴演讲》-樊登读书总结
- web3调用智能合约取事件
- HDC1080温湿度驱动 IIC I2C STM32
- python自动输入文字_Python自动输入【新手必学】
- 社保公积金异地转移(上海->宁波)持续更新中
- ARCGIS导入数据后,属性表为空
- 迅雷高速下载免安装 Kali Linux
- mysql字符集校对和规则
- 概率习题,甲乙两人一起去游“2011西安世园会”
- Hexo系列 | Hexo部署至服务器
热门文章
- Win10如何删除输入法(删除默认输入法)
- 数据库-mysql MHA集群方案测试
- linux AR8151网卡驱动下载,centos 6.2 atheros ar8151网卡驱动安装
- 计算机考研专业课除了408,2020贵州大学计算机专业课改考408
- 外酥里嫩的锅包肉做法
- 屏幕缩放和注释工具(ZoomIt)
- chrome driver 环境问题
- pdfptable 设置行间距_table中tr间距的设定table合并单元格 colspan(跨列)和rowspan(跨行)...
- cpu亲和力总结taskset和setcpu及其他相关
- 程序员的我是如何抢票的(Python)