极客大学 - 架构师训练营 第四周
第四周 系统架构
系统架构:系统技术挑战与方案
1. 大型互联网应用系统面临的挑战
高并发,大流量: 需要面对高并发用户,大流量访问。
Google 日均 PV 数 35 亿,日均 IP 访问数 3 亿
腾讯 QQ 的最大在线用户数 1.4 亿(2011 年数据)
淘宝 2012 年“双十一”活动一天交易额超过 191 亿,活动开始第一分钟独立访问用户达 1000 万。
高可用: 由于用户分布全球以及不同的地域和时区,需要保证系统 7×24 小时不间断服务。
海量数据:需要存储、管理海量数据,需要使用大量服务器
Facebook 每周上传的照片数目接近 10 亿
百度收录的网页数目有数百亿
Google 有近百万台服务器为全球用户提供服务
用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别,需要考虑到网络速度,网络阻断,不同网络运营商的环境等各种问题
安全性:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击
需求快速变更,发布频繁:互联网产品为快速适应市场,满足用户需求,其产品发布频率是极高的
Amazon 几乎是每秒钟都有一次 production release
如何能让架构渐进式发展?几乎所有的大型互联网站都是从一个小网站开始,渐进地发展起来的
2. 最核心,最大的挑战 - 高并发
“因为高并发,所以会带来其它的问题,级别小的时候,都不是问题。”,高并发背后的问题,是内存/CPU/磁盘 IO/网络 IO 的资源的问题。
应对高并发,基本上可以分成两个技术方向
垂直伸缩 - 当并发量增加的时候,如果当前的服务器计算资源不足,那么我们通过增强单一服务器的功能或者计算能力,这样一种手段去提升系统的处理能力和计算能力。
优点:不需要改变架构,简单有效
缺点:达到某个伸缩的临界点后,花费更高,有自己的物理极限,因此对于大型应用而言,垂直伸缩不是一种好的选择

水平伸缩 - 通过增加服务器数量来提升计算能力的一种方法。
优点:克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题,并且总是可以增加更多的服务器,几乎没有极限。
缺点:有架构的变更,没有垂直伸缩简单快速,需要进行设计。当机器数量大幅度增加后,机器硬件出现故障的几率也将大幅度上升),此时软件上的容错、机器的管理和维护就显得至关重要了。

分布式架构演化
1. 单机部署

2. 动静分离

3. 应用集群化部署

4. 数据库读写分离

5. 引入搜索和缓存

6. 数据库分库和分表

7. 应用垂直拆分

8. 服务化架构

9. 引入消息队列

引用:https://www.geekhalo.com/2019/09/01/architecture/evolution/
第四周:作业一
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

版权声明: 本文为 InfoQ 作者【9527】的原创文章。
原文链接:【http://xie.infoq.cn/article/f9672e5f7f064a6760f0d9a1f】。文章转载请联系作者。
评论