大型网站架构阅读笔记
在《大型网站技术架构:核心原理与案例分析》一书中作者简述了一下是什么引起他写这本书,在京东促销的时候出现了访问人数太多而导致的系统繁忙。无独有偶,同样的问题发生在12306铁道购票网站上,由此可见这样的事情绝非偶然。
大型网站架构主要是为了解决每天要被大量用户访问,具有大型数据操作的大型网站的问题。首先将逻辑处理,数据库和文件分开处理,原因是他们具有不同的职责而且对于其性能的要求也不尽相同。其次是对业务进行拆分,大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物交易网站就会将首页,商铺,订单,卖家,买家等拆分成不同的产品线,分归不同的业务团队负责。
大型网站并不是一蹴而就的,都是由仅仅能满足基本需求的小型网站逐渐累积逐渐扩大的,面对日益增加的客户和数据,网站结构不断扩大。逐渐变成了一个具有大量服务器的大型网站,但是我觉得不论是基于LAMP的小型网站还是像淘宝,京东这样的大型网站最核心的永远是用户对于业务的要求。大型网站架构的出现一定是必然的,但是一个事物的兴起必然是在曲折中前进。大型网站架构的设计也曾经有过很多误区:一味地追随大公司的解决方案、为了技术而技术、企图用技术解决所有问题。
为了解决大型网站面临的高并发访问,海量数据处理,高可靠运行等一系列问题与挑战。大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。可以利用分层这种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。模板还有很多种比如分布式、缓存、集群等。在程序设计与架构设计领域,模式正变得越来越受人关注,许多人寄希望通过模式一劳永逸地解决自己的问题。正确使用模式可以更好的利用业界和前人的思想与实践,用更少的时间开发出更好的系统,使设计者的水平也达到更高的境界。但是模式受其使用场景限制,对系统的要求和约束也很多,不恰当地使用模式只会画虎不成反类犬,不但没有解决原来的老问题,反而带来了更棘手的新问题。
网站性能对最终用户而言是一种主观感受,性能优化的最终目的就是改善用户的体验,是他们感觉网站很快。离开这个目的,追求技术上的所谓高性能,是舍本逐末,没有多大意义。而用户体验的块或者是漫,可以通过技术手段改善,也可以通过优化交互体验改善。即使在技术层面,性能优化也需要全面考虑,综合权衡:性能提升一倍,但服务器数量也需要增加一倍;或者响应时间缩短,同时数据一致性也下降,这样的优化是否可以接受?这类问题的答案不是技术团队能回答的。归根结底,技术是为业务服务的,技术选型和架构决策依赖业务规划乃至企业战略规划,离开业务发展的支撑和驱动,技术走不远,甚至还会迷路。