高并发系统-系统设计目标(高性能、高可用、高可扩展)

前文已经总结了高并发系统一般的设计方法,本文接着总结高并发系统设计目标

高性能

优化原则

  • 性能优化一定不能盲目,一定是问题导向的
  • 遵循"八二原则":用 20% 的精力解决 80% 的性能问题,抓住主要矛盾解决主要问题
  • 数据支撑:了解响应时间和吞吐量优化指标
  • 持续优化:持续不断地寻找性能瓶颈,制定优化方案,直到达到目标为止

度量指标

度量性能的指标一般是系统接口的响应时间,主要包括

  • 平均时间
  • 最大时间
  • 分位值:包括90 分位、95 分位、75 分位

性能优化方法

  1. 提高系统的处理核心数
  2. 减少单次任务响应时间
    • CPU 密集型系统:需要处理大量的 CPU 运算,那么选用更高效的算法或者减少运算次数就是这类系统重要的优化手段
    • IO 密集型系统:通过采用工具和监控来发现性能瓶颈点

优化三板斧

  • 数据优先,做一个新的系统在上线之前一定要把性能监控系统做好
  • 掌握一些性能优化工具和方法,需要在工作中不断的积累
  • 计算机基础知识很重要,比如说网络知识、操作系统知识等等,掌握了基础知识才能让你在优化过程中抓住性能问题的关键,也能在性能优化过程中游刃有余

高可用

高可用性(High Availability,HA):系统具备较高的无故障运行的能力

可用性度量指标

MTBF(Mean Time Between Failure) 是平均故障间隔的意思,代表两次故障的间隔时间,也就是系统正常运转的平均时间。这个时间越长,系统稳定性越高。

MTTR(Mean Time To Repair) 表示故障的平均恢复时间,也可以理解为平均故障时间。这个值越小,故障对于用户的影响越小。

可用性与 MTBF 和 MTTR 的值息息相关,我们可以用下面的公式表示它们之间的关系:

Availability = MTBF / (MTBF + MTTR)

主要通过几个9来描述,正常系统比如电商系统可通过系统重要程度区分1级应用,2级应用,3级应用。1级应用重要性最高,一般需要四个九保障,2级和3级应用一般三个九就可以了

设计思路

精炼总结主要如下:

  • 系统层面
    • failover(故障转移)
    • 超时控制
    • 降级
    • 限流
  • 运维层面
    • 灰度发布:包括灰度发布方案兼容性尤其是数据库、缓存操作的影响
    • 故障演练

开发和运维角度

提升可用性的方法是不同的:

  • 开发注重的是如何处理故障,关键词是冗余和取舍。冗余指的是有备用节点,集群来顶替出故障的服务,比如文中提到的故障转移,还有多活架构等等;取舍指的是丢卒保车,保障主体服务的安全。
  • 运维角度来看则更偏保守,注重的是如何避免故障的发生,比如更关注变更管理以及如何做故障的演练。

两者结合起来才能组成一套完善的高可用体系。

取舍这块可以参考之前写的一篇文章,架构权衡

高可扩展性

不仅仅看应用服务本身,更需要从整个系统层面考虑,包括数据库、缓存、依赖的第三方、负载均衡器、交换机带宽

设计思路:拆分

主要设计思路就是拆分,会把庞杂的系统拆分成独立的,有单一职责的模块。将复杂的东西简单化,电商系统就是一个比较好的案例,拆成用户系统、订单系统、促销系统、购物车系统等等

  • 存储扩展性:比如将电商系统数据库拆成多个库,如用户库、订单库等(垂直拆分 ),做到隔离故障,某一个库"挂了"不会影响到其它的数据库;如果数据量很大,将用户库拆成多个数据库,比如用户库1、用户库2,叫做水平拆分
  • 业务扩展性:包括业务纬度,重要性纬度和请求来源纬度

根据业务接口的重要程度,把业务分为核心池非核心池

相关推荐
小迷糊的学习记录19 小时前
0.1 + 0.2 不等于 0.3
前端·javascript·面试
程序员敲代码吗19 小时前
面试中sessionStorage问题引发深度探讨
面试·职场和发展
艾莉丝努力练剑19 小时前
跨节点通信优化:使用hixl降低网络延迟的实战
架构·cann
程序猿追19 小时前
深度解读 CANN HCCL:揭秘昇腾高性能集体通信的同步机制
神经网络·架构
程序员泠零澪回家种桔子20 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
GIOTTO情20 小时前
舆情监测系统选型与技术落地:Infoseek 字节探索全栈架构解析与实战
架构
源代码•宸21 小时前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
island131421 小时前
CANN ops-nn 算子库深度解析:神经网络计算引擎的底层架构、硬件映射与融合优化机制
人工智能·神经网络·架构
C澒21 小时前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
roman_日积跬步-终至千里21 小时前
【架构实战-Spring】动态数据源切换方案
架构