高并发,大流量
需要面对高并发用户,大流量访问。
- Google 日均 PV 数35亿,日均 IP 访问数3亿
- 微信在线用户数10亿
- 天猫双十一活动一天交易额3000亿。
高可用
系统7×24小时不间断服务。大型互联网站的宕机事件通常会成为新闻焦点
海量数据
需要存储、管理海量数据。
- Facebook 每周上传的照片数目接近10亿
- 百度收录的网页数目有数百亿
- Google 有近百万台服务器为全球用户提供服务
用户分布广泛,网络情况复杂
许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。在国内,有各个运营商网络互通难的问题。而中美光缆的数次故障,也让一些对国外用户依赖较大的网站不得不考虑在海外建立数据中心。
安全环境恶劣
由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会遇到黑客攻击情况。2011年国内多个重要网站泄露用户密码,让普通用户也直面一次互联网安全问题。
需求快速变更,发布频繁
和传统软件的版本发布频率不同,互联网产品为快速适应市场,满足用户需求,其产品发布频率也是极高的。Office 的产品版本以年为单位发布,而一般大型网站的产品每周都有新版本发布上线,至于中小型网站的发布就更频繁了,有时候一天会发布几十次。
渐进式发展
不同于传统软件产品或者企业应用系统,一开始就规划好全部的功能和非功能需求,几乎所有的大型互联网站都是从一个小网站开始,渐进的发展起来的。
- Facebook 是伯克扎克同学在哈佛大学的宿舍里开发的;
- Google 的第一台服务器部署在斯坦福大学的实验室里;
- 阿里巴巴则是在马云家的客厅里诞生的。
好的互联网产品都是慢慢运营出来的,不是一开始就开发好的。那些刚建立就投入巨资,有巨大背景的网站,后来发展都很惨淡。
应对高并发,大流量的两个技术方向:
垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架 构,所以通常
被认为是最简单的短期伸缩性方案。
- 通过使用 RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力。
- 通过切换到 SSD(固态硬盘)改善 I/O 访问速度。
- 通过增加内存减少 I/O 操作 。
- 通过升级网络接口或者增加网络接口提高网络吞吐能力。
- 更新服务器使用更多处理器或者更多超线程。
垂直伸缩的缺点:
- 达到某个程度后,增加计算能力需要的更多的花费。
- 垂直伸缩有物理极限。
- 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点。
水平伸缩
- 水平伸缩是指通过增加服务器提升计算能力的一类架构方法。
- 水平伸缩被认为是伸缩性的圣杯,水平伸缩可以克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题。
水平伸缩总是可以增加更多服务器,这样,就不会像垂直伸缩那样遭遇到单台服务器的极限。