企业级应用高性能可扩展架构设计
前言
马上又要618了,每年到了这个时候,商家就开始促销,价格低会吸引来超多用户,对系统来说就是更多的流量,技术上如何确保网站稳定运行,且不被超卖,同时还要让用户有个良好的购物体验。
12306网站在最开始的时候,经常出现系统瘫痪,而如今也已经能够支持同时上千万人同时抢票且不受影响。
这些都离不开高并发技术,以及根据业务进行架构设计,应对流量的冲击。
今天我们一起来谈谈这些与架构设计有关的技术
文章目录
- 前言
- 一. 高并发
- 1.1 什么是高并发
- 1.2 高并发有什么关键指标
- 二. 高可用
- 2.1 高可用的衡量指标
- 2.2 服务器的可用性数字化的衡量指标
- 总结
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. 高并发
1.1 什么是高并发
高并发,通常是指通过设计保证系统能够同时处理很多请求,也就是在同一个时间点,有很多请求同时访问同一个接口。
高并发是一种系统在运行过程中遭受的“短时间内大流量冲击” 的情况,如果处理不好,就很容易造成系统吞吐量下降,响应变慢,从而影响用户体验,甚至可能造成系统无法提供服务的情况。
这时候我们通常需要优化系统,硬件,网络,应用,数据库等来达到高并发要求。
1.2 高并发有什么关键指标
-
响应时间
响应时间是衡量系统性能的重要指标之一,它表示系统从接收请求到向用户返回响应所需要的时间。
响应时间是用户感知系统性能的关键因素之一,因为它直接影响到用户满意度和用户转化率。当一个用户发出请求时,如果系统不能在很短的时间内提供响应,则用户可能会感到不耐烦,并可能在等待时间过长后离开网站、应用或服务
从用户角度来说,响应时间越长,用户体验感越差,响应时间越短,用户体验越好,留存率也越好。
从系统角度来说: 响应时间决定着系统的性能,响应时间越短,系统性能越高,也就能更好的处理业务。
- 吞吐量
吞吐量是单位时间内系统所处理的用户请求数。
对互联网应用来说,吞吐量能够反映系统的负载能力。
公式1: 吞吐量=并发数/平均响应时间
公式2: 吞吐量=请求总数/总时长
- 每秒钟请求数(QPS)
QPS指的是服务器在一秒内共处理了多少个请求,主要用来表示读的请求。
依据二八原则,80%的流量是在20%的时间里产生的,比如现在有 5000000 个请求,预估白天的QPS=(5000000 0.8)/ 1260600.2 =462
然后分析业务得到最高QPS可能是平均的两倍,当前的系统峰值就是462*2=924
预估出QPS后,再根据峰值 QPS/单台机器可承受的qps, 算出需要多少台服务器。
机器数== 峰值QPS/ 单台机器最高可承受的QPS
- 每秒事务数TPS
举例来说,如果你在银行办理转账业务,每一次的转账都是一个事务,那么银行的TPS就是指每秒内可以处理多少笔转账业务。
TPS通常用于评估系统的性能和负载能力,同样适用于高负载场景下的互联网服务提供商。例如,电商平台可以通过监控TPS来判断系统的稳定性和用户满意度。
值得注意的是,虽然QPS和TPS都是用来衡量系统的吞吐能力,但由于事务通常比请求需要处理更多数据,并且需要更长的处理时间,因此,在大多数情况下,TPS 的值要比 QPS 小。
TPS主要包含以下三个过程:
- 客户端请求服务器端
- 在服务器端内部进行业务逻辑处理
- 服务器端响应客户端。
当一个用户访问一个完整页面时,请求+响应的整个过程就是一个TPS。
这一次完整的请求可能产生多次对服务器的请求,这些请求计入QPS
假设访问一个页面时候会请求服务器3次,这样的一次访问会产生1个TPS和3个QPS
-
访问量PV
pv是页面浏览量,用户每对网站中的一个网页访问1次均被记录1次,用户对同一个页面的多次访问被累计记录,PV是评价网站流量的最常用指标。 -
独立访客 UV
独立访客数记录标准一般为"一天",即一天内如果某访客从同一个IP地址来访问某网站n次的话,访问次数计作n, 独立访客数则计作1。
同一天内同一个IP多次访问同一个网站只记为1个。
二. 高可用
高可用性是指一个系统经过专门的设计后具备的减少停工时间并保持提供服务的高度可用性。该特性是衡量系统提供服务能力的一个特征,也是对系统进行设计时需要考虑的一个重要因素。
对于分布式数据库系统而言,“三高一易”(高可用、高可靠、高性能、易用性)几乎囊括了所有重要的特性。而随着互联网需求和技术的发展,高可用性被提到一个新的高度。CAP理论认为,A(可用性)应当被更加重视
2.1 高可用的衡量指标
- 可用性:系统必须能够在任何时候都处于正常运行状态,即便是在故障发生的情况下也应如此。
- 可靠性:系统必须能够保证每个用户请求都能够得到可靠的响应,而不是出现错误或系统崩溃等异常情况。
- 可恢复性:系统必须能够快速恢复到正常运行状态,以最小化业务中断和数据损失。
- 可扩展性:系统必须能够快速、有效地适应业务增长和变化,以满足不断变化的需求。
- 负载均衡:系统必须具备负载均衡的能力,能够平衡工作负载,充分利用所有可用资源,确保高性能和稳定性。
- 安全性:系统必须能够通过强大的身份验证、访问控制和数据加密等多重安全措施,保护数据和应用程序免受恶意攻击和数据泄露。
- 性能:系统必须能够处理和响应大量的用户请求,保持高性能和低延迟。
2.2 服务器的可用性数字化的衡量指标
- SLA(Service Level Agreement):服务等级协议是指服务提供商与客户之间达成的关于服务水平的约定,通常包括服务的可用性、响应时间、故障修复时间等。
- SLO(service level objective)服务等级目标,指的是设计可用性,其意思即为设计该产品时期望达到的可用性目标。
- MTBF(Mean Time Between Failures):平均故障间隔时间,是指系统正常工作期间,平均多长时间才会发生一次故障。
- MTTR(Mean Time To Repair):平均修复时间,是指当系统出现故障时,平均需要多长时间才能进行修复。
- MTTF(Mean Time To Failure):平均失效时间,是指系统平均能够稳定运行的时间,即从系统启动或上次故障发生以来到下一次故障发生之间的时间。
- Uptime:系统正常运行时间的百分比,可以通过系统日志或监控工具来计算。
- Response Time:服务响应时间,是指从用户发出请求到系统返回响应之间所需的时间。该指标是用户感受服务性能的重要指标,对于一些需要低延迟响应的应用程序而言尤为重要。
- TPS(Transactions Per Second):每秒事务处理数,是指系统在每秒钟内能够处理的事务数量。该指标通常被用于衡量系统的处理能力和负载能力。
上述指标可以帮助服务提供商评估其服务的可用性和性能,便于提高服务质量和满足客户需求。
我们平常经常看到互联网公司喊口号,我们今年一定要做到3个9、4个9,即99.9%、99.99%,甚至还有5个9,即99.999%。 这些就是服务器的可用性数字化的衡量指标的SLA 服务等级协议。
这么多9是怎么计算的呢?
全年拿365天做计算吧,看看几个9要停机多久时间做能才能达到!
1年 = 365天 = 8760小时
99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时
99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟
99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟
从以上看来,全年停机5.26分钟才能做到99.999%,即5个9。依此类推,要达到6个9及更多9,可以说非常难了。
总结
本文主要介绍了高性能架构的理论基础,后续再讲解架构的设计案例。
💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~
相关文章:
企业级应用高性能可扩展架构设计
前言 马上又要618了,每年到了这个时候,商家就开始促销,价格低会吸引来超多用户,对系统来说就是更多的流量,技术上如何确保网站稳定运行,且不被超卖,同时还要让用户有个良好的购物体验。 12306…...

【安全架构】
概念 安全是产品的属性,安全的目标是保障产品里信息资产的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简记为CIA。 保密性: 保障信息资产不被未…...

RabbitMq-高级
参考:https://blog.csdn.net/dingd1234/article/details/125032383 1 TTL TTL QUEUE 声明args TTL MESSAGE postmessage中设置 区别:过期消息会直接删除消息,过期队列若配置死信队列会移到死信队列 ps:同时配置两个已小的为准 2…...

iOS App的打包和上架流程
转载:iOS App的打包和上架流程 - 掘金 1. 创建账号 苹果开发者账号几种开发者账号类型 个人开发者账号 费用:99 美元/年(688.00元)协作人数:仅限开发者自己不需要填写公司的邓百氏编码( D-U-N-S Number…...
Net6中遇到的一个很奇葩的问题
先来看一段代码,是控制台应用程序 internal class Program{static void Main(string[] args){Test().Wait();}private static async Task Test(){await Task.Run(() >{Debug.WriteLine("线程内输出");});Debug.WriteLine("线程外输出");}}执…...
2940. 花坛的最小改变次数
Powered by:NEFU AB-IN Link 文章目录 2940. 花坛的最小改变次数题意思路代码 2940. 花坛的最小改变次数 题意 略 思路 首先需要区间查询gcd,想到st表 其次思路,固定左端点,二分右端点,找gcd与区间长度相等的右端点,个…...
安装源代码 QT 4.8.7
在centos7.9.2009 (Core)操作系统上,安装qt 4.8.7 查看centos版本:cat /etc/centos-release 安装g:sudo yum install gcc gcc-c g版本查看(gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)):g -v 先安装…...

PINN学习与实验之拟合sin(x)
首先给出数学上的知识。 1. 2. 3. 其次给出PINN最基础的理解与应用说明。 1.PINN中的MLP多层感知机的作用? 答:目的是用来拟合出我们需要的那个 常微分方程,即函数逼近器。 2.PINN中物理信息的作用? 答:用于约束MLP反向…...

Java中进制转换的两种方法你知道吗?
目录 十进制转其他进制 其他进制转十进制 实战: A进制转B进制 关于大数运算可以参考躲不掉的高精度计算,蓝桥杯必考_高精度算法在哪些比赛考_无忧#的博客-CSDN博客 十进制转其他进制 使用 Integer.toString(int n,int radix) 方法,该方法…...

Qemu搭建ARM Vexpress开发环境
Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡&#x…...

JMM如何实现volatile写/读的内存语义
内存屏障类型表 StoreLoad Barriers是一个“全能型”的屏障,它同时具有其他3个屏障的效果。现代的多处理器大多支持该屏障(其他类型的屏障不一定被所有处理器支持)。执行该屏障开销会很昂贵,因为当前处理器通常要把写缓冲区中的数…...

Smali的使用技巧:快速定位Android应用程序中的关键代码
简述 Smali是一种Android应用程序的Dalvik虚拟机指令集汇编语言,用于编写和修改应用程序的DEX文件。通过编写和修改Smali代码,可以实现对Android应用程序的定制化和逆向分析。Smali语言类似于汇编语言,直接操作Dalvik虚拟机指令集。 Smali代…...

04_两种常见的网页反爬措施及应对方法
一、封禁IP地址反爬 1、应对思路: 理解这种反爬方法的含义:当我们用自己电脑的ip地址短时间,高频率访问某个具有此类反爬设置的网站,这种网站就会把我们的ip地址封禁,一般都是封24小时或者其他时间。解决方案:通过代理ip访问,这种方式只不过就是让你有了重新访问网页的…...
安装docker环境,并制作docker镜像
docker环境安装 进入linux虚机后,安装docker环境,制作docker镜像并运行,进入运行中的容器,查看挂载的日志或报告 1.安装docker sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2.使用docker仓库安装…...

MySQL数据库 – node使用
1 MySQL查询对象 2 MySQL查询数组 3 mysql2库介绍使用 4 mysql2预处理语句 5 mysql2连接池使用 6 mysql2的Promi 这里仅说明如何使用服务器连接数据库并进行操作。 预处理语句就是可以输入变量的语句(表现形式是有符号:?)。需…...
JAVA使用HTTP代码示例模板
以下是一个使用Java发送HTTP请求的示例代码: java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpExample { public static void main(String[] args) { try…...

elementui tree 支持虚拟滚动和treeLine (下)
由于我之前没有发布过npm 包,这里还得现学一下。 参考资料: 链接: 如何写一个vue组件发布到npm,包教包会,保姆级教学链接: vue组件发布npm最佳实践 按照上面的步骤,我通过 vue-sfc-rollup 生成了项目,…...
富人父母都教给孩子什么样的财富思维?
1.认清金钱的价值和作用,不要否认或忽视它对生活的影响。 2.提高社交能力,学会与不同的人沟通和合作,扩大人脉和资源。 3.理性消费,让钱在流动中产生效益,而不是囤积或浪费。 4.释放自己的欲望,追求自己想要…...

国内比较火的报表工具测评——Smartbi电子表格软件和Finereport
最近在学习BI软件,因为最近工作中需要开发报表,因此选用了国内市场比较热门的报表工具——Finereport和Spreadsheet进行学习。 BI软件经常会定期发布新的版本,增加新的功能模块,或者对现有功能进行增强,提升运行效率。…...

变电所运维云平台在电力系统中的应用
安科瑞虞佳豪 变电所运维云平台可以看做是电力监控系统的网络应用延伸,变电所运维云平台通过互联网,电力运维人员通过手机可以随时随地了解工厂配电系统的运行情况,做到无人值守或者少人值守,同时可以监测用能状况、漏电、线缆异…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...