《大型网站技术架构_核心原理与案例分析》阅读笔记二
前些日子读了《大型网站技术架构:核心原理与案例分析》的第二章--大型网站架构模式。模式源于建筑学的定义是这样的:“每一个模式描述了一个在我峨嵋你周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。而且模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的课重复使用。互联网产品也许没有固定模式,但是网站架构却有一些共同的模式。
对于网站来讲,软件横向方面上有分层切分,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。而在软件的纵向方面则有分割这一却分方法,切分是指对网站的不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,这个分割有助于软件的开发和维护以及便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
对于大型网站,分割和分层的一个主要目的是为了切分后的模块便于分布式部署,分布式部署即将不同模块部署在不同的服务器上,通过远程调用协同工作。但是分布式也会带来很多问题,所以使用分布式时要注意对相关问题的处理。常用的分布式有:分布式应用和服务、分布式静态资源、分布式数据和存储、分布式计算、分布式配置、分布式锁、分布式文件等。分布式之后对于用户访问集中的模块还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。而相关的用于提高网站可用率的模式还有缓存、异步、冗余、自动化、安全等相关架构。
文中还以新浪微博举例对架构进行了详尽的介绍。正确使用模式可以更好地利用业界和前人的思想与实践,用更少的时间开发出更好的系统,使设计者的水平也达到更高的境界。但是模式受其适用场景的限制,对系统的要求和约束叶很多,所以使用模式时要为了解决问题而使用模式,而不是为了模式而模式。