第四课系统架构课后作业
Q:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述
A:大型互联网应用系统面对的主要问题包括:
大的访问流量所带来的高并发、大流量问题,需要支持24小时不间断的在线服务,需要存储大规模海量的数据,为应对需求变化需要能够对应用提供快速迭代升级能力,面对复杂的网络环境能够提供安全的防护措施。
提高系统的处理能力来解决高并发、大流量问题,也即是系统需要具有高性能,高性能可以通过垂直和水平两个维度来解决。
垂直伸缩方式是指升级系统内部单机的处理能力,通过单机处理能力的提高来实现整个系统的业务处理能力进而带动系统性能的提升。垂直伸缩提升的主要技术手段包括:
a. 通过使用RAID提高系统的IO处理能力
b. 使用固态硬盘替换传统的机械式硬盘来提高系统的IO读取速度
c. 加大内存容量,减少IO读取频率,提高系统的处理能力
d. 升级服务器或增加系统处理线程提高系统的响应能力
e. 通过升级网络接口或增加网络接口提高系统的网络访问速度
水平伸缩是指通过增加服务器的方式来提高系统的处理能力。水平伸缩提升的主要技术收到包括:
a. 是应用处理与数据处理相分离
b. 使用缓存技术改善系统性能
c. 使用应用服务器集群改善系统并发处理能力
d. 使用反向代理和CDN加速系统往里响应速度
e. 通过负载均衡等手段,使用分布式文件系统和分布式数据库
f. 利用内存数据库NoSQL等新的数据库技术增加数据库的访问速度,使用搜索引擎提高搜索的处理能力
提高系统高可用能力的主要手段是冗余设计:
a. 将应用部署在多台应用服务器上,通过负载均衡在部分应用服务器出现问题的情况下,仍然能够保证整个系统的服务能力,实现应用服务的高可用
b. 将数据存储在多台数据服务器上进行相互备份,在部分数据服务器损坏的情况下,数据不会丢失系统仍然可用。
提高系统可伸缩性的主要手段是集群设计:
a. 系统服务能力扩展可以比较容易的通过添加服务器的方式实现
b. 服务器的增加,并不会导致服务的变化,对用户没有影响
c. 服务器的增加,不应该有限制。
提高系统可扩展性的主要手段是事件驱动架构和分布式服务:
a. 将业务进行拆分,将功能和服务进行分割,形成高内聚低耦合的模块单元
b. 使用微服务及中台架构
c. 实现应用和服务、计算、数据存储、静态资源等的分布式部署
d. 使用异步手段将业务分成多个阶段,每个阶段之间通过数据共享而不是直接调用的方式进行协作。
提高系统安全性的主要手段包括:
a. 通过密码和手机校验码等方式进行身份验证
b. 对网络通讯进行加密
c. 对系统内部的敏感数据信息等进行加密
d. 使用验证码防止注入攻击
e. 对垃圾信息、敏感信息进行过滤
f. 对重要操作进行风险控制
按照互连网业务模式架构,每层可以采用的优化手段如下图所示:
评论