架构师训练营第 1 期 -week4
题目
![](https://static001.geekbang.org/infoq/bc/bc9da9cc42ec89eb83f31de75d53fdcf.png)
回答
1. 单体架构
![](https://static001.geekbang.org/infoq/cd/cd4f819e8aee7800dc43e0e352a5c5ec.png)
2. 应用和数据分离
随着网站发展,一台服务器不能满足需求,需要将应用和数据分离
![](https://static001.geekbang.org/infoq/86/86be3dd690e30a6fe02605a3031906cc.png)
三台服务器对硬件的要求不同:
应用服务器需要处理大量的业务逻辑,因此更快 更强大的CPU
数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存
文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘
随着用户并发请求增多,数据库压力太大导致延迟,需要进一步优化。
3. 使用缓存
![](https://static001.geekbang.org/infoq/cf/cfe0fdc14f87c4886d6b2d507f84358e.png)
80%的业务访问集中在20%的数据上,将一小部分热点数据缓存在内存中,减小数据库压力。
随着用户并发请求增多,单一应用服务器能够处理的请求连接有限,应用服务器成为瓶颈
4. 使用应用服务器集群
![](https://static001.geekbang.org/infoq/5a/5a8bff82a8f9160311c2c7fb21b08d17.png)
通过负载均衡调度服务器,可以将用户请求分发到应用服务器集群中的任何一台服务器上,实现可伸缩性
5. 数据库读写分离
使用缓存后仍然有一部分操作(缓存不命中,缓存过期)和全部的写操作需要访问数据库,随着用户并发请求继续增多,数据库负载成为网站瓶颈
![](https://static001.geekbang.org/infoq/76/7646b66a7872a4f3c9d541b2edfb96b6.png)
通过配置两台数据库主从关系,可以将一台数据库服务器的数据同步到另一台服务器上。
读访问从库,写访问主库。通过数据访问模块使读写分离对应用透明
6. 使用CDN和反向代理
随着用户规模扩大,不同地区的用户有着不同的网络环境,访问网站时的速度差别也很大。
![](https://static001.geekbang.org/infoq/44/441e14a12d7e78dafddcfea64c52a8d6.png)
CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,反向代理部署在网站的中心机房。
它们的目的都是尽早反回数据给用户,加快访问速度,减轻后端服务器压力。
7. 使用分布式文件系统和分布式数据库系统
读写分离之后,写操作还是一台数据库服务器。随着用户并发请求继续增多,必须将请求分片到不同的写库,由数据库集群对外提供服务。同样的,文件系统也是如此。
![](https://static001.geekbang.org/infoq/17/1702ed94f75f230e87e162fda0c3ffa0.png)
8. 使用NoSQL和搜索引擎
传统关系型数据库对模糊查找支持不太方便,使用NoSQL和搜索引擎进行专门的优化
![](https://static001.geekbang.org/infoq/36/3621e72288bcf2aa562efc10b2896b47.png)
9. 业务拆分
为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,分归不同的团队负责。具体到技术上,就是将
![](https://static001.geekbang.org/infoq/27/27423f969b87b65cad86fc051877f015.png)
10. 微服务及中台化
随着业务拆分越来越小,系统存储越来越庞大,应用系统的整体复杂度呈指数级增加。由于所有应用要和所有数据库连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。
所以可以将共用的业务提取出来,独立部署
![](https://static001.geekbang.org/infoq/36/365c868dc214fd6cf25af56a3b364389.png)
11. 大数据与智能化
今日头条等国民级应用依靠大数据推荐算法智能化系统实现了千人千面,给每个用户定制内容
![](https://static001.geekbang.org/infoq/dc/dceca5b65b71a4ca3ccdf74853b90117.png)
评论