- web动静资源分离
- 缓存处理
- web server集群 + 读写分离
- CDN、分布式缓存、分库分表
- 多数据中心+分布式存储与计算
web server与数据库分离
image.png这里的web服务器指http服务器与应用服务器
上半部分的部署情况,任何一个出现瓶颈都会影响另一个,因此可以将web服务器与数据库服务器分开
还可以动静分离
但这两个,都只存在单点,不符合高可用
1. web动静资源分离
image.png2. 缓存处理
缓存处理.pngFront Page Cache 可以做一些静态页面缓存
3. web server集群 + 读写分离
前端后端需要加一个负载均衡,然后数据库就可能出现瓶颈,因此增加读写分离。因此读可以比写多分配一个。主流都有replication机制对其做同步。
image.png
前端负载均衡
-
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置一个名字,对于不同的客户机访问同一个名字,得到不同的地址。 -
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个用户使用它访问内部Web服务器,因此也称为反向代理模式 - 基于NAT的负载均衡技术
- LVS (开源软件)
- F5硬件负载均衡 (这个不便宜)
应用服务器负载均衡 (上节课讲的可以利用任务服务器)
数据库负载均衡
4. CDN、分布式缓存、分库分表
负载均衡.pngCDN:内容分发网络
在各个运营商增加一个CDN,这样不同地区访问网站速度都能得到提升
分布式缓存
所有缓存对主机都是共享
分布缓存.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
网友评论