从服务端视角看高并发难题

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

从服务端视角看高并发

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

高并发带来的问题

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

高并发处理的基本思路

1)从客户端看

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

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

2)从服务端看

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

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

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

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

高并发处理的基本手段

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

l 对Web服务器进行集群

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

l 动态内容静态化

l Java开发优化

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

l 合理高效的利用缓存

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

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

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

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

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

l 合理使用异步处理

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应用案例

超全的PLC选型总结

在plc系统设计时,首先应确定系统方案,下一步工作就是PLC的设计选型。选择PLC,主要是确定PLC的生产厂家和PLC的具体型号。对于系统方案要求有分布式系统、...

2377
来自专栏黑泽君的专栏

Github上如何在组织中的代码仓库里,为组织中的小组创建Pull Request(拉取请求/下载请求)?

如何在组织中的代码仓库里,为组织中的小组创建Pull Request(拉取请求/下载请求)?   当你在一个更大的组织中工作时,良好的创建Pull Reque...

883
来自专栏java一日一条

Java并发教程(Oracle官方资料)

计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的 应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至...

912
来自专栏Java技术栈

一张图告诉你为什么是服务网关。

网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的路由转发、过滤和公共处理等。 在微服务实践中远不止这点功能,它可以做到统一接入、流量管控、...

3338
来自专栏程序猿DD

都在说微服务,那么微服务的反模式和陷阱是什么(一)

译者:程超 译文:http://www.jianshu.com/p/3986239138fe 一、数据驱动的迁移反模式 微服务会创建大量小的、分布式的、单一用途...

2049
来自专栏腾讯大数据的专栏

分布式系统场景注入测试

前言 大数据浪潮下,海量数据处理能力的提升是推动大数据不断前行的基础,海量数据处理的分布式系统应运而生,hdfs、hadoop、spark、storm、MQ等...

2708
来自专栏原创

如何通过个推SDK实现IM功能

产品上线4年多以来,个推已经服务了逾19万app开发者和35万app,助推了无数拥有亿级用户量的合作伙伴应用精细化运营。 但是,大多数开发者都不了解,用个推的推...

4148
来自专栏Java技术分享

Redis 在 SNS 类应用中的最佳实践有哪些?

2. 热点数据的实时缓存(比如feed,数据库、缓存同时写)

2249
来自专栏smy

一张图解释负载均衡

首先当大量用户访问时候,先请求到nignx服务器,因为nignx对于高并发支持较好,所以由nignx服务器将访问需求分配给不同的apache服务器,apache...

1473
来自专栏zhangdd.com

make: 警告:检测到时钟错误。您的创建可能是不完整的 问题解决方法

今天编译nginx源码,make的时候也出现了这个问题,报错”make: 警告:检测到时钟错误。您的创建可能是不完整的。”

1174

扫码关注云+社区

领取腾讯云代金券