读《大型架构技术演进的思考》的一点儿感悟

1、网站简单总体架构:网站须要储存数据、要有数据库,网站要支持客户端访问进行业务操做,要有web服务器,web服务器中包含程序代码,数据缓存。web

2、网站要记录用户的状态 记录session信息,高并发的用户请求到达服务器,须要有多台服务器来处理,就要有服务器组件用来分发请求,从而是请求较平均的到达服务器,所以就须要服务器与服务器之间session同步,否则就没法合理记录用户状态。session 同步的话须要消耗服务器内存资源来进行服务器之间session的复制传递,所以不是简单的增长服务器就能使并发访问提升,当服务器增长到必定程度,session传递的内耗就很大,高并发容量就再也不那么大了。所以就要考虑其余技术,在这有几种处理方式:一、使用一台或几台服务器单独记录 session 。二、我把session用cookie来存,直接储存在用户机端上,虽然cookie是不安全的。3,我让某个用户的请求都是分发给经过同一个服务器,那么我就不须要进行session传递了,这就是LVS 方案,也是session粘带。数据库

3、对于静态网页来讲,上面第二点面临的问题根本不是问题,由于静态网页并不会由于用户的不一样而有所不一样,因此根本不须要储存用户状态。缓存

4、对于全部网站来讲,储存问题是初期的技术瓶颈,具体体如今web服务器上和数据库上。而数据是储存的短板,所以要想进行扩展须要先解决数据库请求的高并发问题。如何解决?人们发现网站能够分为读写,读的通常都是静态的页面,写的才是根据用户需求有所不一样的,所以进行了读写分离。两台数据库,一台负责读(查询操做),一台负责写(增删改操做),这样就把一个的压力分给了两个。好比读写比是9比1 的网站 之前最多500人请求,那么如今能够5000人了,500进行写请求,剩下的4500是读,读能够读缓存的,或者能够进行排队(延迟加载),可是我要不时进行两个数据库的同步。另外还有一种技术就是我合并请求,在web服务器中我把类似的数据库请求操做进行合并,之前的多个操做占用多个链接,如今多个操做占用一个链接 进行批量操做,(像facebook)从而减轻压力,提升并发。安全

5、对于网站读写,许多网站业务功能不一样,人们读写比例不一样需求不一样,那么我就能够把网站页面尽可能作成静态页面,而且局部刷新,异步提交。这就有AJAX等技术。 也就是我把数据库的数据提早缓存,一些实时性要求不高的数据,缓存。服务器

6、数据库能够进行读写分离,那么我根据业务的操做,能够进行表的分离,某功能块的表放在一个库中,另外的不相关的放在另外库中,这就是表的垂直分离。 以上就是对网站数据方面理解。cookie

End、文章中涉及的几个目前不太清楚词汇:一致性hash , 搜索技术,垂直拆分,水平拆分,有待深刻学习了解。session

相关文章
相关标签/搜索