互联网三高架构论文
互联网三高架构论述
陶鲸泽
摘要:互联网有三高架构,三高分别是:高并发,高性能,高可用。其中最关注的软件质量的属性是:性能、可用性、伸缩性、扩展性、安全性这几个方面。而构建此类系统,最常见的架构模式有:横向分层、纵向分割、分布式化、集群化、使用缓存、使用异步模式、使用冗余、自动化。
关键词:高并发,高性能,高可用
1高并发
1.1 什么是高并发
⾼并发是互联⽹分布式系统架构设计中必须考虑的因素之⼀,它通常是指,通过设计保证系统能够同时并⾏处理很多请求。
⾼并发相关常⽤的⼀些指标有响应时间,吞吐量,每秒查询率QPS,并发⽤户数等。
响应时间:系统对请求做出响应的时间。例如系统处理⼀个HTTP请求需要200ms,这个200ms就是系统的响应时间。
吞吐量:单位时间内处理的请求数量。
QPS:每秒响应请求数。在互联⽹领域,这个指标和吞吐量区分的没有这么明显。
并发⽤户数:同时承载正常使⽤系统功能的⽤户数量。
1.2怎么提高程序的高并发
提高程序高并发的两种方法:垂直扩展与⽔平扩展
垂直扩展:提升单机处理能⼒,垂直扩展的⽅式⼜有两种:
(1)增强单机硬件性能。
(2)提升单机架构性能。
⽔平扩展:增加服务器数量,一旦服务器数量增加就能线性扩充系统性能。
2高性能
2.1什么是性能:
性能,是一个速度的概念,单位时间内可以处理的任务数量,性能的影响因素大多与CPU有关。
2.2 性能与CPU的关系
CPU越快,应用的性能一定越好吗?
绝对的。只不过CPU和应用性能提升可能不成线性增长的关系,因为应用可能是IO密集型,应用性能还会受到IO阻塞的影响。
CPU越多,应用的性能一定越好吗?
大部分情况是的。如果大量锁存在,性能提升可能会大打折扣,因为并行能力会被锁住,又变成单线程执行了,没有最大的发挥多CPU的作用。
服务器越多,性能一定越好吗?
大部分情况是的。但是单个服务器的效率可能会是下降的,数据一致性问题、同步问题、锁问题,这些都会导致单个服务器的效率下降,所以不是线性相关。
关于CPU利用率:
如果只是考虑应用对CPU利用效率的话:单核=多核=多服务器
单进程/单线程的系统对于服务器资源的利用率更高。
到多核的系统中,就会因为锁的问题,多任务同步的问题,操作系统调度的问题,造成一定的资源浪费。而分布式系统中,这些浪费也会更严重。
怎样更好的更有效的利用服务器资源呢?
避免因为IO阻塞让CPU闲置,导致CPU的浪费;
避免多线程间增加锁来保证同步,导致并行系统串行化;
避免创建、销毁、维护太多进程、线程,导致操作系统浪费资源在调度上;
3高可用
3.1 什么是高可用
”高可用“就是可以正常提供服务。通常会使用下面三个指标来衡量
MTBF:系统可用时长。
MTTR:系统从故障后到恢复正常所耗费的时间。
SLA:服务等级协议,用于评估服务可用性等级。计算公式是 MTBF/(MTBF+MTTR)。
假设系统一直能够提供服务,我们说系统的可用性是100%。
3.2 怎么解决高可用
所以在常用的架构设计中,主要通过2个方面来解决高可用:
垂直分层,将各个服务不用层上的应用进行切割,从而降低每层服务的复杂度,达到降低整体出错的概率。
水平冗余, 就是在每一层上进行多个服务的冗余,再加上故障的自动转移,就可以提高服务的可用性。
3.3常见的互联网分层架构
常见互联网分布式架构如上,分为:
(1)客户端层:典型调用方是浏览器browser或者手机应用APP
(2)反向代理层:系统入口,反向代理
(3)站点应用层:实现核心应用逻辑,返回html或者json
(4)服务层:如果实现了服务化,就有这一层
(5)数据-缓存层:缓存加速访问存储
(6)数据-数据库层:数据库固化数据存储
整个系统的高可用,又是通过每一层的冗余+自动故障转移来综合实现的
参考文献:
1:b站up主文章《聊聊互联网"三高"架构》;
2:百度文库(互联网架构如何实现高并发);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步