前言
1994年,中国科学院设立了中国第一个web服务器,推出了中国第一个网站。刚刚过去的2015年双十一,阿里巴巴当日线上交易额超过700亿,支付宝交易峰值为8.95万笔/秒。中国的互联网,正在以不可思议的速度释放着它的能量。
大众对互联网爆炸式的需求,不断推动着互联网技术向着更高的层次发展,从最初的静态新闻展示,到大型的电子商务平台,网站技术日新月异。也许在四五年前,我们谈到网站制作,想到的还是Html、IIS、论坛系统,但是现在推出一个网站,已经不是简简单单开发一套供人浏览的Html那么容易,而是要克服高并发、高可用、大容量、体验友好、可扩展等诸多设计和技术上的难题。
本文从技术角度简要分析设计大型互联网系统的一些考虑因素,没有高深之语,只是自己工作读书之余的总结。
一、互联网技术的学习历程
事物的发展总是循序渐进,不可能一蹴而就。
2003年的淘宝网最初是基于经典的开源黄金搭档LAMP(Linux+Apache+Mysql+PHP),当时的淘宝,好比学武之人刚刚练就一套太祖长拳,只是能够做到行走江湖不吃亏。只是后来随着业务的不断扩大,经过不断重新设计和优化,能够支撑的访问量也从百万级别逐渐上升的千万级别。这个时候的淘宝网,就已经脱胎换骨,不但吸取了众家之长融会贯通,而且能够自创武功,足以笑傲江湖了。
1、还是从最简单的场景说起。搭建一个网站其实很简单,写几个Html文件,运行一个web服务器软件,就可以通过浏览器访问之,这样网站就算建成了,能够为用户提供浏览html网页的服务。
2、静态的Html网页其实没什么看头,没有新鲜的资讯吸引用户的网站是不会有什么访问量的,于是动态网页技术应运而生。管理员可以随时发布和管理资讯,用户能够看到更多的动态的内容,这种网站可以称作是CMS系统,例如帝国CMS、Joomla、PHPCMS等。
大部分同学经过学校的课程或者自学,都能够掌握制作动态网站的技术,从而掌握从前端Html到后端数据库的相关技巧。达到这一阶段,好比习武之人掌握了可以行走江湖的资本,可以凭此挣口饭讨生活了。但是此时若没能访得明师指点、增长见识,继而打通任督二脉,则会沉沦于庸常的增删改查之中,无法一窥网站技术之堂奥。
3、所谓的名师指点,就是在大项目中遇到困难,因为困难是最好的老师。
我们这里所说的困难有很多种:例如指访问量太大,网站撑不住了;业务需求爆炸,代码无法维护;前台交互繁琐,页面难看等等。每一个困难要彻底解决都不简单,一代一代的网站构架师,正式从不断地尝试解决这些困难的过程中,成长起来的。
最先想到的办法——借鉴成功的开源框架的经验。比如经典的SSH框架(Spirng+Struts+Hibernate),采用了通用的MVC分层模式,能够将业务逻辑、前端展示、持久化数据库隔离,并分别提供比较专业的解决方案;比如BootStrap,解决了前端显示的风格统一;比如Angularjs,让程序员从噩梦般的前端开发中脱离出来。在这个阶段,我们参考了各式各样的框架设计,所谓观千剑而后识器,心中形成些许的丘壑,但尚不能融会贯通。
4、网站的业务更加复杂、访问量更大。要求我们的视线从单纯的增删改查上跳出来,从整体上全面地构架系统。我们要从前端想到后端,从高可用性考虑到安全性,从用户角度思考后再转过身来从开发者角度考虑。这样我们被迫站到了新的高度,这是一个前所未见的绝地,没有现成的方案可以搬过来使用,在经历无数次反复思考和尝试之后,才会完成一个软件工程师到构架师之路的艰难转变。
二、大型互联网系统的核心设计要素
2.1 分层
2.2 分布式
2.3 缓存
2.4 异步
三、一切为了性能
3.1
参考文献
《大型网站技术架构:核心原理与案例分析》
《淘宝技术十年》
原文:http://www.cnblogs.com/mingziday/p/4957816.html