您的位置:首页 > 运维架构 > 网站架构

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

2016-07-14 00:00 274 查看
摘要: 今天读了《大型架构技术演进的思考》这样一篇文章,文章有几十页。文章源自 架构说 微信号:jiagoushuo ,读完之后对于网站的整体架构以及网站发展的瓶颈有了些了解,在这写下自己的感悟。

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

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

三、对于静态网页来说,上面第二点面临的问题根本不是问题,因为静态网页并不会因为用户的不同而有所不同,所以根本不需要储存用户状态。

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

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

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

End、文章中涉及的几个目前不太清楚词汇:一致性hash , 搜索技术,垂直拆分,水平拆分,有待深入学习了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: