什么是高并发系统?

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)开发流程复杂

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用通俗易懂的方式讲解大模型:Prompt 提示词在开发中的使用

OpenAI 的 ChatGPT 是一种领先的人工智能模型,它以其出色的语言理解和生成能力,为我们提供了一种全新的与机器交流的方式。但不是每个问题都可以得到令人满意的答案,如果想得到你所要的回答就要构建好你的提示词 Prompt。本文将探讨 Prompt 提…

yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理

综述 为了解决旋转目标检测问题,研究者们提出了多种方法和算法。以下是一些常见的旋转目标检测方法: 基于滑动窗口的方法:在图像上以不同的尺度和角度滑动窗口,通过分类器判断窗口中是否存在目标。这种方法简单直观,…

Flutter 三点二:Dart 异步 async 和 await

async 和 await Future 链式调用 更清晰异步操作依赖关系比较复杂 可使用async awaitasync await 调用逻辑更清晰async await 异常处理 try{}catch(){} 即可async 修饰的方法 总是返回Future对象 不会阻塞主线程await 关键字只有在async修饰的方法内才有效都是把事件交给 Even…

数据可视化能为我们带来哪些好处?

在信息爆炸的时代,数据量呈指数级增长,企业和个人都面临着处理大量信息的挑战。在这个背景下,数据可视化崭露头角,成为解决复杂数据呈现和理解难题的得力工具。那么,数据可视化究竟能为我们带来哪些好处呢?…

SeaTunnel流处理同步MySQL数据至ClickHouse

ClickHouse是一种OLAP类型的列式数据库管理系统,ClickHouse完美的实现了OLAP和列式数据库的优势,因此在大数据量的分析处理应用中ClickHouse表现很优秀。 SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。用户只需要配置…

YOLOv5改进 | 2023注意力篇 | BiFormer双层路由注意力机制(Bi-level Routing Attention)

一、本文介绍 BiFormer是一种结合了Bi-level Routing Attention的视觉Transformer模型,BiFormer模型的核心思想是引入了双层路由注意力机制。在BiFormer中,每个图像块都与一个位置路由器相关联。这些位置路由器根据特定的规则将图像块分配给上层和下层路…

网站提示“不安全”怎么解决

在互联网中,安全问题至关重要。访问某些网站时,可能会遇到“不安全”警告,通常是由于缺乏SSL证书。SSL证书是数字证书,用于确保互联网通信的安全和保密。 “不安全”问题通常源于缺少SSL证书。SSL通过加密通信,防止第三…

力扣labuladong——一刷day80

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣323.无向图中连通分量的数目二、力扣130. 被围绕的区域 前言 并查集(Union-Find)算法是一个专门针对「动态连通性」的算法&…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一:修改启动脚本方法二:设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后,再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

学习使用wps将ppt的页面保存为图片的方法

学习使用wps将ppt的页面保存为图片的方法 方案 方案 1、打开ppt,点击文件,另存为,选择文件类型为图片格式,jpg或者png,如下图: 2、点击每张幻灯片

MacOS安装JDK8

下载 oracle官网下载。 oracle官网 镜像下载。 华为:https://repo.huaweicloud.com/java/injdk:https://www.injdk.cn 安装 下载完成后双击pkg,按提示流程安装。 安装完成后打开终端窗口,执行命令查看版本: java -…

MySql 性能优化神器之 explain 详解

目录 一. 前言 二. explain 详解 2.1. 概念 2.2. 数据准备 2.3. id 2.3.1. id 相同,执行顺序由上至下 2.3.2. id 不同,数字越大优先级越高 2.3.3. id 存在相同的和不同的 2.4. select_type 2.5. table 2.6. partitions 2.7. type 2.7.1. sy…

【Python基础】字符串

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

【Unity入门】RequireComponent的使用

RequireComponent的作用 RequireComponent 属性自动将所需的组件添加为依赖项。 当某个脚本必须依赖其他脚本或者组件共同使用时,为了避免人为添加过程的操作失误,可以在代码中使用RequireComponent,它的作用就是添加该脚本时,会…

[玩转AIGC]LLaMA2之如何跑llama2.c的chat模式

前言:之前我们关于llama2的相关内容主要停留在gc层面,没介绍chat模式,本文将简单介绍下llama2.c的chat模式如何跑起来。训练就算了,没卡训练不起来的,但是用CPU来对别人训练好的模型进行推理还是绰绰有余的&#xff0c…

Dockerfile: WORKDIR vs VOLUME

WORKDIR WORKDIR指令为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。 如果WORKDIR不存在,它将被创建,即使它没有在任何后续Dockerfile指令中使用。 语法 : WORKDIR dirpath WORKDIR指令可以在Dockerfile中多次使用。如果提供了…

c++11 动态内存管理-提供关于分配器类型的信息(std::allocator_traits)(四)

提供关于分配器类型的信息 std::allocator_traits template< class Alloc > struct allocator_traits; (C11 起) allocator_traits 类模板提供访问分配器 (Allocator) 各种属性的标准化方式。标准容器和其他标准库组件通过此模板访问分配器&#xff0c;这使得能以任何类…

无监督学习(上)

我们实际用到的项目大都是有监督的&#xff0c;而人工智能未来的一大难点将会是无监督学习。在前面说过的降维算法&#xff0c;大部分都是无监督&#xff0c;除了LDA。 无监督算法有聚类&#xff0c;密度估计&#xff0c;常常用在做分类或者异常检测上。 一.聚类 聚类就是识…

机器学习分类

1. 监督学习 监督学习指的是人们给机器一大堆标记好的数据&#xff0c;比如&#xff1a; 一大堆照片&#xff0c;标记出哪些是猫的照片&#xff0c;哪些是狗的照片 让机器自己学习归纳出算法或模型 使用该算法或模型判断出其他没有标记的照片是否是猫或狗 上述流程如下图所…

docker 部署 个人网页版 wps office

先声明一下&#xff0c;这个是用的linux桌面&#xff0c;然后安装了一个wps软件 安装好之后&#xff0c;通过我们自己的浏览器进行操作。。。。。 我只是试了一下&#xff0c;目前发现只能一个人用&#xff0c;里面还有谷歌浏览器&#xff0c;就是一个远程linux桌面 docker …