什么是高并发系统?

1.1 什么是高并发?

  • 高并发(High Concurrency),通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点,有很多的请求同时访问同一个接口。
  • 高并发意味着大流量,需要运用技术手段去抵抗这种大流量的冲击,以达到系统能平稳处理流量且系统自身依然运行良好的目的。
  • 高并发是一种系统在运行过程中“短时间内遭遇大流量冲击”的情况。如果没有处理好,则很有可能造成系统吞吐率下降,响应变慢,从而影响用户体验,甚至可能造成系统彻底不可对外服务的情况发生。所以需要优化系统(包括硬件、网络、应用、数据库等)来达到高并发的要求。

1.2 高并发系统有哪些关键指标?

1. 响应时间(Response Time):从第一次发出请求到收到系统完整响应数据数据所需时间。直接反映系统响应的快慢。

2. 吞吐量(Throughput):单位时间内系统所处理的用户请求数。直接反映系统的负载能力。

  • 采用“请求数/秒”方式的吞吐量,瓶颈主要来源于应用服务器和应用本身
  • 采用“字节数/秒”方式的吞吐量,瓶颈主要来源于网络基础设施、服务器架构和服务器约束等

3. 每秒请求数(QPS):服务器在一秒内共处理了多少个请求,主要用于表示“读”请求。

4. 每秒事务数(TPS):即服务器每秒处理的事务数。(一个事务包括“客户机向服务器发送请求 + 服务器响应”的过程)

5. 访问量(PV):用户每对网站中的1个网页访问1次被记录1次

6. 独立访客(UV):访问某个站点或点击某个链接的不同IP地址数。(即在同一天内,UV只记录第一次进入网站的具有独立IP地址的访问者,在同一天内访问者再次访问该网站则不计数。)

1.3 对比单体系统、分布式系统和微服务系统

1.3.1 单体系统之痛:

单体系统即一个应用程序,所有的业务代码都在这一个应用程序中,所有的表也都在一个数据库中,所涉及的相关文件都在同一个服务器上。

单体系统面临的问题:

  • 需要频繁地合并代码分支,影响项目的迭代进度
  • 多人协作耦合度高,测试效率低下
  • 开发节奏混乱,代码冲突频繁
  • 代码模块层次越来越复杂,业务边界变得不清晰
  • 项目越来越大,技术架构升级变得困难

单体系统一般采用三层架构

(1)用户展示层:负责用户端的展现和体验

(2)业务层:负责业务的所有逻辑操作

(3)数据访问层:负责操作数据库,如读写数据库等

单体分层架构的弊端

  • 从水平方向来看,的确降低了业务的深度复杂性。
  • 从垂直方向来看,单体的业务边界不够清晰,因为在各层之间会进行网状的调用,比如,用户展现层的某个模块会调用业务层的多个模块。(甚至所有模块);业务层的模块同样会调用数据访问层的多个模块等。

 1.3.2 高并发系统之分布式架构

分布式架构是指,将相同或者相关的应用放在多台计算机上运行,以达到分布式计算机的目的。(将一个系统拆分为多个独立的应用,然后它们相互协作,通过对方提供的API进行交互,组成一个整体,共同完成任务)

分布式架构局限性:

  • 开发者在开发应用时,需要考虑当前应用的API模块。因为如果业务需要更改了相关底层逻辑,则这种修改会影响API模块,所以需要对API模块也进行对应逻辑的修改,否则已经在调用的服务会出现调用错误,影响线上产品。
  • 外部的服务需要依据自己的业务向服务提供方提出相应的小需求。服务提供方可能只是改动了API模块,但是从整体来说则需要测试并重新部署一遍,影响服务的稳定性。

 1.3.3 高并发系统之微服务架构

微服务是一种流行的架构设计风格:

  • 微服务是由单一应用构成的小型服务,拥有自己的进程与轻量化处理。
  • 微服务依据业务功能设计,以全自动的方式部署,与其他微服务使用HTTP API 进行通信。
  • 微服务会使用最小规模的集中管理技术,例如Docker
  • 微服务可以使用不同的编程语言和数据库。

微服务系统就是将复杂的单体系统中的模块按照某种规则进行拆分,这些被拆分出来的模块被独立部署在相对较小的服务器集群上。独立部署的模块彼此之间使用远程调用的方式来完成整个业务的处理。这些被独立部署的模块就是微服务,而这样的应用架构就是微服务架构。

微服务架构特征:

(1)通过服务实现组件化

(2)围绕业务能力来组织开发团队

(3)去中心化管理

(4)去中心化数据存储

(5)基础设施自动化

(6)充分考虑故障

微服务架构的问题:

(1)增加了复杂度

(2)服务间的通信会变得复杂

(3)在落地微服务时,微服务边界的划分增加了实现的复杂度

(4)保持数据一致性非常复杂

(5)对运维团队和开发团队都提出了更高的要求

(6)开发流程复杂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/276894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题--- 解数独

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主…

【Vue2+3入门到实战】(10)Vue基础之一文掌握 组件通信 详细示例(组件通信语法、父传子 、 子传父、非父子通信)

这里写自定义目录标题 一、学习目标1.组件通信2.综合案例:小黑记事本(组件版) 二、组件通信1.什么是组件通信?2.组件之间如何通信3.组件关系分类4.通信解决方案5.父子通信流程6.父向子通信代码示例7.子向父通信代码示例8.总结 三、…

易趋产品升级(EasyTrack 11_V1.3) | 集成飞书、WPS、个性化设置,增强团队协作和用户体验

企业在项目管理过程中,经常会遇到项目信息同步不及时、沟通障碍以及管理软件使用不便捷等难题,导致团队协作效率低下。这种情况下,如果使用了多个办公软件(如:钉钉、企业微信、项目管理软件等),…

AIGC盛行,带你轻松调用开发

文章目录 前言一、📖AIGC简介二、📣开通体验开通模型获取API-KEY 三、📝基于java实现调用1.设置API-KEY2.体验大语言模型多轮对话演示补充流式输出 3.体验通义千问VL使用官方提供照片本地文件多轮对话流式输出 总结 前言 本篇文章基于java和…

IPv4归属地信息查询方法与应用

IPv4地址归属地信息查询是网络管理和安全领域的关键工具。本文将介绍IPv4地址的概念,探讨IPv4归属地信息的重要性,并详细介绍几种查询IPv4归属地信息的方法以及其应用场景。 第一部分:IPv4地址简介 1.1 什么是IPv4地址 IPv4(In…

CGAL的形状规则化

规则化之前(红色)和之后(绿色)的闭合轮廓。 1、介绍 这个 CGAL包能够规范2D中的一组线段和开闭轮廓以及3D中的一组平面,以便所有输入对象根据用户指定的条件进行旋转和对齐。此外,我们提供了一个全局规范框…

旧衣回收小程序搭建,稳占回收市场

近几年我国大众的消费水平不断提升,闲置物品也相应增加了不少,尤其是闲置衣服,为了减少资源浪费,旧衣服回收回收行业受到了大众的关注。 目前我国旧衣服回收行业的市场规模达到了300多亿元,旧衣回收行业的商业价值非常…

跨模态检索论文阅读:Plug-and-Play Regulators for Image-Text Matching用于图像文本匹配的即插即用调节器

Plug-and-Play Regulators for Image-Text Matching用于图像文本匹配的即插即用调节器 利用细粒度的对应关系和视觉语义比对在图像-文本匹配中显示出巨大的潜力。通常,最近的方法首先使用跨模态注意力单元来捕捉潜在的区域-单词交互,然后整合所有比对以获…

椭圆中点算法

原理 椭圆的扫描转换与圆的扫描转换有相似之处,但也有不同,主要区别是椭圆弧上存在改变主位移方向的临界点。瞬时针绘制四分椭圆弧的中点算法,根据对称性可以绘制完整的椭圆。 四分椭圆弧 中心在原点,长半轴为 a a a、短半轴为…

diffusion model (十) anydoor技术小结

paperAnyDoor: Zero-shot Object-level Image Customizationcodehttps://github.com/damo-vilab/AnyDoorOrg香港大学,Alibaba Groupdate2023-07 1 Motivation 过去我们用dreambooth,LORA,textual inversion等方法做定制目标生成。但这个方法…

liunx系统突然不能启动jar

启动命令 nohup java -jar /date/gd_ly/jar/mssda-platform-backend-0.0.1-SNAPSHOT.jar -Dspring.config.location/date/gd_ly/jar/application-dev.yml 报错信息 Error: A JNI error has occurred, please check your installation and try again Exception in thread &q…

2022年全球软件质量效能大会(QECon北京站2022)-核心PPT资料下载

一、峰会简介 当前,新一轮科技革命和产业变革正在重塑全球经济格局,以云计算为代表的新一代信息技术创新活跃,与实体经济深度融合,推动泛在连接、数据驱动、智能引领的数字经济新形式孕育而生。 新兴技术的出现给测试乃至整个软…

CSS 纵向扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…

HCIA-Datacom题库(自己整理分类的)——OSPF协议判断

1.路由表中某条路由信息的Proto为OSPF则此路由的优先级一定为10。√ 2.如果网络管理员没有配置骨干区域,则路由器会自动创建骨干区域&#xff1f; 路由表中某条路由信息的Proto为OSPF&#xff0c;则此路由的优先级一定为10。 当两台OSPF路由器形成2-WAY邻居关系时&#xff0…

Arduino串口发送接收和串口中断事件

目录 一、硬件介绍 1、控制器 2、TTL转USB串口 二、软件程序 1、单片机发送字符串 &#xff08;1&#xff09;每个串口对应的类名称介绍 &#xff08;2&#xff09;发送功能 &#xff08;3&#xff09;代码 &#xff08;4&#xff09;测试 2、单片机接收字符串 &…

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)

训练yolov5模型&#xff08;本地&#xff09; 训练文件 train.py训练如下图 一些参数的设置weights:对于weight参数&#xff0c;可以往Default参数中填入的参数有 cfg&#xff1a;&#xff08;缩写&#xff09;cfg参数可以选择的网络模型 data对于data hyp 超参数epochs 训练多…

全新ui自动化测试框架教学——Cypress

前言 在现阶段自动化测试领域大规模普及的是selenium及appium等常规自动化测试工具&#xff0c;但在其中会有遇到很多影响因素导致测试结果不理想和不准确的情况发生。在经过Darren洋对自动化测试工具调研后&#xff0c;发现了Cypress这一款针对端到端的自动化测试工具&#xf…

【Python基础】字符串

文章目录 [toc]什么是字符串索引示例索引越界 切片语法示例 字符串方法find()方法rfind()方法count()方法replace()方法 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python基础 什么是字符串 如下定义的变量url存储的是字符串类型的值 url www.baidu.com print(url)u…

【银行测试】金融银行-理财项目面试/分析总结(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 银行理财相关的项…

在Adobe Acrobat上如何做PDF文档签名

Adobe Acrobat如何做PDF文档签名&#xff1f;PDF文档签名是指对PDF文档进行基于证书的数字签名&#xff0c;类似于传统的手写签名&#xff0c;可标识签名文档的人员。与手写签名不同&#xff0c;数字签名难以伪造&#xff0c;因为其包含签名者唯一的加密信息。为PDF文档进行基于…