zoukankan      html  css  js  c++  java
  • 从服务端视角看高并发难题

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

     

    从服务端视角看高并发

    服务端处理请求需要耗费服务端的资源,比如能同时开启的进程数、能同时运行的线程数、网络连接数、cpu、I/O、内存等等,由于服务端资源是有限的,那么服务端能同时处理的请求也是有限的。高并发问题的本质就是:资源的有限性

    高并发带来的问题

    服务端的处理和响应会越来越慢,甚至会丢弃部分请求不予处理,更严重的会导致服务端崩溃。

    高并发处理的基本思路

    1)从客户端看

    尽量减少请求数量,比如:依靠客户端自身的缓存或处理能力。

    尽量减少对服务端资源的不必要耗费,比如:重复使用某些资源,如连接池客户端处理的基本原则就是:能不访问服务端就不要访问

    2)从服务端看

    增加资源供给,比如:更大的网络带宽,使用更高配置的服务器,使用高性能的Web服务器,使用高性能的数据库

    请求分流,比如:使用集群,分布式的系统架构

    应用优化,比如:使用更高效的编程语言,优化处理业务逻辑的算法,优化访问数据库的SQL

    基本原则:分而治之,并提高单个请求的处理速度

    高并发处理的基本手段

    1)客户端发出请求层面,常见的手段有:

    尽量利用浏览器的缓存功能,减少访问服务端,比如:js、css、图片等

    l 可以考虑使用压缩传输的功能,减少网络流量,也会提高传输速度

    l 考虑使用异步请求,分批获取数据

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

    动静分离,部分静态资源可以直接从Nginx返回

    l 按请求的不同,分发到不同的后端进行处理,比如:负载均衡、业务拆分访问等

    前面再加上一层来做多个Nginx的负载均衡,比如:LVS、F5等

    还可以在更前面使用CDN服务

    l 还可以对动态内容进行缓存,尽量减少访问后端服务

    3)Web服务器层面,常见的手段有:

    使用最新的JVM,并进行配置优化

    Web服务器进行配置优化,比如:调整内存数量、线程数量等

    提供多个能提供相同服务的Web服务器,以实现负载均衡

    仔细规划Web服务器上部署的应用规模

    Web服务器进行集群

    4)Web应用层面,常见的手段有:

    l 动态内容静态化

    l Java开发优化

    l 优化处理业务逻辑的算法

    l 合理高效的利用缓存

    优化访问数据库的Sql,可以考虑利用存储过程等数据库的能力

    l 合理使用多线程,加快业务处理

    l 部分业务可以考虑内存数据库,或者是进行纯内存处理

    尽量避免远程调用、大量I/O等耗时的操作

    l 合理规划事务等较为耗资源的操作

    l 合理使用异步处理

    l 对部分业务考虑采用预处理或者预计算的方式,减少实时计算量

    内部系统间的业务尽量直接调用、直接处理,减少WebService、工作流等

     

    让每个程序员都能开发大数据,底层技术从此触手可及!
  • 相关阅读:
    vs c++ 自动生成svn版本信息 编译前脚本
    cannot seek value-initialized vector iterator 程序崩溃
    shell 统计代码行数
    c++ 控制台程序增加图标的一种方法
    grpc c++ 设置断线重连时间
    拓端数据tecdat|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
    拓端数据tecdat|R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用
    拓端数据tecdat|Python风险价值计算投资组合VaR(Value at Risk )、期望损失ES(Expected Shortfall)
    拓端数据tecdat|R语言用相关网络图可视化分析汽车配置和饮酒习惯
    拓端数据tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
  • 原文地址:https://www.cnblogs.com/dkhadoop/p/9896037.html
Copyright © 2011-2022 走看看