高并发服务器逻辑处理瓶颈,如何解决?

发布时间:2023-05-23 05:42:05 作者:xue95864 阅读量:4728

高并发服务器逻辑处理瓶颈,如何解决?首先我们先了解什么是并发!

  高并发服务器逻辑处理瓶颈,如何解决?首先我们先了解什么是并发!

  并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。———来源《百科》

  顾名思义,高并发就是在指定时间内,系统同时能够处理大量的请求(连接数)。

  那么如何衡量高并发呢?

  高并发衡量指标

  响应时间:系统对请求做出响应的时间,即一个http请求返回所用的时间;吞吐量:单位时间内处理的请求数量;QPS(TPS):每秒可以处理的请求数或事务数;并发用户数:同时承载正常使用系统功能的用户数量,即多少人同时使用,系统还能正常运行的用户数量; 根据上面衡量指标可以看到,提高并发能力必须解决如下几个问题:

  如何提高并发连接数?那么多的连接数怎么进行业务处理?应用服务器的处理水平又该怎么提高?如何使用微服务架构提升高并发逻辑?别着急,这么多问题我们一个一个来分析解决!

  1)、如何提高并发连接数?

  如下图所示,常规的单一网络连接模型只能1个连接对应1个线程,压力都集中在内存,导致内存开销非常大,肯定支撑的连接数有限!(直接挂掉)

  单一网络连接模型

  有道是业务写的再好不如一台高性能服务器,这个锅不一定要开发人员背的哦!!!服务器的连接入口就那么(比如tomcat只有几千的连接数),那么处理的能力也只局限于几千。怎么解决呢?选用合适的网络IO模型或者selector,通过使用一个线程轮询或者事件触发的方式,能支持几万甚至更多的连接数,再配合上nginx做负载就更完美了。

  2)那么多的连接数怎么进行业务处理?

  大家都知道nginx只是具有反向代理和负载均衡的功能,并不能处理具体的业务逻辑,不能担当应用服务器来使用。例如webSphere 、tomcat和jetty等,但是我们可以利用nginx将接受到的大量连接通过均衡的方式(轮询,权重,hash)分配到不同的应用服务器中进行业务处理!

  nginx负载

  3)应用服务器的处理水平又该怎么提高?

  要提高应用服务器的处理水平就要了解自己的应用服务器的瓶颈在哪里,一般有两个:

  数据库压力:数据库是支撑产品业务的核心模块,系统的高并发的主要压力也是来源于数据库。处理方式有如下这些:数据库本身:建立有效索引、读写分离、双主互备、分库分表(sharding-jdbc等实现)等策略,提高数据库处理能力,减少压力!

  结合内存数据库:例如redid、memcached等,根据业务需要缓存一些数据字典、枚举变量和频繁使用数据等减少数据库访问次数,提升数据库处理能力。

  web集群架构图

  如上图web集群架构图所示:

  用nginx负载多台应用服务器;使用redid/memcached做业务缓存;再加上数据库集群;组成了经典的web高并发集群架构。

  代码中的业务逻辑:大家可以 参考阿里巴巴java开发手册 中的开发规范来做就好了,总代来说少创建线程、少创建对象、少加锁、防止死锁、少创建线程、注意内存回收等策略,来提升代码性能。开发中可以采用前后端分离的架构模式,动静分离、松耦合等提升前后端处理能力。4)如何使用微服务架构提升高并发逻辑?

  先看一下非常火的这张微服务架构图:

  微服务架构图

  微服务架构图主要包含11大核心组件,分别是:

  核心支撑组件

  服务网关Zuul服务注册发现Eureka+Ribbon服务配置中心Apollo认证授权中心Spring Security OAuth服务框架Spring MVC/Boot监控反馈组件数据总线Kafka

  日志监控ELK调用链监控CATMetrics监控KairosDB健康检查和告警ZMon限流熔断和流聚合Hystrix/Turbine

  总结出来上述几点解决高并发服务器逻辑处理瓶颈外,还要考虑网络因素,例如采用CDN加速,将不同地点的请求分发到不同的服务集群上,避免网络对速度的影响!

  总之,根据自身实际业务在合理范围内尽可能的拆分,拆分以后同类服务可以通过水平扩展达到整体的高性能高并发,同时将越脆弱的资源放置在链路的越末端,访问的时候尽量将访问链接缩短,降低每次访问的资源消耗。服务之间直接restful模型使用http调用,或者redis,kafka类的消息中间件通信。单个服务直接使用nginx做负载集群,同时前后端分离,数据库分库分表等一整套分布式服务系统!

  前后端分离

  学习SpringBoot2.x的也可以关注之前发的内容哦~之后会不断更新

  

***本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

我要评论

网友评论


评论时间:2024-03-16 00:27:54

7.经常对服务器端个人如何使用云主机 进行扫描8.保证网络畅通租服务器贵吗 描8.保证网络畅通

最新文章

 2023-12-25 22:44:35   admin

活动发布区版规

 2023-05-27 22:03:52   御风而行

容器、无服务器、虚拟机:安全性差...

 2023-05-27 19:08:41   小绵羊0123

科技巨头布局云端 服务器 网络硬...

 2023-05-27 18:17:46   姐姐的跟屁虫

钉钉因系统访问流量激增,宕机1小...

热门阅读

 2022-07-23 00:34:02   freeatom

常见ftp命令 FTP命令使用详...

 2022-07-21 02:17:02   ares

双硬盘组建Raid0磁盘阵列图文...

 2022-07-20 06:17:02   mankeung123

用友软件客户端连接不上服务器的解...

 2022-07-23 00:51:02   antonfxb

WebService实例

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-20 18:51:02   nightstone

如何使用Charles抓取Web...

随机文章

 2021-12-25 05:38:01   青青子w

石家庄服务器托管并不局限于石家庄...

 2022-02-22 05:38:02   myhomebj

Windows 2003服务器配...

 2022-07-19 02:34:02   12222211

程序员必备开发工具,使工作事半功...

 2022-07-19 09:51:02   99225

Squid代理服务器原理

 2022-07-19 10:51:03   zhg

网站运营常见问题

热评文章

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-20 01:00:05   激动的舌头

Linux视频教程:用户管理命令...

 2022-07-21 20:51:02   jessica-an

创建本地FTP站点

 2022-02-07 05:38:03   jasonkidd

WEB服务器配置详解

 2022-07-20 04:51:02   wolfssss

ACL权限-默认与递归(4)

 2022-07-22 15:00:05   淡水珊瑚

Linux下 Samba Ser...
全球云服务器
Catfish(鲶鱼) Blog V 4.7.3