您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

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

时间:2020-04-18 10:08:09  来源:  作者:

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

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

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

那么如何衡量高并发呢?

高并发衡量指标

  • 响应时间:系统对请求做出响应的时间,即一个http请求返回所用的时间;
  • 吞吐量:单位时间内处理的请求数量;
  • QPS(TPS):每秒可以处理的请求数或事务数;
  • 并发用户数:同时承载正常使用系统功能的用户数量,即多少人同时使用,系统还能正常运行的用户数量;

根据上面衡量指标可以看到,提高并发能力必须解决如下几个问题:

  1. 如何提高并发连接数?
  2. 那么多的连接数怎么进行业务处理?
  3. 应用服务器的处理水平又该怎么提高?
  4. 如何使用微服务架构提升高并发逻辑?

别着急,这么多问题我们一个一个来分析解决!

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

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

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

单一网络连接模型

有道是业务写的再好不如一台高性能服务器,这个锅不一定要开发人员背的哦!!!服务器的连接入口就那么大(比如Tomcat只有几千的连接数),那么处理的能力也只局限于几千。

怎么解决呢?选用合适的网络IO模型或者selector,通过使用一个线程轮询或者事件触发的方式,能支持几万甚至更多的连接数,再配合上Nginx做负载就更完美了。

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

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

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

nginx负载

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

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

  1. 数据库压力:数据库是支撑产品业务的核心模块,系统的高并发的主要压力也是来源于数据库。处理方式有如下这些:

数据库本身:建立有效索引、读写分离、双主互备、分库分表(sharding-jdbc等实现)等策略,提高数据库处理能力,减少压力!

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

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

web集群架构图

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

  • 用nginx负载多台应用服务器;
  • 使用redid/memcached做业务缓存;
  • 再加上数据库集群;

组成了经典的web高并发集群架构。

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

4)如何使用微服务架构提升高并发逻辑?

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

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

微服务架构图

主要包含11大核心组件,分别是:

核心支撑组件

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

数据总线Kafka

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

总结

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

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

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

前后端分离



Tags:高并发服务器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、4大具有代表性的并发模型及其优缺点4大具有代表性的并发模型:Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,select模型和poll模型、Epoll模型。...【详细内容】
2020-06-03  Tags: 高并发服务器  点击:(48)  评论:(0)  加入收藏
在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:单进程,单线程...【详细内容】
2020-06-02  Tags: 高并发服务器  点击:(49)  评论:(0)  加入收藏
每到节假日和过年,需要外出通行的人几乎都会遇到一个问题:抢火车票!当全国上亿人都在固定的时间段抢票,服务器动辄就要承受上百万级并发的情况时,你就会明白,一个支持高并发的服务...【详细内容】
2020-05-10  Tags: 高并发服务器  点击:(63)  评论:(0)  加入收藏
高并发服务器逻辑处理瓶颈,如何解决?首先我们先了解什么是并发!并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上...【详细内容】
2020-04-18  Tags: 高并发服务器  点击:(53)  评论:(0)  加入收藏
一、传统并发模型的缺点基于线程的并发 特点: 每任务一线程 直线式的编程 使用资源昂高, context切换代价高,竞争锁昂贵 太多线程可能导致吞吐量下降,响应时间暴涨。基于事件的...【详细内容】
2019-11-20  Tags: 高并发服务器  点击:(75)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条