最近梳理了之前学习的架构设计相关的一些课程学习总结,将其整理成了一个大纲脑图,以每篇5分钟系列展现出来,希望对你有所帮助。
本篇,我们聚焦架构设计的基础知识。在了解架构设计这个topic之前,我们需要对一些常见的概念有理解。
模块与组件
相同点:模块与组件都是系统的组成部分
不同点:只是从不同的角度拆分系统而已,从逻辑的角度拆分后得到的单元是“模块”,从物理的角度拆分后得到的单元就是“组件”;
划分模块的主要目的是职责分离,而划分组件的主要目的是单元复用。
框架与架构
框架是组件规范,提供一些基础功能的产品,比如:MVC是一种最常见的开发规范,而Spring MVC, ASP.NET MVC 都是 MVC 的开发框架,它们提供了很多基础功能帮助程序员实现功能。
架构是软件系统的“基础结构”,从不同的角度或维度,可以将系统划分为不同的结构,比如:业务逻辑的角度,物理部署的角度,开发规范的角度等等。
框架关注的是“规范”,而架构关注的是“结构”。
一些关键指标
(1)系统可用性指标:SLA
SLA全称:Service-Level Agreement, SLA
SLA的计算方式:
常见可用性指标:
常见指标解读:
2个9 表示 系统基本可用,年度不可用时间小于88小时。
3个9 表示 较高可用,年度不可用时间小于9小时。
4个9 表示 具有自动恢复能力的高可用,年度不可用时间小于53分钟(52.56分钟)。
5个9 表示 具有极高的可用性,年度不可用时间小于5分钟。
更加科学的度量方式:
任何一家互联网公司,都有流量的低峰期和高峰期,在低峰期停机1分钟和高峰期停机1分钟,对业务影响的结果完全不同。因此,可以基于一种更加科学的度量方式来评估,即基于一段时间(比如1年)的停机影响的请求量占比进行评估。
综上所述,在回答SLA指标时,先说明N个9 和 影响请求量占比,再结合实际业务场景回答。
(2)系统性能指标1:延迟 和 吞吐量
吞吐量:即系统处理请求的速率,它反映了单位时间内处理请求的能力,一般用TPS或QPS作为单位。
延迟:即响应时间,它反映了客户端发送请求到接收响应的时间,一般用ms和s作为单位。
吞吐量和延迟既互斥 又 不绝对互斥
对一些延迟要求比较高的系统来说,系统优化性能指标是要找到延迟趋向最低和吞吐量趋向最高的点。
(3)系统性能指标2:TP(Top Percentile)
以TP99为例,它代表的是 请求中99%的请求能够达到的性能。
TP是一个时间值,比如TP99=100ms,即99%的请求能够在100ms内得到响应。
TP99计算方式
把一段时间内所有请求的响应时间,按照从小到大进行排序,然后取99%对应的请求的响应时间,即为TP99的值。
为什么用TP99?
TP99比计算平均响应时间更能反映系统性能的真实情况。
(4)系统全链路性能指标
一次请求会涉及到的前后端全链路性能指标:
参考资料
李运华,《从0开始学架构》
刘海丰,《架构设计面试精讲》
潘新宇,《23讲搞定后台架构实战》