大型互联网系统技术架构模式
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
架构模式是对不断重复发生的问题形成的解决方案,以解决互联网系统高性能、高可用、易扩展、可伸缩、安全等为目标,形成可重复使用的方案。
一、分层
系统应用、架构的分层,将系统横向维度切分成几个部分,每一部分负责一部分相对单一的职责,通过上层对下层依赖和调用组成一个完整系统。
解决问题:
l 系统应用复杂、职责不清。
技术方案和手段:
l 系统职责分层:反向代理、CDN、DNS、图片服务、网关服务、应用服务、缓存服务、数据库服务、文件系统。
l 系统业务与数据分层:视图层、应用层、服务层、基础设施层。
二、分割
分割是在纵向方面对软件进行切分,将系统根据不同功能和服务进行分割,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护,另一方面便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
解决问题:
l 系统庞大,模块耦合严重,不易开发和维护。
l 提高功能扩展能力。
l 分布式部署。
l 提高并发处理能力。
技术方案和手段:
l 按照业务垂直切分,拆分成不同业务系统。
l 数据层考虑分库、分表,单台数据库容量达到极限,可考虑分片。
l 数据采用读写分离、冷热数据分离方式,提高系统性能。
三、分布式
将不同模块部署到不同的服务器上,通过远程调用协同工作。分布式意味着解决同样问题可以使用更多计算机,计算机越多,CPU、内存、存储资源也越多,能够处理更大的并发访问和数据量。
解决问题:
l 提高并发访问和数据量
l 提高计算能力
技术方案和手段:
l 应用分布式部署,降低单一服务器负载。
l 分布式部署存储:分布式缓存、分布式数据库、分布式文件系统、分布式消息队列、分布式搜索引擎。
l 分布式计算。
四、集群
将独立的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同提供对外服务。
解决问题:
l 单台服务器能力有限,需扩容。
技术方案和手段:
l 将相同服务、应用多台服务器部署构成集群,通过负载均衡对外提供服务。
五、缓存
缓存时将数据存储在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,现在CPU越来越快的一个重要因素是使用更多缓存。
解决问题:
l 应用响应速度慢。
技术方案和手段
l 将静态资源进行缓存,通过CDN、反向代理提供缓存服务。
l 通过分布式缓存(如:Redis、Memcache)或本地缓存,对静态资源或响应不高的动态数据缓存。
六、异步
计算机软件发展的一个重要目标和驱动力是降低软件耦合性。事物之间直接关系越少,那么彼此影响越小,越可以独立发展。异步将一个业务操作分成多个阶段,每个阶段通过共享数据而非直接调用协作。
解决问题:
l 应用可用性。
l 响应速度慢。
l 并发访问高峰。
技术方案和手段:
l 使用线程实现异步调用,提供响应速度。
l 消息队列,实现服务模块解耦。
七、冗余
保证服务器宕机的情况下网站依然能提供服务,数据不丢失,就需要一定程度服务器冗余运行,数据冗余备份。
解决问题:
l 防止服务器宕机,提高系统可用性。
技术方案和手段:
l 服务或应用集群部署。
l 数据库采用主从架构,冗余存储。
八、自动化
在无人值守情况下网站可以正常运行,一切都是自动化是网站的理想状态。
解决问题:
l 解决由人来维护系统带来的问题。
l 释放研发成本,提高效率。
技术方案和手段:
l 自动监控。
l 自动部署。
l 自动扩容。
l 自动降级、容错。
九、安全
互联网的开放特性使得其从诞生就面临巨大安全挑战。
解决问题:
l 数据窃取。
l 非法访问。
l 网络攻击。
l 大量垃圾信息。
l 无风控提醒。
技术方案和手段:
l 通过密码和手机验证码进行身份认证。
l 登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息也需进行加密处理。
l 为了防止机器人程序滥用网络资源攻击网站,网站使用验证码进行识别。
l 对于常见的用于攻击网站的XSS攻击,SQL注入,进行编码转换等相应处理。
l 对于垃圾信息、敏感信息进行过滤。
l 对转账交易等重要操作根据交易模式和交易信息进行风险控制。
版权声明: 本文为 InfoQ 作者【Mars】的原创文章。
原文链接:【http://xie.infoq.cn/article/2e5f267d952d96e0a69e32506】。文章转载请联系作者。
评论