读《大型网站技术架构:核心原理与案例分析》

引言

这本书讲述的是大型网站技术中的常见架构以及从小型网站到大型网站到演变历程。在这本书里面能读到的,除了如何设计一个大型网站,更重要的是在网站架构设计的成长之路上,有哪些需要了解学习的地方。

这本书主要讲了两方面的事情,首先,如何从一个小型网站演变成一个大型网站。其次,如何衡量一个大型网站是否优秀。

网站演化之路

初始——LAMP

简单网站架构

在这个时候,通常应用程序、数据库与文件系统都在同一个物理机器上。

各司其职——应用服务器与文件服务器分离

应用服务器与文件服务器分离

应用服务器注重程序的处理速度,文件服务器侧重存储空间以及文件读写能力,而数据库则同时需要两者,不同的需求决定了他们不能在一台服务器上永久共存,提高网站性能的简单做法就是将三者拆分。

二八定律——使用缓存回应80%的请求

使用缓存服务器

大型网站中,常常能应用二八定律,比如说读和写的比例,比如说读热点数据和读非热点数据的比例。为了防止频繁的读操作导致数据库宕机,可以使用缓存提高响应速度同时缓解数据库压力。

而为了确保缓存服务器的可用性,可以使用集群对缓存服务器进行部署。想要更高效率的部署缓存服务器集群,可以使用一致性哈希算法,最小化下线缓存所带来的缓存命中率降低。

集群 —— 提高应用服务器处理性能

应用服务器集群

并发量不断提升的时候而网站单次响应速率无法迅速提升的时候,为了防止应用服务器资源耗尽,我们采用应用服务器集群来处理请求。

二八定律——数据库读写分离

数据库读写分离

CAP定律中提到,一致性,可用性,分布式,三者只能取其二。毫无疑问,数据库的可用性是必须具备的,而单机的数据库又无法处理大规模读写事务。因此,我们放弃一致性,选择分布式。

数据库的读写分离,将最大压力的读取数据部分转移到了从服务器,主服务器负责写事务并且将结果复制到从服务器中。这样做可能会出现段时间的主从数据不一致。

前端优化——反向代理及CDN

前端优化——CDN及反向代理

为了让用户最快速度地加载网页,我们选择将网页到前端资源部署在各大运营商的骨干网络中,尽可能地减少网络往返时延同时也降低了自身机房的网络压力。

最后的绝招——分布式文件系统及分布式数据库

分布式文件及分布式数据库

在写性能也不足的情况下,就会采用分布式的文件系统以及分布式的数据库。

如何衡量大型网站

作者在书中提出了五个指标,性能可用性伸缩性扩展性以及安全性

性能

网站性能是客观的指标,可以具体体现到响应时间,吞吐量等技术指标。

对于用户而言,性能就是从他输入网址,到最后呈现整个网站所消耗的时间。但是对于我们来说,性能可以更加细致,大的方面就可以划分到前端,应用服务器,数据库,文件服务器,然后再根据每个方面再进行细分。

可用性

网站的可用性描述网站可有效访问的特性。

在我理解,可用性应该从两个方面去进行保证。一方面是应用内部进行保证,通过集群来确保有足够多的实例进行响应和心跳机制将失效实例淘汰。另外一方面则是确保应用外部环境的网络、电等要素可用。

伸缩性

所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。

扩展性

扩展性就是指在对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力。

在这里,更多的去减少不同模块之间功能的直接调用,改成通过通用的接口进行调用,这样就不会导致模块的内部重构造成的大规模瘫痪。

结语

在这本书中,更多的其实是在讲述,如何将大型网站结构从横向、纵向不断划分,使得其能够承受大规模的访问。纵向的切割我们能够看到各种服务的分离,比如应用服务与数据库服务分离、缓存服务的分离。而在横向则更多的是如何增强单个业务实例的处理能力。

然后我们再去思考,在将不同业务分离之后,不同业务之间如何交互。在我们将应用服务器集群化撞击后,再去思考如何将请求分配给集群中的具体机器。

这本书很好地总结了业内已有的很多处理方案,给出了一个很成熟的路线图,读罢此书,视野更加开阔,然而千里之行,始于足下。

(本文图片引用自书中)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值