互联网架构演化
概要:系统总是在变化的,特别是当前的互联网系统,因为市场的需求的变化,系统时时刻刻都处在缓慢的演进中。
一、互联网系统面临的挑战
高并发、大流量。对于访问量大的网站,特别是每逢促销的时候,并发和流量大是无法避免的两个挑战。例如:淘宝双十一,12306节假日售票
高可用。对于大型互联网来说,系统必须7*24小时不间断的服务。比如阿里云服务器,如果某个时间点短暂的宕机,都可能会应发重大的事故,必须现在依赖阿里云云服务器的产品太多太多。
海量数据。需要存储、管理、分析、计算海量数据。如支付宝存储了每个用户至少10年的交易记录,而且这些信息是不可丢失的。
用户分布广泛、网络情况复杂。许多大型网站都是为全球用户提供服务的,用户分布范围广泛,而各个地方的网络情况又各不相同。
安全环境恶劣。由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会受到黑客攻击的情况。如xxx网站泄露房客的信息。
需求快速变更,发布频繁。和传统的项目不同,互联网产品为了快速使用市场,满足用户多样化的需求,产品的发布频率非常之高。如Spring版本更新较慢,而类型淘宝这样的大型网站,则每隔几周甚至一周就会发布一些新的功能。
渐进式发展。不同于传统软件产品或企业应用系统,一开始就规划好全部的功能和非功能性需求,几乎所有的大型网站都是从一个小网站开始,慢慢的发展起来的。比如阿里巴巴。所以,好的互联网产品都是慢慢的运营出来的,而不是一开始就开发好的。
二、大型网站应对高并发的两个技术方向
1、垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用框架,所以通常被认为是最简单的短期伸缩性方案。
通过使用独立冗余磁盘阵列增加I/O吞吐能力
通过使用SSD改良I/O访问速度
通过增加内存减少I/O操作
通过升级网络接口或者增加网络接口提高吞吐能力
更新服务器使用更多处理器或者更多线程
缺点:
达到某个程度后,增加计算能力需要更多的发费成本。
有物理极限
操作系统的设计或者应用程序自身,制约着垂直伸缩最多只能达到某个点
2、水平伸缩
通过增加服务器提升计算能力的一类架构方法
能够克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题
水平伸缩总是可以增加服务器,所以不会有物理极限。
评论