大促系统全流量压测及稳定性保证

应对突发的峰值访问,高压下的架构演进(数据)

京东商城数据流向:

  • 订单生成前,包括单品页,购物车,架构,促销等功能,我们每个用户进来需要访问。它的特点是大促期间访问量非常大
  • 订单预处理,订单生成之后,这是一个原始生成单,之后需要对订单进行预处理,进行拆包,包裹的拆分、大家电小家电拆开包裹运送等。因为是统一下单,这一块是订单预处理。挑战是访问量大,各个模块如拆单、订单转移,支付台帐等可能会承受非常大的压力,我们会采取扩容存储,限流,数据结构优化等方法去应对。
  • 订单履约阶段,真正到后面是整个处理过程,配送黏合起来做的系统。这是京东商城的服务结构。

交易系统的三层结构

上面是调用来源,中间是我们的服务,下面是依赖的底层服务。其中强依赖服务是关键路径所需要调用的服务,是主流程中不可缺少的一部分。

强依赖服务在大促期间不能被降级,我们需要提前扩容,以及进行代码重构、拆分、按来源单独部署等方法提前进行优化。

交易系统的访问特征

购物车:结算页:产生订单页面访问的比例是 16 :4 :1。每天 PV 就是几十亿,几百亿、上千亿,因此我看到最大的量 1 分钟是几千万。

全链路全流量线上压测

系统会有很多的变更,数据变更或者是代码变更结构变更都会产生,我们知道这个系统能够承受多大量,上来对它进行压测。

压测分为线上压测、线下压测,主力做线上压测。(下压测,环境跟线上不一样,路由器和机器 CPU,物理机,每一个不相同或者架设的路由超过 3 层,丢包,各种数据不一样,压测出来的数据经常会差异。)

压测方法:

  • 演练缩减服务器:把集群机器逐台往下缩减,真正看到线上量能扛到什么情况。
  • 复制流量:主要通过 TCPCopy 复制端口流量,多层翻倍放大流量。
  • 模拟流量:非常简单的底层工具去做压测。用压测平台,把这些工具集成起来做模拟流量压测。
  • 流量泄洪:把订单在这个结构,接住堵在这个地方不往下放,往后拽都是密集的一些服务。从这一块把量堵住,堵几十万,突然有一天打开,看到一个峰值,看每一分钟处理量,往后能承受多大量,是不是能够承受发起的量。

根据压力表现进行调优:

  • 多级缓存:逐级做缓存,前面做一些静态缓存掉,后面会做一些基础数据缓存,最后大数据,一层一层往上能挡住整个这一块,
  • 善用异步:异步双写,会写丢数据,写丢没关系,购物车是整体的,加一个商品,写不过来,下次过来又会全覆盖。这样购物车就有一个多机房多活的可用性。
  • 超热数据的缓存:利用 Queue 的原理,不断往里塞 SKU
  • 数据压缩:对 Redis 存储的数据进行压缩,这样空间又缩小四分之一或是三分之一,数据到后面就会很小。当量小之后,访问效率就会升高,数据量弹出很小,丢单率很小,可以提高可用性。

转载于:https://www.cnblogs.com/luohaochi/p/11054242.html

软件架构阅读笔记11相关推荐

  1. 软件架构阅读笔记(引)

    引: 软件架构的目的是发现软件的问题是什么,怎么解决.这些软件遇到的问题往往来自实际项目中.然而作为一个学生的我很少有机会接触实际是项目,所以阅读也是学习的一种方式.从他人的做法中,也可以学习到知识. ...

  2. 软件架构阅读笔记15

    京东话费充值系统架构演进实践 背景: 话费充值业务线的订单量也'水涨船高 ',同时对系统的各项运行指标要求更高,老的系统架构不足以支撑新的业务量,需要对系统进行升级. 1.应用层面 引入缓存 在应用层 ...

  3. 游戏设计模式阅读笔记11——行为模式(子类沙箱)

    目录 一.意图 二.动机 三.子类沙箱 1.适用场景: 2.缺点: 3. 优化: 4.可不写入基类的操作 子类沙箱是一种软模式,它表述了一个基本思路,但没有很多细节机制. 一.意图 用一系列由基类提供 ...

  4. 《Deep Learning for Computer Vision withPython》阅读笔记-PractitionerBundle(第9 - 11章)

    9.使用HDF5和大数据集 到目前为止,在本书中,我们只使用了能够装入机器主存储器的数据集.对于小数据集来说,这是一个合理的假设--我们只需加载每一个单独的图像,对其进行预处理,并允许其通过我们的网络 ...

  5. 【知识图谱】本周文献阅读笔记(4)——周三 2023.1.11:英文)基于动态知识图谱的虚假评论检测 + 基于知识图谱的推荐系统研究综述 + 基于知识图谱的推荐算法研究综述+新一代知识图谱关键技术

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  6. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    U3D笔记11:47 2016/11/30-15:15 2016/12/19 技术BLOG:http://www.unity.5helpyou.com/2373.html#comment-43108 ...

  7. T5: Text-to-Text Transfer Transformer 阅读笔记

    作者:徐啸 知乎专栏:自然语言处理学习之旅 https://zhuanlan.zhihu.com/p/89719631 写在前面 谷歌用一篇诚意满满(财大气粗)的基于实验的综述,试图帮助研究者们「拨开 ...

  8. [python Cookbook]阅读笔记

    @toc] 前记:为了补充一下python语法知识,感谢网友的推荐阅读了pythonCookbook,这本书确实不错,以问题为导向,引导解决思路. 这个博文是从阅读笔记typora中直接复制过来的没有 ...

  9. S3C2410 bootloader ----VIVI阅读笔记 (转)下

    1 static inline void mem_mapping_linear(void) 2 { 3      unsigned long pageoffset, sectionNumber; 4  ...

最新文章

  1. 图灵2010.09书讯
  2. 网络编程学习笔记--1.socket可读可写条件
  3. 进程外Session和进程内Session存储
  4. TCP三次握手连接及seq和ack号的正确理解
  5. 关于使用Carbide编译及配置的一点注意事项
  6. mysql获取网站绝对路径_Symfony2获取web目录绝对路径、相对路径、网址的方法
  7. 每天至少保证4个小时的学习时间
  8. freemodbus收藏学习网址
  9. mongodb定时删除数据(索引删除)
  10. Lync 小技巧-56-检查你用的公网证书是否正确
  11. 一篇文章告诉你如何寻找水王(数组中存在超过一半的数字)
  12. 尼姑一般怎么自称_电池又一重大事故!选铅酸,还是锂电?听听电池老师傅怎么说!...
  13. yuicompressor java_YUI Compressor
  14. 使用bat一键修改ip地址(包括静态、动态ip)
  15. mysql数据库双机备份_MySQL数据库双机热备份
  16. 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
  17. 谦卑的程序员(The Humble Programmer) by E.W.Dijkstra,1972
  18. 从今以后我一个人唱悲伤情歌:伤感的QQ空间日志
  19. Zookeeper源码之集群选举
  20. 盘点我用过的导出Excel的方法

热门文章

  1. adas记录仪app_4K旗舰丨盯盯拍MINI5智能行车记录仪荣耀新生!
  2. java工程师应该学习的知识点
  3. 郑州大学软件学院 大学生创新创业选拔赛章程
  4. JAVAEE联邦软件管理系统试题
  5. Java学习小程序(7)九九乘法表
  6. hadoop调优之一
  7. 【Nutch2.2.1基础教程之6】Nutch2.2.1抓取流程
  8. 【搜索引擎基础知识1】搜索引擎基本架构
  9. xgboost使用自定义的loss function
  10. ajax封装回调函数代码