第四周作业 (作业一)
典型大型互联网应用系统遇到的主要挑战:
1、高并发,大流量
2、高可用
3、海量数据
4、用户分布广,网络情况复杂
5、安全环境恶劣
6、需求快速变更,发布较频繁
7、渐进式发展
通过各种实践,针对这些挑战,采用了相对应的解决方案:
高并发,大流量
解决方案是垂直伸缩和水平伸缩
(1)、垂直伸缩
垂直伸缩通过升级服务器本身软硬件性能来提高并发处理能力。
垂直伸缩包含以下几种方式:
通过使用 RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力。
通过切换到 SSD(固态硬盘)改善 I/O 访问速度。通过增加内存减少 I/O 操作 。
通过升级网络接口或者增加网络接口提高网络吞吐能力。
更新服务器使用更多处理器或者更多超线程。
优点:
操作简单不需要代码改动,周期短。
缺点:
达到某个程度后,增加计算能力需要的更多的花费。
垂直伸缩有物理极限。
操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点。
(2)、水平伸缩
水平伸缩是通过增加服务器来提升系统整体处理能力,进而提高并发处理能力
优点:
可以解决单个机器性能物理极限问题
随着并发量不断提高,计算能力单位价格更低,也就是成本更低
缺点:
需要开发相应的水平扩展代码,开发周期相对较长
并发量增长前期计算能力单位价格相对较高
高可用
解决方案是数据冗余,一主一备或一主多备
(1)、数据冗余
将一份数据存储在多台设备上,其中一台设备宕机,数据不会丢失,依然可以对外提供服务
(2)、一主一备或一主多备
一台服务器系统停止工作,从服务器可以自动激活变成主服务器并对外提供服务
海量数据
解决方案是分布式文件系统、分布式数据库、NoSQL数据库
将海量数据拆分成多份分别存储在不同的机器上,分布式存储,分布式查询和写入
用户分布广,网络情况复杂
用户分布范围广,各地网络情况千差万别,各个运营商网络互通难的问题,通常会在不同的地域设立相应的数据中心,以应对相应地域用户的访问,加快系统响应速度,提升用户体验。当然也会采用CDN来缓存一些静态内容,供就近用户访问。
安全环境恶劣
通过密码和手机校验码进行身份认证;登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;对于常见的用于攻击网站的XSS 攻击,SQL 注入,进行编码转换等相应处理;对于垃圾信息、敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制。
需求快速变更,发布较频繁
为了应对需求快速变更,我们需要采用可扩展架构,可扩展架构的主要手段是事件驱动架构和分布式服务。
渐进式发展
互联网尤其是移动互联网不确定性很强,考虑到试错成本,开发方式不同于传统软件产品或者企业应用系统,一开始就规划好全部的功能和非功能需求,几乎所有的大型互联网站都是从一个小网站开始,渐进的发展起来的。
版权声明: 本文为 InfoQ 作者【Geek_83908e】的原创文章。
原文链接:【http://xie.infoq.cn/article/3e4dc83e8fb97edf6d5da79d7】。文章转载请联系作者。
评论