大型网站架构演变过程理解


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了

相关内容推荐