高并发系统总是那么令人着迷,比如说双十一的抢购,比如说12306的抢票,都是非常经典的高并发的例子,也是非常大的挑战。对于开发这样系统的人来说,最怕的就是突发的流量,就好比河流突发大水而引发洪涝灾害一样,突发的流量也会引起服务器奔溃。

为了应对这些突发的流量,我们总需要做点什么?今天我们来介绍一下高并发的几个套路。

分布式

提升并发的好的办法,便是提升硬件。举个大家都熟悉的例子,十年前的诺基亚手机,一般我们只能简单的挂一个QQ后台,多干几个事情,就不行了。五年前,我们用的安卓手机能开十来个任务,切换也比较流畅了,而今天,刚刚发布的苹果iPhone11,性能就更加强劲。但是我们也发现,这两年,好像手机的性能没有飞速发展了。无论是苹果、高通还是华为,或者是PC芯片的厂商因特尔或者AMD,都开始慢慢在挤牙膏了。

这其实是受到物理定理的制约,晶体管不可能无限小,无限集成,硬件不可能一直保持突飞猛进。并且,越是高端的机器,成本越贵,并且这个价格很可能是指数级增长的。谷歌公司在很早之前就发现,于是开始组建分布式系统,使用一个集群而不是一台机器来完成相关的工作,凭借这一点,谷歌在互联网早期迅速发展。

缓存

缓存,是解决高并发问题的另一个有效手段。因为磁盘的读写速度较慢,所以我们常常用读写速度的更高的内存来防止流量到达磁盘。

一般我们会把一些静态资源都放在缓存上,或者将一些动态的又不怎么重要的更新频率可以接受延迟的放在缓存里。举个例子,音乐服务器,我们可以把专辑的图片、音乐文件这些放在CDN等缓存服务上,对于一些热门的评论列表,我们也可以进行缓存,一定时间才刷新一次,可以大大减少磁盘的压力。当然,有时候有缓存还远远不够,例如前几天周杰伦的新专辑照样打垮了QQ音乐的服务器。

异步

即便是有缓存,有些请求仍然没有办法快速的相应。

有些请求是写请求,举个例子,沙茶敏写了一份电子邮件,群发了1万个人,群发的人数非常多,服务器要往很多人的信箱投递消息,假设一个人需要0.1秒,1万个人也要1000秒。虽然可以并发到多台机器解决,但是非常浪费资源,如果很多人这么做,系统压力非常大。

另外的情况,是有可能某个系统处理非常慢,这个系统既有可能是业务非常复杂,也有可能是第三方系统,举个例子,沙茶敏从支付宝提取一笔资金到某小银行,因为技术原因,某个小银行每次接口访问都要10秒钟,不可能在转账页面卡10秒,所以支付宝先告诉用户转账成功了,然后异步进行。

异步,我们通常采用了异步队列,异步的好处除了削峰,限流,提升用户体验,还能很好的保护系统。

总结

上面就是高并发系统中常用的几个套路,当然,实际开发中我们还有很多要注意的。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。有想要学习C/C++编程的可以关注私信小编“编程”二字交流 ,领取免费资料

分享c/c++编程交流裙893154226里面有许多C语言以及C++、java还有算法等资料分享有意学习者可加,广告党请绕道

程序员经典面试题,高并发系统,一般需要怎么做相关推荐

  1. mysql会对同时读取加锁吗_程序员经典面试题,MySQL并发读写的时候,都是需要加锁的么?...

    这是一道经典的程序员面试题,在Mysql中,如果有多个事务同时访问同一行数据,那么需要加锁么?我们都知道,在Mysql中有行锁,如果有多个事务同时修改同一行数据,那么需要加锁来防止并发问题.那么,如果 ...

  2. 程序员应如何理解高并发中的协程

    来源 | 码农的荒岛求生 责编 | 晋兆雨 头图 | 付费下载于视觉中国 作为程序员,想必你多多少少听过协程这个词,这项技术近年来越来越多的出现在程序员的视野当中,尤其高性能高并发领域.当你的同学.同 ...

  3. 小郭经典mysql面试题资料_程序员经典面试题,Mysql是如何完成一次数据查询的...

    数据库,大家都不陌生,这是程序员的基本技能了.当然,我们更多时候只是去了解如何使用数据库,而对数据库一些底层原理却比较陌生,今天我们来了解一下,一条数据库查询语句的取经之路. 基本分层 个人认为,My ...

  4. java重定向代码_Java程序员经典面试题集大全 (三十四)

    341. Servlet API中forward() 与redirect()的区别? 答:为实现程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet中主要有两种实现跳转的方 ...

  5. c-free5.0 程序代码正确 结果运行程序错误_Java程序员经典面试题集大全 (六)...

    61. 执行如下程序代码,c的值打印出来是() public class Test1 {public static void main(String[] args) {int a = 0;int c ...

  6. java获取字符串第一位_Java程序员经典面试题集大全 (十一)

    >>> 学习交流群 < < < 111. Java中byte表示的数值范围是什么? 答:范围是-128至127 112.如何将日期类型格式化为:2013-02-18 ...

  7. mysql 自增 不是主键_程序员经典面试题,MySQL自增主键为什么不连续

    在我们日常使用Mysql中,如果不是特殊的业务需要,一般我们都会使用自增主键,自增主键的好处可以在插入的时候尽量地减少页分割,增加Mysql的写入效率.我们有时候就会发现,自增主键并不是连续递增的,为 ...

  8. java程序员面试题200题_Java程序员经典面试题集大全 (三十)

    301. jQuery中有哪几种类型的选择器? 答案:基本选择器 层次选择器 基本过滤选择器 内容过滤选择器 可见性过滤选择器 属性过滤选择器 子元素过滤选择器 表单选择器 表单过滤选择器 302. ...

  9. 主键冲突报什么代码_程序员经典面试题,Mysql自增主键为什么不连续

    在我们日常使用Mysql中,如果不是特殊的业务需要,一般我们都会使用自增主键,自增主键的好处可以在插入的时候尽量地减少页分割,增加Mysql的写入效率.我们有时候就会发现,自增主键并不是连续递增的,为 ...

最新文章

  1. Postman响应断言
  2. 开始简单项目的第二周
  3. 办公室琐事--沟通、交流
  4. Verilog自编函数clog2替代SV中的系统函数$clog2
  5. Extjs 入门(03) 折叠||收锉
  6. Catalog Service - 解析微软微服务架构eShopOnContainers(三)
  7. 【渝粤教育】广东开放大学 系统工程 形成性考核 (25)
  8. 辅助判卷程序项目的扩展--自动出题
  9. 【Git】PyCharm项目关联Git的解决方案
  10. 程序员curd编程是什么_为什么许多程序员讨厌结对编程?
  11. Linux运维之道之网络基础学习1.0
  12. linux后台开发核心技术
  13. 为什么有时不能正确定位到异常的发生位置?
  14. ch340驱动文件C语言,STC51单片机自学经验分享 WIN10系统安装CH340驱动程序失败的解决方法...
  15. php博饼,妙趣横生庆中秋:厦门博饼
  16. HTML5+CSS3基础响应式页面布局
  17. Leetcode——四数之和问题
  18. 演讲技巧_成功进行技术演讲的11个重要技巧
  19. 2021腾讯犀牛鸟校园布道师养成计划丨百校同行
  20. 元引擎视频制作工具 一键生成原创视频软件

热门文章

  1. oracle什么是重复组,规范化:“重复组”是什么意思?
  2. php返回支付状态,magento paypal返回支付状态
  3. java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制
  4. 流程控制介绍,顺序结构、分支结构、循环结构、Promise对象、throw语句、break和continue关键字
  5. Linux网络管理实 验 指 导
  6. 一个指针变量到底占几个字节
  7. 2021年中国电影营销数字化发展分析
  8. 全球数字经济白皮书——疫情冲击下的复苏新曙光
  9. python是不是汇编语言_python是汇编语言吗
  10. 作者:余超(1993-),男,作者:华东政法大学民商法学硕士生,主要研究方向为民商法。...