转载:https://www.cnblogs.com/guan-520/p/9575848.html

何谓高并发

  高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。

  从服务端视角看高并发服务端处理请求需要耗费服务端的资源,比如能同时开启的进程数、能同时运行的线程数、网络连接数、

  cpu、I/O、内存等等,由于服务端资源是有限的,那么服务端能同时处理的请求也是有限的;

  高并发问题的本质就是:资源的有限性

  高并发带来的问题  

  服务端的处理和响应会越来越慢,甚至会丢弃部分请求不予处理,更严重的会导致服务端崩溃。高并发问题并不是互联网应用独有。

  高并发问题的层面比如:前端请求、Web服务器、Web应用、数据库等。

  高并发处理的基本思路

  一:从客户端看
    1:尽量减少请求数量,比如:依靠客户端自身的缓存或处理能力
    2:尽量减少对服务端资源的不必要耗费,比如:重复使用某些资源,如连接池
  客户端处理的基本原则就是:能不访问服务端就不要访问

  二:从服务端看
  1:增加资源供给,比如:
    (1)更大的网络带宽;
    (2)使用更高配置的服务器;
    (3)使用高性能的Web服务器;
    (4)使用高性能的数据库;

  2:请求分流,比如:
    (1)使用集群;
    (2)分布式的系统架构;

  3:应用优化,比如:
    (1)使用更高效的编程语言
    (2)优化处理业务逻辑的算法
    (3)优化访问数据库的SQL
  服务端的处理基本原则是:分而治之,并提高单个请求的处理速度。

  高并发处理的基本手段

  客户端发出请求层面,常见的手段有:
  1:尽量利用浏览器的缓存功能,减少访问服务端,比如:js、css、图片等;
  2:可以考虑使用压缩传输的功能,减少网络流量,也会提高传输速度;
  3:考虑使用异步请求,分批获取数据;

  前端接收客户端请求层面,常见的手段有:

  1:动静分离,部分静态资源可以直接从Nginx返回;
  2:按请求的不同,分发到不同的后端进行处理,比如:负载均衡、业务拆分访问等;
  3:前面再加上一层来做多个Nginx的负载均衡,比如:LVS、F5等;
  4:还可以在更前面使用CDN服务;

  5:还可以对动态内容进行缓存,尽量减少访问后端服务;
  6:使用页面片断缓存技术,比如ESI(Edge Side Includes );

  Web服务器层面,常见的手段有:
  1:使用最新的JVM,并进行配置优化;
  2:合理选择服务器的运行模式,比如有些服务器有Client和Server之分;
  3:对Web服务器进行配置优化,比如:调整内存数量、线程数量等;
  4:提供多个能提供相同服务的Web服务器,以实现负载均衡;
  5:仔细规划Web服务器上部署的应用规模;
  6:对Web服务器进行集群;
  7:提供专门的图片、文件、视频等静态资源服务器; 

  Web应用层面,常见的手段有:
  1:动态内容静态化;
  2:Java开发优化;
  3:优化处理业务逻辑的算法;
  4:合理高效的利用缓存;
  5:优化访问数据库的Sql,可以考虑利用存储过程等数据库的能力;
  6:合理使用多线程,加快业务处理;
  7:部分业务可以考虑内存数据库,或者是进行纯内存处理;
  8:尽量避免远程调用、大量I/O等耗时的操作;
  9:合理规划事务等较为耗资源的操作;
  10:合理使用异步处理;
  11:对部分业务考虑采用预处理或者预计算的方式,减少实时计算量;
  12:内部系统间的业务尽量直接调用、直接处理,减少WebService、工作流等;

  数据库层面,常见的手段有:
  1:合理选择数据库的引擎,比如Mysql的InnoDB与MyISAM引擎;
  2:进行配置优化;
  3:可以考虑使用存储过程来处理复杂的数据逻辑;
  4:数据库集群,进行读写分离;
  5:合理设计数据库的表结构、索引等;
  6:分库、分表,降低单库、单表的数据量;
  7:合理使用NoSql;

浅谈WEB中的高并发的更多相关文章

  1. 浅谈web应用的高可用

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全 ...

  2. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  3. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

  4. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  5. 浅谈HTTP中GET、POST用法以及它们的区别

    浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...

  6. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  7. 转:浅谈HTTP中Get、Post、Put与Delete的区别

    1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数据,不会影响资源的内容,即该请求不会产生副作用.无论进行多少次操 ...

  8. 转【】浅谈sql中的in与not in,exists与not exists的区别_

    浅谈sql中的in与not in,exists与not exists的区别   1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...

  9. 浅谈sql中的in与not in,exists与not exists的区别

    转 浅谈sql中的in与not in,exists与not exists的区别   12月12日北京OSC源创会 —— 开源技术的年终盛典 »   sql exists in 1.in和exists ...

随机推荐

  1. lsnrctl: .... cannot restore segment prot after reloc: Permission denied

    cannot restore segment prot after reloc: Permission denied Table of Contents 1. 错误信息 2. 解决方法 1 错误信息 ...

  2. CentOS7出现Unit iptables.service could not be found

    CentOS7默认的防火墙不是iptables,而是firewalle. 出现此情况可能是iptables防火墙未安装. #停止firewalld服务 systemctl stop firewalld ...

  3. delphi 需要应用一个单元是,需要在工程里面先添加单元

    delphi 需要应用一个单元是,需要在工程里面先添加单元

  4. 等待数据库引擎恢复句柄失败 SqlServer2012安装时报错 Win10

    上周,在一批Win10系统电脑上安装SqlServer 2012时,屡次发生报错,安装失败,显示的失败信息是:等待数据库引擎恢复句柄失败 如下图所示: 面对这样的错误,我的第一反应是百度,在百度上找了 ...

  5. 【JVM学习笔记】Class.forName方法学习

    三个参数的版本的源代码如下 doc文档翻译 使用给定的类加载器(即第3个参数)返回与具有给定字符串名称(第1个参数)的类或接口关联的Class对象.给定类或接口的完全限定名称(以getName返回的相 ...

  6. linux 自定义函数

    用别人的车子出行,总感觉别扭,那怎么自定义自己的车轮子呢? 通过上面的求两个参数的和例子,我们可以学到定义一个函数基本的步骤, function getSum(){  SUM=$[$n1+$n2]  ...

  7. Windows To Go 制作详解

    拥有 Mac 的同学大概都会碰到一个头疼的问题,那就是使用 Windows 的使用需求.macOS 虽好,不过总是会有一些讨厌的软件没有 Mac 版本,这时就不得不在 Mac 上跑 Windows 了 ...

  8. 架构模式: 服务前端的后端(BFF模式)

    架构模式: 服务前端的后端(BFF模式) 上下文 让我们假设您正在构建一个使用Microservice体系结构模式的在线商店,并且您正在实现产品详细信息页面.您需要开发产品详细信息用户界面的多个版本: ...

  9. LeetCode刷题4——子集

    一.要求 二.知识点 1.回溯算法 回溯算法相当于穷举法加剪枝,回溯算法总是和深度优先同时出现的,采用深度优先策略回溯到根,且根节点的所有子树都被搜索一遍才结束,并剪掉不符合要求的结果 三.解题思路 ...

  10. web赛题3

    2019--21省赛 wp:https://xz.aliyun.com/t/6458 2019-11-22蚂蚁金服(南邮)wp有了,微信 https://platform.d3ctf.io/#/ @d ...