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

高并发系统设计的15个锦囊

  记得很久之前,去面试过字节跳动。被三面的面试官问了一道场景设计题目:如何设计一个高并发系统。当时我回答得比较粗糙,最近回想起来,所以整理了设计高并发系统的15个锦囊,相信大家看完会有帮助的。
  如何理解高并发系统
  所谓设计高并发系统,就是设计一个系统,保证它整体可用的同时,能够处理很高的并发用户请求,能够承受很大的流量冲击。
  我们要设计高并发的系统,那就需要处理好一些常见的系统瓶颈问题,如内存不足、磁盘空间不足,连接数不够,网络宽带不够等等,以应对突发的流量洪峰。1。分而治之,横向扩展
  如果你只部署一个应用,只部署一台服务器,那抗住的流量请求是非常有限的。并且,单体的应用,有单点的风险,如果它挂了,那服务就不可用了。
  因此,设计一个高并发系统,我们可以分而治之,横向扩展。也就是说,采用分布式部署的方式,部署多台服务器,把流量分流开,让每个服务器都承担一部分的并发和流量,提升整体系统的并发能力。2。微服务拆分(系统拆分)
  要提高系统的吞吐,提高系统的处理并发请求的能力。除了采用分布式部署的方式外,还可以做微服务拆分,这样就可以达到分摊请求流量的目的,提高了并发能力。
  所谓的微服务拆分,其实就是把一个单体的应用,按功能单一性,拆分为多个服务模块。比如一个电商系统,拆分为用户系统、订单系统、商品系统等等。
  3。分库分表
  当业务量暴增的话,MySQL单机磁盘容量会撑爆。并且,我们知道数据库连接数是有限的。在高并发的场景下,大量请求访问数据库,MySQL单机是扛不住的!高并发场景下,会出现toomanyconnections报错。
  所以高并发的系统,需要考虑拆分为多个数据库,来抗住高并发的毒打。而假如你的单表数据量非常大,存储和查询的性能就会遇到瓶颈了,如果你做了很多优化之后还是无法提升效率的时候,就需要考虑做分表了。一般千万级别数据量,就需要分表,每个表的数据量少一点,提升SQL查询性能。
  当面试官问要求你设计一个高并发系统的时候,一般都要说到分库分表这个点。
  之前写了分库分表15连问,为了应对面试官追问到底,大家可以顺便复习一下分库分表的相关经典面试题哈,可以看我这篇文章:分库分表经典15连问4。池化技术
  在高并发的场景下,数据库连接数可能成为瓶颈,因为连接数是有限的。
  我们的请求调用数据库时,都会先获取数据库的连接,然后依靠这个连接来查询数据,搞完收工,最后关闭连接,释放资源。如果我们不用数据库连接池的话,每次执行SQL,都要创建连接和销毁连接,这就会导致每个查询请求都变得更慢了,相应的,系统处理用户请求的能力就降低了。
  因此,需要使用池化技术,即数据库连接池、HTTP连接池、Redis连接池等等。使用数据库连接池,可以避免每次查询都新建连接,减少不必要的资源开销,通过复用连接池,提高系统处理高并发请求的能力。
  同理,我们使用线程池,也能让任务并行处理,更高效地完成任务。大家可以看下我之前线程池的这篇文章,到时候面试官问到这块时,刚好可以扩展开来讲面试必备:Java线程池解析细数线程池的10个坑5。主从分离
  通常来说,一台单机的MySQL服务器,可以支持500左右的TPS和10000左右的QPS,即单机支撑的请求访问是有限的。因此你做了分布式部署,部署了多台机器,部署了主数据库、从数据库。
  但是,如果双十一搞活动,流量肯定会猛增的。如果所有的查询请求,都走主库的话,主库肯定扛不住,因为查询请求量是非常非常大的。因此一般都要求做主从分离,然后实时性要求不高的读请求,都去读从库,写的请求或者实时性要求高的请求,才走主库。这样就很好保护了主库,也提高了系统的吞吐。
  当然,如果回答了主从分离,面试官可能扩展开问你主从复制原理,问你主从延迟问题等等,这块大家需要全方位复习好哈。可以去看看我之前的这篇文章
  面试必备:聊聊MySQL的主从6。使用缓存
  无论是操作系统,浏览器,还是一些复杂的中间件,你都可以看到缓存的影子。我们使用缓存,主要是提升系统接口的性能,这样高并发场景,你的系统就可以支持更多的用户同时访问。
  常用的缓存包括:Redis缓存,JVM本地缓存,memcached等等。就拿Redis来说,它单机就能轻轻松松应对几万的并发,你读场景的业务,可以用缓存来抗高并发。
  缓存虽然用得爽,但是要注意缓存使用的一些问题:缓存与数据库的一致性问题缓存雪崩缓存穿透缓存击穿
  如果大家打算使用Redis的话,需要知道一些注意点,可以看下我之前的这篇文章哈,挺好的。使用Redis,你必须知道的21个注意要点7。CDN,加速静态资源访问
  商品图片,icon等等静态资源,可以对页面做静态化处理,减少访问服务端的请求。如果用户分布在全国各地,有的在上海,有的在深圳,地域相差很远,网速也各不相同。为了让用户最快访问到页面,可以使用CDN。CDN可以让用户就近获取所需内容。
  什么是CDN?
  ContentDeliveryNetworkContentDistributionNetwork,翻译过来就是内容分发网络,它表示将静态资源分发到位于多个地理位置机房的服务器,可以做到数据就近访问,加速了静态资源的访问速度,因此让系统更好处理正常别的动态请求。8。消息队列,削锋
  我们搞一些双十一、双十二等运营活动时,需要避免流量暴涨,打垮应用系统的风险。因此一般会引入消息队列,来应对高并发的场景。
  假设你的应用系统每秒最多可以处理2k个请求,每秒却有5k的请求过来,可以引入消息队列,应用系统每秒从消息队列拉2k请求处理得了。
  有些伙伴担心这样可能会出现消息积压的问题:首先,搞一些运营活动,不会每时每刻都那么多请求过来你的系统(除非有人恶意攻击),高峰期过去后,积压的请求可以慢慢处理;其次,如果消息队列长度超过最大数量,可以直接抛弃用户请求或跳转到错误页面;9。ElasticSearch
  Elasticsearch,大家都使用得比较多了吧,一般搜索功能都会用到它。它是一个分布式、高扩展、高实时的搜索与数据分析引擎,简称为ES。
  我们在聊高并发,为啥聊到ES呢?因为ES可以扩容方便,天然支撑高并发。当数据量大的时候,不用动不动就加机器扩容,分库等等,可以考虑用ES来支持简单的查询搜索、统计类的操作。10。降级熔断
  熔断降级是保护系统的一种手段。当前互联网系统一般都是分布式部署的。而分布式系统中偶尔会出现某个基础服务不可用,最终导致整个系统不可用的情况,这种现象被称为服务雪崩效应。
  比如分布式调用链路ABC。。。。,下图所示:
  如果服务C出现问题,比如是因为慢SQL导致调用缓慢,那将导致B也会延迟,从而A也会延迟。堵住的A请求会消耗占用系统的线程、IO、CPU等资源。当请求A的服务越来越多,占用计算机的资源也越来越多,最终会导致系统瓶颈出现,造成其他的请求同样不可用,最后导致业务系统崩溃。
  为了应对服务雪崩,常见的做法是熔断和降级。最简单是加开关控制,当下游系统出问题时,开关打开降级,不再调用下游系统。还可以选用开源组件Hystrix来支持。
  你要保证设计的系统能应对高并发场景,那肯定要考虑熔断降级逻辑进来。11。限流
  限流也是我们应对高并发的一种方案。我们当然希望,在高并发大流量过来时,系统能全部请求都正常处理。但是有时候没办法,系统的CPU、网络带宽、内存、线程等资源都是有限的。因此,我们要考虑限流。
  如果你的系统每秒扛住的请求是一千,如果一秒钟来了十万请求呢?换个角度就是说,高并发的时候,流量洪峰来了,超过系统的承载能力,怎么办呢?
  这时候,我们可以采取限流方案。就是为了保护系统,多余的请求,直接丢弃。
  什么是限流:在计算机网络中,限流就是控制网络接口发送或接收请求的速率,它可防止DoS攻击和限制Web爬虫。限流,也称流量控制。是指系统在面临高并发,或者大流量请求的情况下,限制新的请求对系统的访问,从而保证系统的稳定性。
  可以使用Guava的RateLimiter单机版限流,也可以使用Redis分布式限流,还可以使用阿里开源组件sentinel限流。
  面试的时候,你说到限流这块的话?面试官很大概率会问你限流的算法,因此,大家在准备面试的时候,需要复习一下这几种经典的限流算法哈,可以看下我之前的这篇文章,面试必备:4种经典限流算法讲解12。异步
  回忆一下什么是同步,什么是异步呢?以方法调用为例,它代表调用方要阻塞等待被调用方法中的逻辑执行完成。这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。
  因此,设计一个高并发的系统,需要在恰当的场景使用异步。如何使用异步呢?后端可以借用消息队列实现。比如在海量秒杀请求过来时,先放到消息队列中,快速响应用户,告诉用户请求正在处理中,这样就可以释放资源来处理更多的请求。秒杀请求处理完后,通知用户秒杀抢购成功或者失败。13。接口的常规优化
  设计一个高并发的系统,需要设计接口的性能足够好,这样系统在相同时间,就可以处理更多的请求。当说到这里的话,可以跟面试官说说接口优化的一些方案了。大家可以看下我的这篇文章哈:实战总结!18种接口优化方案的总结
  14。压力测试确定系统瓶颈
  设计高并发系统,离不开最重要的一环,就是压力测试。就是在系统上线前,需要对系统进行压力测试,测清楚你的系统支撑的最大并发是多少,确定系统的瓶颈点,让自己心里有底,最好预防措施。
  压测完要分析整个调用链路,性能可能出现问题是网络层(如带宽)、Nginx层、服务层、还是数据路缓存等中间件等等。
  loadrunner是一款不错的压力测试工具,jmeter则是接口性能测试工具,都可以来做下压测。15。应对突发流量峰值:扩容切流量
  如果是突发的流量高峰,除了降级、限流保证系统不跨,我们可以采用这两种方案,保证系统尽可能服务用户请求:扩容:比如增加从库、提升配置的方式,提升系统组件的流量承载能力。比如增加MySQL、Redis从库来处理查询请求。切流量:服务多机房部署,如果高并发流量来了,把流量从一个机房切换到另一个机房。
  来源:https:mp。weixin。qq。comsPPA8Iw6K2M2xVnGETf6zw
  作者:程序员田螺

杜锋护犊被驱逐,追骂对手,广东男篮垃圾时间上主力,无声抗议裁判?杜锋护犊被驱逐,追骂对手,广东男篮垃圾时间上主力,无声抗议裁判?北京时间3月13日,cba常规赛如期进行,山西男篮坐镇主场迎战广东男篮,广东男篮此前3连胜高居CBA积分榜次席,而山夜读丨和时间赛跑主播读经典,陪您说晚安。朋友您好,这里是闪电夜读,我是武城融媒主播孙金熠,今天和你分享的是林清玄的文章和时间赛跑。和时间赛跑文丨林清玄读小学的时候,我的外祖母去世了。外祖母生前最疼中国历史上在位时间最长的十位皇帝,清朝是最大赢家?自秦始皇算起,中国两千年的封建历史中,出现了数百位皇帝。其中一些皇帝在位期间极为漫长,给后世留下了深远的影响。下面,小编就为大家介绍了历史上在位时间最长的十位皇帝,希望这些内容能对戴尔PC要100离开中国!完整时间表曝光真着急在各大厂商中,戴尔一直是离开中国的急先锋。现在,有媒体曝光了戴尔所谓去中化的全套剧本和时间表,从上游IC采购到中下游周边再到整机组装,都有明确的安排。根据计划,戴尔预计从2025年浮生茶语时间如流水过去,只有茶浓淡依旧杯中物最美非酒而为茶。看着茶叶在水中懒懒的舒展开,就仿佛是在诞生一个杯中的春天,沁出来的是夏日的芬芳。仰着头,细细品味这茶香。七窍如意,心静如上水。现若有心寻一份茶缘,大可不必劳神穿越时空的奇妙之旅时间简史读后感时间简史是英国著名的物理学家史蒂芬霍金的代表作之一。这本书向读者介绍了关于宇宙和时间的知识,从最初的大爆炸到黑洞,从相对论到量子力学,霍金通过通俗易懂的语言,向读者讲述了现代物理学最新回国政策发布,加拿大回国机票飙升相信大家都看到了,北京时间3月13日,中国驻多国大使馆几乎同时宣布2023年3月15日起恢复原有10年签证。如果把通知中的四条总结为一句话,那就是中国入境政策基本回到疫情之前。中国一周游闻两家港股上市游戏公司2022年业绩预计巨额亏损2023年3月第2周已过,我们汇总了游戏行业各类焦点事件,保证你不错过关键消息,一起来看看吧。01两会动态据最高检报道,全国人大代表李树林建议由公检法牵头,国家新闻出版署配合,开发三菱公司将为日本气象厅建造日本最新的地球静止气象卫星Himawari10据businesswire网站3月14日报道,三菱电机公司近日宣布,它赢得了日本气象厅(JMA)的合同,建造日本最新的地球静止气象卫星,称为Himawari10,这将是三菱电机继多威联通非官方入坑手册NAS部署24小时待机的超精简Win10,挂网课本内容来源于什么值得买APP,观点仅代表作者本人作者晋升奶爸的垃圾佬hello小伙伴大家好,这里是你们喜欢分享NAS玩法的小伙伴晋升奶爸的垃圾佬。引子Nas虽然给我们的生活带来了很充电1小时,电量才40!共享充电宝这些问题,你遇到了吗手机是现代人出门必带的东西,为了时刻保持在线,充电宝也随之成了标配。于是,随处可见的共享充电宝已经成了我们日常生活中最为常见的物件。为了解共享充电宝服务的消费痛点,杭州市消保委在浙
每天你家主食吃对了吗?怎么吃蔬菜?吃够肉奶蛋豆了吗?你知道吗?导致死亡人数最多的疾病是什么?人到老年,影响生活质量的疾病是什么?答案是心脑血管病越来越多的研究证实终生保持健康的生活方式是保护血管最有效的方法,其中健康饮食首当其冲,一健脾益肾润肠通便!粗粮养生汤健康又好喝广东省中医院临床营养科推荐主要功效健脾益肾润肠通便推荐理由一般人群均可,消化功能极差的人群不宜过多食用。材料黑米25g黑豆25g五色藜麦25g鲜莲子50g核桃肉4个龙眼肉5g枸杞5于德豪揽责身为后卫失误太多我最后几个关键球的处理不妥当直播吧10月15日讯今日CBA常规赛,新疆9598不敌北控。赛后,新疆男篮后卫于德豪出席了记者会。于德豪点评比赛今天北控拼得很凶,然后我们经历了起伏与波动,但球队还是拼到了最后。只狂轰5586,杰伦格林大爆发!战胜步行者,火箭季前赛完美收官今天火箭客场挑战步行者,这也是他们季前赛的收官之战。首节比赛,火箭一上来全队进攻手感火热,单节轰下39分,第一节结束已经领先步行者10分了。第二节比赛,火箭的火力更上一层楼,外线三公牛裁掉怀特,德罗赞加盟勇士方案出炉北京时间10月16日,随着新赛季的即将到来,季前赛也慢慢的进入了尾声,联盟各支对自己阵容不是太满意的球队仍然继续进行调整,就在刚刚,联盟又有2笔签约4笔裁员正式完成,而据美媒建议,今秋杏色直筒裤又来炸街了,洋气显瘦又增高,专治腿粗胯宽秋日生活打卡季很多人平时生活中觉得自己的搭配平平无奇,容易显胖,这些问题其实不是你自己的原因,而是因为你没有给自己选择到合适的服装,就像很多小姐姐在平时生活中如果买裤子,一般都只会烧烤全国第一,沾串1元5根一步一美食的宝藏小城相信很难有人,能抵挡住美食的诱惑。但比起去那些热门的旅游城市打卡火爆的网红店,我更偏爱钻进小城市里充满烟火气的市场或小巷,随便找家店吃一顿,总能带来惊喜。NO。1龙游被韩寒搬进电影这座好吃懒做的江南老城,会玩会吃会生活,去一次就爱上从前,武陵人一路沿溪行进树林钻山洞。。发现了世外桃源。现在,人们奔赴苏州流连杭州耽于扬州。。寻觅心中的江南。每个人心中都有一个江南,或是烟柳画桥,或是酒肆欢歌,或载着水汽,或乘着诗一叶知秋意,一秋知城美一起来看商河的秋天都说,秋天的新疆是一种瘾,去过戒不掉秋天的西藏是一种病,不去治不好但有这么一个地方可以戒掉去新疆的瘾,治好去西藏的病它就是商河!一叶知秋意,一秋知城美一到秋天,商河就美成了画卷!它退休旅居指南韶关乳源乳源一座来了令人流连的城市这里没有太多的高楼大厦没有宏伟的建筑标志也没有那高端大气的购物商城这里,有的只是令人震撼的风景有的是让人一秒爱上的青山绿水韶关乳源,是历史悠久的古虞名郡这1973年杨得志到农村看老战友,发现他没钱看病,县委怀疑是特务杨得志出生于1911年,1928年加入中国共产党,并且加入了工农革命军,参加过抗日战争,长征和解放战争。1949年建国后先后担任多个国家军政重要职务,如中国人民解放军军事学院战役系
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网