《大型网站技术架构设计》第一篇 概述

一、大型网站架构演化

大型网站软件系统的特点

与传统企业应用系统相比,大型互联网应用系统有以下特点。

1、高并发,大流量需要面对高并发用户,大流量访问。Google 日均PV数(page view 页面浏览次数)35亿,日均IP 访问数3亿;腾讯 QQ 的最大在线用户数1.4亿(2011年数据);淘宝 2012 年“双十一”活动一天交易额超过191 亿,活动开始第一分钟独立访问用户达 1000万。

2、高可用:系统 7×24 小时不间断服务。大型互联网站的宕机事件通常会成为新闻焦点,例如2010 年百度域名被黑客劫持导致不能访问,成为重大新闻热点。

3、海量数据需要存储、管理海量数据,需要使用大量服务器。Facebook 每周上传的照片数目接近 10 亿,百度收录的网页数目有数百亿,Google 有近百万台服务器为全球用户提供服务。

4、用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。在国内,还有各个运营商网络互通难的问题。而中美光缆的数次故障,也让一些对国外用户依赖较大的网站不得不考虑在海外建立数据中心。

5、安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。2011 年国内多个重要网站泄露用户密码,让普通用户也直面一次互联网安全问题。

6、需求快速变更,发布频繁:和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求,其产品发布频率是极高的。Office 的产品版本以年为单位发布,而一般大型网站的产品每周都有新版本发布上线,至于中小型网站的发布就更频繁了,有时候一天会发布几十次。

7、渐进式发展:与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能需求不同,几乎所有的大型互联网站都是从一个小网站开始,渐进地发展起来的。Facebook是伯克扎克同学在哈佛大学的宿舍里开发的;Google 的第一台服务器部署在斯坦福大学的实验室里;阿里巴巴则是在马云家的客厅里诞生的。好的互联网产品都是慢慢运营出来的,不是一开始就开发好的,这也正好与网站架构的发展演化过程对应。

思考:

如果只是几十人、几百人的网站,根本用不着费那么大力气把这个网站搞得很复杂:CRUD直接对数据库进行、数据单表存储、应用服务单机部署.....怎么都可以。 不过一旦用户是百万级、千万级别,你的这个系统架构就必须为这个量级的用户数负责。

大型网站架构演化历程

大型网站的技术挑战主要来自于庞大的用户高并发的访问海量的数据,任何简单的业务一旦需要处理数以P 计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题。

从单一服务器演化为大型分布式系统:

《大型网站技术架构设计》第一篇 概述_第1张图片

|

|

《大型网站技术架构设计》第一篇 概述_第2张图片

大型网站架构演化的价值观

大型网站都是从小型网站发展而来。网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所在网站还很小的时候就去追求网站的架构是舍本逐末,得不偿失的。小型网站最需要做的就是为用户提供好的服务来创造价值,得到用户的认可,活下去,野蛮生长。

1.大型网站架构技术的核心价值是随网站所需灵活应对

大型网站架构技术的核心价值不是从无到有搭建一个大型网站,而是能够伴随小型网站业务的逐步发展,慢慢地演化成一个大型网站。在这个漫长的技术演化过程中,不需要放弃什么,不需要推翻什么,不需要剧烈的革命,就那么润物细无声地把一个只有一台服务器,几百个用户的小网站演化成一个几十万台服务器,数十亿用户的大网站。今天我们看到的大型网站,Google, Facebook,Taobao, Baidu 莫不遵循这样的技术演化路线。

2.驱动大型网站技术发展的主要力量是网站的业务发展

创新的业务发展模式对网站架构逐步提出更高要求,才使得创新的网站架构得以发展成熟。是业务成就了技术,是事业成就了人,而不是相反。所以网站架构师应该对成就自己技术成绩的网站事业心存感恩,并努力提高技术回馈业务,才能在快速发展的互联网领域保持持续进步。

不过我们也看到有些传统企业投身互联网,在业务问题还没有理清楚的时候就从外面挖来许多技术高手,仿照成功的互联网公司打造技术平台,这无疑是南辕北辙,缘木求鱼。而这些技术高手离开了它们熟悉的环境和工作模式,也是张飞拿着绣花针使不上劲来。

网站架构设计误区

在大型网站架构发展过程中有如下几个容易出现的误区。

1.一味追随大公司的解决方案

由于大公司巨大成功的光环效应,再加上从大公司挖来的技术高手的影响,网站在讨论架构决策时,最有说服力的一句话就成了“淘宝就是这么搞的”或者 “Facebook 就是这么搞的”。

大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就失去了坚持自我的勇气,在架构演化的道路上迟早会迷路。

2.为了技术而技术

网站技术是为业务而存在的,除此毫无意义。在技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦的新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。

3.企图用技术解决所有问题

最典型的例子就是2012 年年初12306 故障事件后,软件开发技术界的反应。

各路专业和非专业人士众说纷纭地帮 12306 的技术架构出谋划策,甚至有人提议帮12306 写一个开源的网站,解决其大规模并发访问的问题。

12306 真正的问题其实不在于它的技术架构,而在于它的业务架构:12306 根本就不应该在几亿中国人一票难求的情况下以窗口售票的模式在网上售票(零点开始出售若干天后的车票)。12306 需要重构的不仅是它的技术架构,更重要的是它的业务架构:调整业务需求,换一种方式卖票,而不要去搞促销秒杀这种噱头式的游戏

后来证明 12306 确实是朝这个方向发展的:在售票方式上引入了排队机制、整点售票调整为分时段售票。其实如果能控制住并发访问的量,很多棘手的技术问题也就不是什么问题了

技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决

二、大型网站的架构模式

为了解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而逐渐形成大型网站架构模式。

大型网站架构模式

《大型网站技术架构设计》第一篇 概述_第3张图片

正确使用模式

在程序设计与架构设计领域,模式正变得越来越受人关注,许多人寄希望通过模式一劳永逸地解决自己的问题

正确使用模式可以更好地利用业界和前人的思想与实践,用更少的时间开发出更好的系统,使设计者的水平也达到更高的境界。但是模式受其适用场景限制,对系统的要求和约束也很多,不恰当地使用模式只会画虎不成反类犬,不但没有解决原来的老问题,反而带来了更棘手的新问题。

基于模式微创新

好的设计绝对不是模仿,不是生搬硬套某个模式,而是对问题深刻理解之上的创造与创新,即使是“微创新”,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握

你可能感兴趣的:(编程相关书籍,大型网站技术架构,架构设计)