架构思维:高性能架构_01基础概念

embedded/2025/3/16 6:31:21/

文章目录

  • 概述
  • 基础概念
    • 性能指标
    • 利特尔法则(O = T × L)
    • 系统优化策略
      • 1. 降低耗时(L↓)
      • 2. 增加容量(O↑)
      • 3. 增加时延(L↑)
    • 场景化指标选择
      • 响应时间优先
      • 吞吐量/容量优先
      • 平衡策略

在这里插入图片描述


概述

一个高性能系统的架构需要在客户端请求、网络静态缓存(如CDN)、网络接入、业务逻辑、数据缓存以及数据存储方面进行优化。接下来我们主要从这些方面来介绍如何实现一个高性能的架构。不过在进入具体的优化内容之前,我们需要先了解一下系统的高性能指标。

基础概念

性能指标

  • 响应时间(RT):请求从发起到接收响应的总耗时,包括网络传输、排队和执行时间。

    响应时间也称为响应时延(response latency,RT),是指从客户端发送一个请求到客户端接收到服务器端返回的响应结果所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间3部分时间组成。

  • 并发数(O):系统同时处理的请求数,反映系统容量。

    并发数:并发数也叫并发度,是指系统同时处理的请求数、事务数或者用户数等,不同场景下的统计方式有些许差别。

  • 吞吐量(T):单位时间处理的请求量(如QPS、TPS)

    吞吐量:吞吐量(throughput)也可以理解为吞吐率,即每秒处理的信息值,例如每秒事务数(transactions per second,TPS)、每秒请求数(HTTP requests per second,RPS)、每秒查询数(queries per second,QPS)等。


利特尔法则(O = T × L)

揭示了并发数(O)、吞吐量(T)和响应时间(L)的动态关系。

  • 初始阶段:吞吐量提升可增加并发数(O↑= T↑L)。

  • 饱和阶段:吞吐量达上限时,响应时间增加,导致请求堆积(O↑= T×L↑),需通过限流或扩容避免系统崩溃。

利特尔法则(Little’s law)由麻省理工学院的John Little教授提出并证明,它是基于排队论(queuing theory)发展而来的。

利特尔法则的内容是:在一个稳定的系统中,长时间观察到的平均顾客数量L等于长时间观察到的有效到达速率λ与平均每个顾客在系统中花费的时间W的乘积,即L=λW
将利特尔法则应用到3个性能指标中:O =TL
其中,

  • O代表容量,即系统同时容纳的请求或者数量,可以理解为并发数;
  • T代表吞吐量;
  • L代表响应时延。

系统优化策略

1. 降低耗时(L↓)

  • 减少排队时间(TQ↓)

    • 缩短队列长度:如调整Tomcat的acceptCount限制请求积压。
    • 异步处理:将耗时操作异步化(如消息队列),避免阻塞主线程。
  • 减少执行时间(TE↓)

    • 优化算法:如使用更高效的数据结构或缓存计算结果。
    • 并行处理:增加线程池大小(如Tomcat的maxThreads)或利用分布式计算。
    • 资源升级:使用更快的硬件(如SSD、高性能CPU)。

示例:商品详情页通过CDN缓存静态资源、优化数据库索引,将响应时间从200ms降至50ms,提升用户体验。

2. 增加容量(O↑)

  • 水平扩展:通过负载均衡横向添加服务器,提升整体吞吐量。
  • 垂直扩展:升级单机资源(CPU、内存)以处理更多请求。
  • 资源复用:使用连接池、线程池减少资源创建开销。

示例:双十一期间,通过弹性扩容云服务器集群,将并发处理能力从10万QPS提升至百万级。

3. 增加时延(L↑)

  • 允许合理排队:通过延长队列(如消息队列积压)暂时容纳突发流量,避免直接拒绝请求。
  • 削峰填谷:将高峰流量缓冲至队列,后端按固定速率消费。

示例:购票系统在抢购时引导用户进入排队页面,提示“当前排队人数较多”,缓解瞬时压力。


场景化指标选择

响应时间优先

  • 适用场景:实时交互系统(如在线游戏、视频会议)、API服务。
  • 优化手段
    • 缓存:使用Redis缓存热点数据,减少数据库访问。
    • CDN加速:静态资源就近分发,降低网络延迟。
    • 数据库优化:添加索引、分库分表减少查询耗时。

吞吐量/容量优先

  • 适用场景:日志处理、批量任务、高并发抢购。
  • 优化手段
    • 异步化:通过Kafka解耦生产与消费,提升吞吐量。
    • 无状态设计:便于水平扩展,如微服务架构
    • 限流与降级:通过Sentinel或Hystrix保护核心链路,确保系统不崩溃。

平衡策略

  • 动态调整:根据流量波动自动扩缩容(如Kubernetes HPA)。
  • 资源隔离:关键业务与非关键业务使用独立资源池,避免相互影响。

在这里插入图片描述


http://www.ppmy.cn/embedded/172990.html

相关文章

MYsql—1

1.mysql的安装 在windows下安装mysql,直接官网搜索即可:http://www.mysql.com/,自己找想要的版本进行download,官网长这样 安装路径需要是英文路径,设置默认即可,若安装执行内容时报错,则AltCt…

买瓜 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组

买瓜 题目来源 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组 原题链接 蓝桥杯 买瓜 https://www.lanqiao.cn/problems/3505/learning/ 问题描述 题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n n n 个瓜,每个瓜的重量为 A i A_i Ai​。小蓝刀功了得,他可以把任何瓜…

Python软件和搭建运行环境

一、Python安装全流程(Windows/Mac/Linux) 1. 下载官方安装包 官网地址:Download Python | Python.org 版本选择建议:推荐Python 3.10(勾选Add Python to PATH) 2. 详细安装步骤(以Windows为…

打包当前Ubuntu镜像 制作Ubuntu togo系统

我的系统的基本情况说明: 我原来的系统的具体型号如下: uname -rLinux Engine 5.15.0-134-generic #145~20.04.1-Ubuntu SMP Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux我原来的硬盘以及分区策略如下: 可以看到我的分区…

市场趋势分析与策略优化

市场趋势分析与策略优化 在交易市场中,价格的变动并非随机,而是由多种因素共同驱动。如何分析市场趋势,并制定有效的策略,是交易者在市场中保持竞争力的关键。本文将探讨市场趋势的分类、影响因素及如何利用数据分析优化交易决策。…

Next.js提供api接口

看react官网在推Next.js,所以简单学习了解一下 DEMO 使用cna官方脚手架(13版本)初始化项目以后目录如下: 可以看出,初始项目只有一个根路由页面page.tsx,想要增加一个纯粹的api route可以在app/目录下创建api/xxx/route.ts。即可…

函数式编程定义

java.util.function包consumer用accept , supplier用get , predicate用test , function用apply 综合使用 // 串在一起,实现判断42这个字符串是奇数还是偶数 if (isNumber.test(supplier.get())) {// 说明是一个数字consumer.accept(change.apply(supplier.get())…

深度揭秘:蓝耘 Maas 平台如何重塑深度学习格局

目录 前言 深度学习:技术基石与发展脉络 蓝耘 Maas 平台:深度学习的强大助推器 1. 高性能算力支撑 2. 丰富的模型支持 3. 便捷的开发体验 4. 完善的安全保障 代码示例:蓝耘 Maas 平台上的深度学习实践 1. 注册与登录 2. 代码实现 …