找个工作

大型网站架构演变过程

2021-04-11  本文已影响0人  吃掉夏天的怪物
  1. web动静资源分离
  2. 缓存处理
  3. web server集群 + 读写分离
  4. CDN、分布式缓存、分库分表
  5. 多数据中心+分布式存储与计算

web server与数据库分离

image.png

这里的web服务器指http服务器与应用服务器
上半部分的部署情况,任何一个出现瓶颈都会影响另一个,因此可以将web服务器与数据库服务器分开
还可以动静分离

但这两个,都只存在单点,不符合高可用

1. web动静资源分离

image.png

2. 缓存处理

缓存处理.png

Front Page Cache 可以做一些静态页面缓存

3. web server集群 + 读写分离

前端后端需要加一个负载均衡,然后数据库就可能出现瓶颈,因此增加读写分离。因此读可以比写多分配一个。主流都有replication机制对其做同步。


image.png

前端负载均衡

应用服务器负载均衡 (上节课讲的可以利用任务服务器)

数据库负载均衡

4. CDN、分布式缓存、分库分表

负载均衡.png

CDN:内容分发网络

在各个运营商增加一个CDN,这样不同地区访问网站速度都能得到提升

分布式缓存

所有缓存对主机都是共享


分布缓存.png

左边是本地数据缓存,数据库的缓存缓存到这台应用服务器之上,这台应用服务器的缓存和其它共享。

分库分表

数据库量太大,可能会有锁竞争。一定程度上可以避免锁竞争。分库后表可能也比较大,因此还可以分表。

分库

垂直分区.png
分表
水平分区.png
DAL数据访问层编写的难度增加

5. 多数据中心+分布式存储与计算

最终.png
可以发现对于之前,增加了基于分布式文件系统计算机构架建立数据中心
原因:对一致性要求不那么高的数据没有必要存在关系型数据库中,关系数据库一致性要求比较高,其事务处理、大表的join都是服务器性能杀手。(pB级别数据)。因此在数据中心可以用nosql等存储这些一致性要求不高的数据,从而有更高的并发性。

关系型数据库,更注重数据的一致性。

技术点[DFS(分布式文件系统)、Key-Value DB、 Map/Reduce(分布式的计算框架)]

image.png

如淘宝的商品有很多图标,小。如果用操作系统的文件系统来管理,操作系统磁盘每个块都比较小,查找某个图标,就会在磁头来回转动效率低。而用文件系统,可以用Hash算法快速找到文件。可以减轻对操作系统I/O的访问。

Map/Reduce : 统计文件单词的计数,但是这些文件不能一次放在内存中。用一台机器统计效率比较低,因此可以用多台机器去统计它。得到Key-val 数据(可能出现在Key-value机器上)就是map的过程(hello 1次 hello 1次), 合并就是reduce的过程(hello 2 次) map combine reduce

上一篇下一篇

猜你喜欢

热点阅读