专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

海量请求下的接口并发解决方案

  设定一个场景,假如一个商品接口在某段时间突然上升,会怎么办?
  对于这个问题,在电商高并发系统中,对接口的保护一般采用:缓存、限流、降级来操作。
  假设该接口已经接受过风控的处理,过滤掉一半的机器人脚本请求,剩下都是人为的下单请求。服务限流
  限流主要的目的是通过对并发访问请求进行限速,或者对一个时间窗口内的请求进行限速,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。限流算法1。漏斗算法
  漏桶算法是当请求到达时直接放入漏桶,如果当前容量已达到上限(限流值),则进行丢弃或其他策略(触发限流策略)。漏桶以固定的速率(根据服务吞吐量)进行释放访问请求(即请求通过),直到漏桶为空。
  漏斗算法的思想就是,不管你来多少请求,我的接口消费速度一定是小于等于流出速率的阈值的。
  可以基于消息队列来实现。2。令牌桶算法
  令牌桶算法是程序以v(v时间周期限流值)的速度向令牌桶中增加令牌,直到令牌桶满,请求到达时向令牌桶请求令牌,如果获取成功则通过请求,如果获取失败触发限流策略。
  令牌桶算法和漏斗算法的思想差别在于,前者可以允许突发请求的发生。
  3。滑窗算法
  滑窗算法是将一个时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期。
  如下图所示,假设时间周期为1分钟,将1分钟再分为2个小周期,统计每个小周期的访问数量,则可以看到,第一个时间周期内,访问数量为75,第二个时间周期内,访问数量为100,如果一个时间周期内所有的小周期总和超过100的话,则会触发限流策略。
  Sentinel的实现和TCP滑窗。接入层限流Nginx限流
  Nginx限流采用的是漏桶算法。
  它可以根据客户端特征,限制其访问频率,客户端特征主要指IP、UserAgent等。使用IP比UserAgent更可靠,因为IP无法造假,UserAgent可随意伪造。
  limitreq模块基于IP:
  http:nginx。orgendocshttpngxhttplimitreqmodule。html
  tgngine:
  http:tengine。taobao。orgdocumentcnhttplimitreqcn。html本地接口限流Semaphore
  Java并发库的Semaphore可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acquire()获取一个许可,如果没有就等待,而release()释放一个许可。
  假如我们对外提供一个服务接口,允许最大并发数为40,我们可以这样:privatefinalSemaphorepermitnewSemaphore(40,true);publicvoidprocess(){try{permit。acquire();TODO处理业务逻辑}catch(InterruptedExceptione){e。printStackTrace();}finally{permit。release();}}
  具体的Semaphore实现参考源码。分布式接口限流使用消息队列
  不管是用MQ中间件,或是Redis的List实现的消息队列,都可以作为一个缓冲队列来使用。思想就是基于漏斗算法。
  当对于一个接口请求达到一定阈值时,就可以启用消息队列来进行接口数据的缓冲,并根据服务的吞吐量来消费数据。
  服务降级
  在接口做好风控的前提下,发现了接口请求的并发量迅速上升,我们可以启用兜底方案,进行服务降级。
  一般服务降级应该用来对一些不重要或不紧急的服务或任务进行服务的延迟使用或暂停使用。降级方案停止边缘业务
  比如淘宝双11前,就不可以查询三个月前的订单,对边缘业务进行降级,保证核心业务的高可用。拒绝请求
  在接口请求并发量大于阈值,或是接口出现大量失败请求等等突发情况,可以拒绝一些访问请求。拒绝策略随机拒绝:随机拒绝超过阈值的请求。拒绝旧请求:按照请求的时间,优先拒绝更早收到的请求。拒绝非核心请求:根据系统业务设置核心请求清单,将非核心清单内的请求拒绝掉。恢复方案
  在实现服务降级之后,对于突增流量我们可以继续注册多个消费者服务来应对并发量,之后我们再对一些服务器进行慢加载。
  降级具体实现参考其他文章。数据缓存
  在接口做好风控的前提下,发现了接口请求的并发量迅速上升,我们可以分以下几个操作执行:对访问请求使用分布式锁进行阻塞。在这个短时间中,我们可以将对应操作行的热点数据,缓存在缓存中间件中。放行请求后,让所有请求优先操作缓存数据。再将操作的结果通过消息队列发送给消费接口慢慢消费。
  缓存问题
  假设我们操作的是一个库存接口,此时数据库中只有100个库存。
  那假如此时我们将一条数据放入缓存中,如果所有的请求都来访问这个缓存,那它还是被打挂,我们该怎么操作?读写分离
  第一种想法,读写分离。
  使用Redis的哨兵集群模式来进行主从复制的读写分离操作。读的操作肯定大于写操作,等库存被消费到0时,读操作直接快速失败。
  负载均衡
  第二种想法,负载均衡。
  在缓存数据后,如果所有请求都来缓存中操作这个库存,不管是加悲观锁还是乐观锁,并发率都很低,此时我们可以对这个库存进行拆分。
  我们可以参照ConcurrentHashMap中的counterCells变量的设计思想,将100个库存拆分到10个缓存服务中,每个缓存服务有10个缓存,然后我们再对请求进行负载均衡到各个缓存服务上。
  但是这种方式会有问题,如果大部分用户被hash到同一个缓存上,导致其他缓存没有被消费,却返回没有库存,这是不合理的。
  pagecache
  第三种想法,pagecache。
  大部分软件架构其实都用到了这种方法,比如linux内核的硬盘写入、mysql的刷盘等等,即将短时间内的写操作聚合结果写入,所有的写操作在缓存内完成。

乌鲁木齐的雪雪景(图片来自网络)乌鲁木齐的雪是如约而至的。当漫长的冬天来临,雪就在博格达峰上躁动了。借着一股股寒流的力量,雪就铺天盖地地洒满了城市的郊区大街小巷冬日里的乌鲁木齐,是雪撒野的天地抓住秋天的尾巴,开极星2探访百年古村爨底下村2022年10月20日,天气阴有小雨十一假期刚刚结束不久,马上迎来秋天最后一个节气霜降,趁着秋季未走,冬季未至的日子,准备去打卡秋天最后一抹景色,跟今年的秋天告个别。本来打算跟女朋一阳带你看世界探秘每年只露出真容一次的千年古岛有这样一个地方,每年只能看到它全貌一次,在1000多年以前就有皇帝为他命名而大文学家王安石黄庭坚朱熹等游此皆有题诗,古代地理学家郦道元在水经注也详细记载。它就是位于中国最大的淡水湖福建南平值得推荐的十二个旅游景点延平湖山川清明伟丽,为东南之最延平湖素有山川清明伟丽,为东南之最之称,自然景观独特,是闽北绿色金库南平市新兴旅游胜地。延平湖系1993年水口水电站建成蓄水后形成的人工湖,因南平古称中央为什么点名发展济宁?济宁是山东省政府批复的淮海经济区中心城市之一。是历史文化名城滨水生态旅游城市。济宁市在鲁西南唯一中心,地理位置优越极其优越。国家为什么要重点发展济宁?中国上下五千年,在济宁境内发生从成都出发2。5小时,直达周边最美彩林之一,就是其中一点被吐槽秋日生活打卡季最近成都周边地区各地的彩林,以及红枫叶等秋季美景都已经开始陆续进入了今年的最佳观赏时间。在成都周边大约两三个小时车程的地方,拥有许多非常值得观赏和游玩的高性价比彩林,体验华为MatePadPaper典藏版墨水平板的智慧化时代来了华为一旦下定决心做某件事,鲜有做不成的。这是圈内的共识,现在,在墨水平板市场得到了印证。今年3月,华为发布首款鸿蒙墨水平板MatePadPaper,7个月后,升级后的华为MateP人类是实验室创造出来的概率有多大?现在我们能在实验室里创造生命,甚至是克隆人,包括能够通过基因改造,在婴儿出生时候就能天然免疫艾滋病,甚至RNA单链的高级冠状病毒,难道人类不能在实验室里被创造?人类和动物的本能反应认识星爷的机会来了前些日子,星爷在自己的社交帐号里发布了一条消息,内容是要应聘Web3方面的人才,助他建造创意未来。以前从未想过星爷会突然间和一个八竿子打不着的互联网技术出现在同一个话题里。而Web从实体店到直播电商的真实经历随着时代的发展,越来越多的行业被淘汰,取而代之的是充满诱惑的互联网电商,不同的经营方式,便捷周到的服务,赢得了消费者的心。实体店经营一天一天走向落寞。互联网电商到直播电商,逼得我们OPPO最终还是低了头,4nm机皇猛跌1800元,难得出手阔绰马上一年一度的双十一剁手节即将开始,不仅消费者们迫不及待,就连友商也坐不住了,提前亮出巨大福利。然而,这对于想要换机的朋友来说,无疑是一个绝好时机。但令人意外的是,一向高姿态的OP
AppStore放宽价格限制苹果如何建立更友好的生态圈苹果商店截图转向灵活价格策略苹果公司宣布,将会为开发者新增700种定价档位,并放宽了价格上限和价格下限。上架AppStore的应用程序最低价格可以低至29美分,最高可以达到1000从5999元跌至3259元,256GB100倍变焦,顶级防水旗舰加速退场区别对待国内外消费者是一件令人气愤的事情,而前段时间国内的一个调味料品牌就因此站上了风口浪尖,事实上这样做的商家有很多,因为国内外消费者对于很多商品的要求确实不一样,很多商品想要在地球带着人类在宇宙中飞奔,一天5200万公里,目的地在哪里?地球是太阳系中的一颗行星,在太阳系中一共有八大行星,它们分别是水星金星地球火星木星土星天王星和海王星在海王星的外面还有一颗冥王星,曾经冥王星也属于一颗行星,不过科学家认为,冥王星的NASA猎户座飞船在近距离飞掠月球后正准备在本周日返回地球美国国家航空航天局(NASA)的阿特米斯1号任务正朝着12月11日落回地球的方向发展,此前,无人驾驶的猎户座飞船今天完成了对月球的第二次动力飞掠,在美国东部时间上午1142将其带入外媒孤立质子极光在地球臭氧层轰出巨洞据美国太空网站近日报道,极光在夜空上演壮观的灯光秀,但它们也为臭氧层逐渐遭到蚕食的现状给出了另一个解释。报道说,臭氧层的大部分损耗都应归咎于人类,不过科研人员在观察了一种被称为孤立从土星拍摄的地球照片,你见过多少?让我们问你一个问题你看过多少张地球照片?关于地球照片,我们不是在谈论从高层大气或国际空间站拍摄的照片。我们指的是从太空或其他星球拍摄的照片。对于大多数人来说,答案是一两个。其中一张多国出现火山喷发火山喷发也扎堆?据了解,印尼塞梅鲁火山海拔3676米,是爪哇岛上最高的火山和知名登山景区,也是印尼最活跃的火山之一,近年已有多次喷发。此次,更是触发了该国最高级别警戒。塞梅鲁火山喷发将对周边环境以地球上最古老的叠层石启发寻找火星生命的新前景地球上最古老的生命形态痕迹有时是非常有争议的,这是因为非生物过程可能产生相对类似的结构,而且这类化石经常受到变质作用的影响。叠层石是反映微生物群落与其环境之间复杂互动的分层有机沉积火星新发现巨大的地幔羽流将其地表向上推升轨道观测揭示了一个巨大的地幔羽流的存在,它将火星的表面向上推,并推动了强烈的火山和地震活动。在地球上,构造板块的移动重新洗刷了行星的表面,使内部充满活力。由于火星上没有这样的过程,在太阳附近运行的原子钟可以探测到暗物质虽然已经进行了许多基于地球的实验,试图探测暗物质,但这种神秘的物质仍然难以捉摸。现在,物理学家提出了一项新的实验,试图通过将原子钟发送到暗物质密度最高的地方(太阳附近)来寻找信号。华北地区,联合准备银行纸币有哪些好的品种,你都知道吗?联合准备银行的纸币,你们见过吗?联合准备银行,是日本伪政权在华北地区建立的银行所发行的纸币,1938年的3月10日于北平组织建立。是华北地区日本控制经济的工具,也是日本入侵中国的铁
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网