我们在应对高并发大流量时也会采用类似“抵御洪水”的方案,归纳起来共有三种方法。

  • Scale-out(横向扩展):分而治之是一种常见的高并发系统设计方法,采用分布式部署的方式把流量分流开,让每个服务器都承担一部分并发和流量。你也可以简单的理解为是扩容,之所以叫抗住千万级流量的应用,是和你单机能承受住的流量*机器总数 有关系的;

  • 缓存:使用缓存来提高系统的性能,就好比用“拓宽河道”的方式抵抗高并发大流量的冲击,简单的可以理解为拓宽河道可以达到提速的目的;

  • 异步:在某些场景下,未处理完成之前,我们可以让请求先返回,在数据准备好之后再通知请求方,这样可以在单位时间内处理更多的请求。

罗马不是一天建成的,系统的设计也是如此。不同量级的系统有不同的痛点,也就有不同的架构设计的侧重点。如果都按照百万、千万并发来设计系统,电商一律向淘宝看齐,IM 全都学习微信和 QQ,那么这些系统的命运一定是灭亡。

因为淘宝、微信的系统虽然能够解决同时百万、千万人同时在线的需求,但其内部的复杂程度也远非我们能够想象的。盲目地追从只能让我们的架构复杂不堪,最终难以维护。就拿从单体架构往服务化演进来说,淘宝也是在经历了多年的发展后,发现系统整体的扩展能力出现问题时,开始启动服务化改造项目的。

一般系统的演进过程应该遵循下面的思路:

  • 最简单的系统设计满足业务需求和流量现状,选择最熟悉的技术体系。

  • 随着流量的增加和业务的变化,修正架构中存在问题的点,如单点问题,横向扩展问题,性能无法满足需求的组件。在这个过程中,选择社区成熟的、团队熟悉的组件帮助我们解决问题,在社区没有合适解决方案的前提下才会自己造轮子。

  • 当对架构的小修小补无法满足需求时,考虑重构、重写等大的调整方式以解决现有的问题。

应对高并发的几个常见方法相关推荐

  1. 视频直播系统开发:如何应对高并发访问?

    视频直播开发的挑战 随着移动互联网的快速普及,视频直播已经成为了新的社交媒体形式,也成为了一种新的商业模式.现在,越来越多的人开始使用视频直播来展示自己的生活和工作,同时,越来越多的企业开始将视频直播 ...

  2. 小米开源监控系统OpenFalcon应对高并发7种手段

    2019独角兽企业重金招聘Python工程师标准>>> 小米开源监控系统OpenFalcon应对高并发7种手段 原创 2016-04-01 秦晓辉 高可用架构 编者按:本文是秦晓辉在 ...

  3. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  4. 程序员过关斩将--应对高并发系统有没有通用的解决方案呢?

    " 灵魂拷问: 应对高并发系统有没有一些通用的解决方案呢? 这些方案解决了什么问题呢? 这些方案有那些优势和劣势呢? 对性能孜孜不倦的追求是互联网技术不断发展的根本驱动力,从最初的大型机到现 ...

  5. 如何应对高并发问题?

    如何应对高并发问题? 我觉着可以从两方面来着手,第一方面是硬件,第二方面是软件.当然硬件方面做的比较少,从软件方面来说做的就比较多了. 硬件方面的话,我们可以购买性能更好的服务器,或者是提升现有服务器 ...

  6. 京东云携手达达构建行业首个跨云双活平台 应对高并发需求

    达达快送平台的孙壮不经意间刷新了自己配送时效的记录. 2020年6月18日,他只用了十几分钟就将达达集团旗下即时零售平台京东到家的订单送到了用户手中.并且还是在层层山峦,蜿蜒崎岖的山城重庆. 跟孙壮一 ...

  7. 深入浅出!阿里运维专家三种方法教你如何应对高并发“海啸”场景

    作者:田杰,阿里云数据库高级运维专家 在数据库的日常使用中,来自应用的高并发场景并不罕见,其标志性的表现为 高新连接创建速率(CPS,比如 PHP 短连接).发送大量请求到 DB 数据库层. 如同 海 ...

  8. java队列实现限流,java中应对高并发的两种策略

    目的:提高可用性 通过ExecutorService实现队列泄洪 //含有20个线程的线程池 private ExecutorService executorService = Executors.n ...

  9. 大数据量高并发访问的数据库优化方法

    一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...

最新文章

  1. 重复调用的代码块——方法
  2. JavaScript实现cartesianProduct笛卡尔乘积算法(附完整源码)
  3. C语言调用WIN32 API学习之6鼠标与键盘响应
  4. mysql8安装后初始化密码
  5. 恒大全国降价,最低74折,接下来会有其他楼盘跟进降价吗?
  6. LeetCode:Path Sum II
  7. Linux 系统管理
  8. 【实践】推荐召回体系化建设与排序优化实践(附PPT下载链接)
  9. 怎样import(导入)过期的磁带
  10. android 7 sl4a,SL4A蟒蛇作出android手机
  11. 资源暂时不可用错误(Out of memery)完美解决方案
  12. Python创建临时文件和文件夹
  13. 监控摄像头为什么可以发出声音并且可以接受对方声音?
  14. java web 开发
  15. python redis常见用法总结
  16. Java枚举类与注解——一篇文章读懂枚举类与注解
  17. Android手机屏幕RTMP推流工具
  18. 创乐博相机和迈德威视工业相机调参记录
  19. 【进阶版】机器学习之线性模型介绍及过拟合欠拟合解决方法岭回归、loss回归、elasticnet回归(05)
  20. Robomaster2022青少年对抗赛备赛报告

热门文章

  1. Ansible配置文件ansible.cfg
  2. 7 series FPGAs Transceiver Wizard IP核使用和测试
  3. 火车头采集器 采集https网站 以及网站cookie 避免 蜘蛛 爬虫 程序等
  4. android 手机 拍 全景 java_Android开发如何调用相机的全景拍摄功能
  5. 游戏辅助制作核心--植物大战僵尸逆向之植物种植call(七)
  6. 互联网IT就业市场,你要说最有市场的一定是它,linux内核视频教程全套
  7. asp 更新 mysql数据库_asp update mysql数据库
  8. 使用docsify搭建在线文档中心
  9. java IO流(复习,上课笔记)
  10. android 学生信息管理系统,android学生信息管理系统的报告.docx