这篇文章是参考李智慧的《大型网站技术架构:核心原理与案例分析》和现蘑菇街CTO曽宪杰的《大型网站系统与Java中间件实践》写的一篇读书笔记。
前言
何谓大型网站?大型网站的特点是什么?大型网站架构发生演变的源动力是什么?大型网站的架构演变经历了哪些阶段?在演变的某个具体阶段使用到常用技术有哪些,为什么要使用这些技术,同时这些技术又解决了什么问题?笔者在初次接触大型网站时思考了以上几个问题,本着缘木求鱼的方式,我打算详细的扒一扒大型网站的演变史。如果对以上的几个问题都理解透彻了,那么可以说对大型网站也有一个基本的认识和理解了,但是我写这篇文章却不局限于此,在文章的后面会从一个中高级程序员的角度去思考,从大型网站的演变史可以得到哪些方法论和技术栈。由于笔者工作时间不长,所以我觉得思考这个问题是很有意思的。
下面将分别从以下几个方面谈谈大型网站:
- 何谓大型网站,大型网站相比非大型网站的特点有哪些?
- 大型网站发生演变的源动力
- 大型网站所历经的演变阶段
- 演变阶段所使用到的技术点
- 程序员价值观
大型网站的特点
从20世纪90年代第一个Web服务的出现,现在互联网的普及,也就短短20来年的时间。互联网极大的改变了人们的生活、学习、生活等方方面面,笔者清晰地记得在2011年刚上大学那会,用着中国移动龟速的2G怨声载道,到现在三大运营商大力推广并普及4G网络,再一次掀起了新一轮的互联网革命,当我们享受着网页秒开,看视频再也不卡的畅快时,却不知道背后的技术人员所付出的巨大努力。举个例子,现在大家人手必装的支付宝、淘宝等软件无不从一个小网站发展起来的,然后逐渐成为一个大型网站。那么大型网站的特点有哪些呢?
- 高并发,大流量
主要是指这类网站需要面对高并发、大流量访问。腾讯QQ的最大在线人数为1.4亿(2011年数据)。
- 高可用
因为高并发的访问,会使得服务器承受巨大的压力,一旦服务器出现过载那么很可能直接挂掉,然后,就没有然后了��。因此,高可用就显得尤为重要,需要保证网站7*24小时不间断提供服务。
- 海量数据
主要是指需要存储、管理海量数据。百度收录的网页数据有数百亿,Google有将近百万台服务器在提供服务。
源动力
既然大型网站是从小型网站发展起来的,那么是什么力量在推动着小网站逐渐向大型网站发展呢?
主要力量是业务的发展。从来没有哪个网站生来就是大型网站,业务驱动技术变革,技术变革反作用于业务,从而使得网站可以支撑业务的快速发展。所以,从CEO(CTO)的角度看,网站的价值在于它所为用户带来了什么,而不是网站是怎么形成的。需要为用户带来价值是因,网站的形成是果,这个因果关系是需要认清楚的。所以,技术从来不是单纯的技术(从价值的角度看),技术虽然可以解决大部分问题,但却不一定能够解决所有的问题。就12306网站售票的例子,如果早点使用分时段售票的做法,就没必要投入大量的技术人员解决这个问题。业务设计也是关乎网站价值的重要方面,所以不要为了技术而技术!
演变阶段
- 阶段一:单台服务器搞定一切
- 阶段二:应用服务与数据隔离
- 阶段三:使用缓存改善性能
- 阶段四ÿ