web动静资源分离
浏览器的请求分为静态资源请求,与动态资源请求。
静态有:html文件,js脚本,css等。
动态有:jsp,php等
http服务器用来处理静态请求,应用服务器处理动态请求。分别可以称为前端服务器,后端服务器。
随着网站访问量变高,可以采取缓存处理。
1.客户端(浏览器)缓存,浏览器访问,先从缓存中获取页面。
2.前端页面缓存,前端服务器可以做一些前端的静态页面缓存。
3.页面片段缓存ESI(Edge side Includes)
前端负载均衡:
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。
基于NAT的负载均衡技术
LVS
F5
后端的应用服务器负载均衡
可以增加任务服务器,选择负载比较小的任务服务器
对数据库分库分表:
数据库读写 并发量比较大的时候,就会出现锁竞争,那么就可以把数据库进行分库。
数据库分区种类:
垂直分区:
垂直分区完之后每一张表还可能出现“大表”。
水平分区:
多数据中心+分布式存储与计算
目前有些大型数据,对一致性要求不高,没有必要保存在关系数据库中。关系数据库的事务,表的join,都是服务器性能杀手。
nosql支持并发性比关系型数据库好的多。
DFS分布式文件系统:
nosql的数据可能存在分布式文件系统中。
举例:淘宝上面有好多图片,图片比较小,如果存在磁盘中,磁盘查找磁头回去转动,效率比较低。
分布式文件系统可以是这样的,比如说分成块,将相关性很大的图片存在一个块中。操作系统在查找的时候,就相当于在查找一个大文件。当然这个块内部还存储了图片的存储信息。通过哈希算法,操作系统就可以快速找到图片,不需要磁盘上的消耗。
nosql基于key value存储,为了快速找到这些数据,nosql可以建立在分布式文件系统之上,减轻对I/O的访问。实际上,这些数据库也有自己的文件系统。
map/reduce算法,是分布式计算框架。是google的系统,基本现有nosql数据库都支持此算法。
google(GFS|BigTable | Map/Reduce)
map_reduce是什么呢?比如说我们要统计文件,这些文件太大没法加载到内存中。如果用一台机器效率比较低,那么就可以用多台机器去计算它。这就是分布式计算。
下面这段话来自知乎:
举个栗子,要斗地主了,需要从10副混一起的牌里找出一幅牌,10副牌分10堆给10个人去清,每个人分别把黑红梅方放一堆,这就是map
然后安排4个人每人去清一种花色的牌,从中找出1到K,这就是reduce了