范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

百万级QPS,支撑淘宝双11需要哪些技术

  前言
  又到一年双11,相信大部分同学都曾经有这个疑问:支撑起淘宝双11这么大的流量,需要用到哪些核心技术?性能优化系列的第二篇我想跟大家探讨一下这个话题。
  完整的双11链路是非常长的,我当前也没这个实力跟大家去探讨完整的链路,本文只跟大家探讨其中的一个核心环节:商品浏览。
  商品浏览是整个链路中流量最大的或者至少是之一,这个大家应该不会有疑问,因为几乎每个环节都需要商品浏览。
  阿里云公布的2020年双11订单创建峰值是58.3万笔/秒,而我们在下单前经常会点来点去看这个看那个的,因此商品浏览肯定至少在百万QPS级别。
  废话不多说,直接开怼。
  正文
  1、MySQL硬抗
  不知道有没有老铁想过用MySQL硬抗双11百万QPS,反正我是没有
  ,不过我们还是用数据来说说为什么不可能这么做。
  根据MySQL官方的基准测试,MySQL在通常模式下的性能如下图所示:
  当然这个数据仅供参考,实际性能跟使用的机器配置、数据量、读写比例啥的都有影响。
  首先,淘宝的数据量肯定是比较大的,这个毋庸置疑,但是无论怎么分库分表,由于成本等原因,肯定每个库还是会有大量的数据。
  我当前所在的业务刚好数据量也比较大,我们DBA给的建议是单库QPS尽量控制在5000左右,实际上有可能到1万也没问题,但是此时可能存在潜在风险。
  DBA给的这个建议值是比较稳健保守的,控制在这个值下基本不会出问题,因此我们尽量按DBA的建议来,毕竟他们在这方面会更专业一些。
  如果按照单库抗5000来算,即使多加几个从库,也就抗个十来万QPS顶天了,要抗百万QPS就根本不可能了,流量一进来,DB肯定马上跪成一片灰烬。
  有同学可能会想,能不能无限加从库硬怼?
  这个是不行的,因为从库是需要占用主库资源的,看过我之前MySQL面试题的同学应该知道,主库需要不断和从库进行通信,传输binlog啥的,从库多了主库会受影响,无限加从库最后的结果肯定是将主库怼挂了,我们这边的建议值是从库数量尽量不要超过20个,超了就要想其他法子来优化。
  2、分布式缓存(Tair)硬抗
  上分布式缓存硬抗应该是大部分老哥会想到的,我们也用数据来分析一下可行性。
  阿里用的分布式缓存是自研的 Tair,不知道的可以理解为 Redis 吧,对外其实也是说的 Redis 企业版。
  Tair官方自称性能约为同规格社区版实例的3倍。阿里云官网上,Tair企业版性能增强-集群版当前的实例规格如下图所示:
  右下角最猛的【4096GB集群性能增强版】的QPS参考值超过6000万+,没错,我数了好几遍,就是6000万,我的龟龟,太变态了。
  直接把【4096GB集群性能增强版】怼上去就解决了,还要啥优化
  。如果一个解决不了,大不了就两个嘛。
  分布式缓存确实是大多数情况下抗读流量的主力,所以用Tair硬抗的方案肯定是没大问题的,但是我们需要思考下是否存在以一些细节问题,例如:  分布式缓存通常放在服务端,上游通过RPC来调用获取商品信息,百万级的流量瞬间打进来,是否会直接将RPC的线程池打挂?  缓存里的信息通常是先查询DB再写到缓存里,百万级的流量瞬间打进来,是否会直接将DB打挂?  是否存在热点商品,导致Tair单节点扛不住?  ...
  这些问题我们接下来一一讨论。
  3、客户端分布式缓存
  分布式缓存放在服务端,我们称之为服务端分布式缓存,但是要使用服务端分布式缓存需要上游进行RPC调用,请求量太大会带来隐患,同时带来了额外的网络请求耗时。
  为了解决这个问题,我们引入客户端分布式缓存,所谓客户端分布式缓存就是将请求Tair的流程集成在SDK里,如果Tair存在数据,则直接返回结果,无需再请求到服务端。
  这样一来,商品信息只要在Tair缓存里,请求到客户端就会结束流程,服务端的压力会大大降低,同时实现也比较简单,只是将服务端的Tair请求流程在SDK里实现一遍。
  4、缓存预热
  为了解决缓存为空穿透到DB将DB打挂的风险,可以对商品进行预热,提前将商品数据加载到Tair缓存中,将请求直接拦截在Tair,避免大量商品数据同时穿透DB,打挂DB。
  具体预热哪些商品了?
  这个其实不难选择,将热点商品统计出来即可,例如以下几类:
  1)在双11零点付款前,大部分用户都会将要买的商品放到购物车,因此可以对购物车的数据进行一个统计,将其中的热点数据计算出来即可。
  2)对一些有参与优惠或秒杀活动的商品进行统计,参与活动的商品一般也会被抢购的比较厉害。
  3)最近一段时间销量比较大的商品,或者浏览量比较大的商品。
  4)有参与到首页活动的商品,最近一段时间收藏夹的商品等等...
  淘宝背后有各种各样的数据,统计出需要预热的商品并不难。
  通过预热,可以大大降低DB被穿透的风险。
  5、本地缓存
  阿里云官网的数据【4096GB集群性能增强版】的QPS参考值超过6000万+,但是这个值是在请求分布比较均匀的情况下的参考值,256个分片上每个分片二三十万这样。
  通常个别分片高一点也没事,五六十万估计也ok,但是一般不能高太多,否则可能出现带宽被打满、节点处理不过来等情况,导致整个集群被打垮。
  这个时候就需要祭出我们的最终神器了,也就是本地缓存。本地缓存的性能有多牛逼了,我们看下这张图。
  这张图是caffeine(一个高性能Java缓存框架)官方提供的本地测试结果,并不是服务器上的测试结果。
  测试运行在 MacBook Pro i7-4870HQ CPU @ 2.50GHz (4 core) 16 GB Yosemite系统,简单来说,比较一般的配置,大部分服务器配置应该都会比这个高。
  在这个基准测试中, 8 线程对一个配置了最大容量的缓存进行并发读。
  可以看到,caffeine支持每秒操作数差不多是1.5亿,而另一个常见的缓存框架Guava差不多也有2000多万的样子。
  而在服务器上测试结果如下:
  服务器配置是单插槽 Xeon E5-2698B v3 @ 2.00GHz (16 核, 禁用超线程),224 GB,Ubuntu 15.04。
  可以看到caffeine在使用16线程时支持每秒操作数已经达到3.8亿次,其他的框架也基本都是千万级以上。
  通过上面的数据,大家应该都明白了,本地缓存在抗读流量上理论上是无敌的。当然本地缓存有一些缺点,例如需要占用服务器的本地内存,因此通常我们只会存储少量的热点数据,严格配置好参数,控制好本地缓存的占用内存上限,避免影响服务器本身的使用。
  因此,我们会对之前的热点数据,再进行一次筛选,选出"热点中的热点",将这些数据提前预热到本地缓存中。
  可能有同学会问,如果本地缓存里的商品数据发生了变更,怎么办?
  一个办法是使用类似ZK的监听方式,当本地缓存的商品发生变更时,触发更新操作,本地缓存去拉取最新数据,因为本地缓存的商品数较少,所以ZK整体压力不会太大。
  另一个办法是本地缓存定期拉取最新数据,例如每隔N秒后,就主动查询一次DB,将数据更新为最新数据,具体延迟几秒,根据业务上能接受的来控制。
  具体选哪种看业务的选择吧,这些被筛选进入本地缓存的数据基本都是最热的那些商品,无论是商家还是运营都心里有数,肯定在活动前会再三确认,所以出现变更的几率其实不大。
  6、访问DB加锁
  尽管我们对热点数据进行了预热,但是我们必须考虑到可能会有这么一些缓存击穿的场景:
  1)某个热点数据在缓存里失效了,大量流量瞬间打到DB,导致DB被打垮。
  2)某个商品并不属于热点商品,所以并没有预热,但是在活动开始后成为热点商品,导致流量大量打到DB,DB被瞬间打垮。
  等等,这些场景都可能会导致DB瞬间被打垮,DB是生命线,DB一挂就凉了,因此我们必须要有相应的措施来应对。
  解决方案在之前讲缓存击穿的文章里其实提过了,就是在访问DB时加锁,保证单台服务器上对于同一个商品在同一时刻,只会有一个线程去请求DB,其他的全部原地阻塞等待该线程返回结果。
  注意,这边我们是不会加分布式锁的,只会加JVM锁,因为JVM锁保证了在单台服务器上只有一个请求走到数据库,通常来说已经足够保证数据库的压力大大降低,同时在性能上比分布式锁更好。这个在Guava中就有现成的实现,有兴趣的可以看看。
  7、热点探测
  我们上述所说的热点商品都是基于已有数据的分析,属于静态数据,难免会有漏掉的,因此也需要有办法能实时的探测出热点数据,从而进行缓存,保护系统稳定。
  8、限流
  无论你想的多么齐全,真正面临线上考验的时候,经常会出现一些你没考虑到的情况,因此,我们必须要有最终的保护措施。
  限流降级作为最后一道防御墙,不到万不得已我们不希望使用到他,但是我们必须做好准备,万一发生没预料到的情况,可以保证大部分用户不会受到影响。
  9、全链路压测
  模拟双11当天的流量进行测试,系统到底能抗多少,只有压测一下才知道,同时压测出来的指标,也会作为我们设置限流值很重要的参考依据。
  10、预案
  预案是指根据评估分析或经验,对潜在的或可能发生的突发事件的类别和影响程度而事先制定的应急处置方案。
  简单来说就是关键时刻一键拉闸,直接切换某些功能或者关闭降级某些功能,以保障核心功能不会受到影响。
  11、降级部分非核心功能
  在双11高峰期将一些非核心功能进行降级,避免影响核心流程,例如我记得订单是超过几个月就不让查。
  12、监控大盘
  各项核心指标都需要有监控和告警,例如:缓存命中率、服务端请求QPS、DB读写QPS等等。
  同时要设置合理的告警值,万一出现异常可以及时感知及时解决。
  同时要有一个核心业务监控大盘,放置最核心的业务指标监控,方便大家及时了解业务核心指标情况。
  13、加机器
  虽然很多人会看不起加机器解决,但是实际上加机器是必不可少的,简单粗暴,花钱就能解决。
  14、其他
  以上列的只是我当前能想到的,实际上肯定比这要多的多。  原文链接:https://mp.weixin.qq.com/s/kX9QKhCQLU3-02VMfUo0Tw
  原作者:程序员囧辉

不沉船的船袜!0。3mm真隐形不露边,狂跑10000步都不掉跟俗话说,美不美,要看腿!一双纤细修长的美腿,绝对是回头率200的存在。但要是看到露出袜边的造型,简直是又土又丑的代名词!尤其天气越来越热,很多人爱穿浅口的鞋子,但好像总是很难选到一最火短袖穿搭!upf50防晒能力,穿在身上的冰丝,以前的都白穿了这几天一组华裔婚纱设计师VeraWang王薇薇的近照在网上引发网友热议。别说71岁的人有这样的身材和皮肤,就连17岁的人可能都要甘拜下风。容易显老的部位像膝盖手肘和脚踝这些地方,她3000亿造世界第一超级工程!中国基建重磅出击,百年工程仅需十年耗资3000亿中国开启世界第一超级工程?西方国家断定需要一百年完成的工程,我国又将面临怎样的困难,硬磕超级工程的背后,到底表现出了我国怎样的布局呢,不要走开精彩内容马上开始,,川藏清华大学毕业典礼成争议?就在几天以前,清华大学的毕业典礼再次引发争议,先是清华大学的毕业直播典礼关闭评论,再是官微发布的合成视频中掐掉了唱国歌的片段,接连两个动作让清华大学的口碑再次遇到滑铁卢,这让人不禁央视气象一姐杨丹,与初恋隐婚生子,主持节目26年却非正式工她是央视天气预报的播报员,在央视工作26年已经48岁的她依旧青春貌美,她就是杨丹,24年前他和初恋隐婚生子,时至今日两人的婚姻关系怎么样了?,长期忙碌于央视舞台的她为何却传出非正式林生斌发文回应,3个黑料揭开内幕,代理律师罕见发声力证真相6月30日的深夜11点,网红林生斌突然官宣生女迎接新生活的消息,瞬间引发了热议,就在所有人祝福他走出阴霾的时候,前妻哥哥的一篇文章,将林生斌的苦情人设彻底击碎,一边在公众面前立苦情孟晚舟刚传喜报,加拿大主持就误把中国认成日本,有心还是无意?孟晚舟作为民族企业华为的长公主,一直是国人最为揪心的存在,从2018年开始,孟晚舟被无端扣押加拿大,遭受了无数外国人的冷眼,在这样的危急关头,华为和众多的中国人都没有放弃对她的拯救信托不断爆雷进一步证明资管新规的重要性大家好,我是老李。今天和大家聊聊资管新规。都2021年了,还有很多人没听过资管新规这个词,这本身就是一件非常可怕的事。要说起这资管新规,就得从信托这件事说起。信托机构本来的职责是受小米众筹爆款水牙线!专业牙医都认可!1秒滋出牙缝残渣,爽在这炎炎夏日,还要在办公室里长时间佩戴口罩。戴了口罩才发现自己嘴有多臭。尽管每天兢兢业业地刷牙,还配置了电动牙刷,牙齿却越来越差。尤其是现在戴了牙套,矫正的牙齿和智齿之间的缝隙越来拒绝汽车暴晒,1秒收放伸缩防紫外线遮阳挡,让车内温度爆降20度随着全国各地气温不断升温,仿佛提前进入了烧烤模式,烈日暴晒问题也随之而来!!尤其是开车的朋友,简直要崩溃。爱车在太阳底下停放15分钟后,再回到车里,嚯一波热浪袭来,竟然比车外还热,干翻钢卷尺,小米有品开卖99元电子尺,一滚能测99米,曲线也能量说到卷尺大家一定不陌生,毕竟我们生活中经常会遇到需要测量长度距离的事。不过测量不同的物体还要购买不同的尺寸和类型,想想就折腾。作为格外关注自己腰围变法的女生们来说,家里每个软尺想量
什么牌子路由器好用?抠鼻发怒呲牙现在使用的也是华为的路由器,这个我觉得还是挺稳定的,家里网络的速度可以呲牙发怒抠鼻华为華為AX3Pro首选华硕和网件,小贵,不要说崇洋媚外,这是事实,国产还有很长一段路你的第一块手表是什么牌子的?1984年,父亲送我了一块瑞士的英纳格。这块表他戴了几年了,买新表的的时候应该接近两百块钱。倘若按照现在的购买力计算,相当于现如今的两万块钱。表是无日历的大三针表,手卷上链,17钻华为手机目前适合不适合买?适不适合看你自己的预算和需求,而且目前华为在售的那些产品中,有些系列的确不适合买,目前在华为官网上,可以看到有畅享系列,Nova系列,P系列和Mate系列。其中畅享系列属于入门低端淘宝店运行两个多月了,三五天来一单,车也开了,请教各位前辈,如何做好店铺运营?看了评论,觉得大多数都是没有讲到点上。毋庸置疑,淘宝的流量和成交是非常大的。但是,竞争也是非常激烈的,不对,应该是惨烈。既然是惨烈了,那么老讲运营技能是没用的。只要是开过淘宝店的,网络诈骗,为什么叫电信诈骗?电信指的是利用电子技术在不同的地点之间传递信息,表示不同种类的远距离通讯方式,所以不只是电话或者客户端还包括网络和短信等方式。电信诈骗指的是骗子通过编造虚假信息设置骗局对受害人实施怎么制作购物网站?建议你找个正规的软件公司,综合考量下,预算够的话给你推荐万米商云,我们公司之前在那做社区团购的。从头开始建购物网站,目前一般有2种网站建设的模式,传统的定制和自助建站。一传统网站建你身边的老外眼里的中国是什么样的?有哪些不可思议的变化?要么是一脸懵逼,要么是赖着不想走。我身边的老外朋友,来到中国之后,基本上就分这两款。而俄罗斯性感大妞尤小娜是这款刚来中国的时候一脸懵逼,现在赖着不想走。尤小娜原来的中文名字叫尤娜,微信可以定位是怎么做到的?应邀回答本行业问题。微信本身是不能定位的,他只是读取了手机提供的位置信息。微信可以定位,是因为用户给予了微信这款APP获取定位的权限。我们可以在应用管理中看到微信获得的权限,其中就好好谈谈立讯精密实话说,今年立讯的增速确实是放缓了,一个客观原因是今年确实遇到了很多不利因素,人工费用上涨,原材料涨价,缺芯片等等。特别是立讯去年做了两个比较大的收购,要知道,在扩张阶段,如果顺的马克思自然三大定律马克思人是所有社会关系的总和。互联网普及,人进入互联世界,自然包括社会生产关系!马克思第一自然定律生产力决定生产关系现在生产力互联网技术自然产生的生产关系人民的智能手机是覆盖全球的工信部我国的IPv6网络高速公路已经全面建成IT之家10月19日消息,据证券时报报道,工业和信息化部新闻发言人信息通信管理局局长赵志国在介绍2021年前三季度工业和信息化发展情况时表示,工信部组织开展IPv6网络就绪IPv6