一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?
大型互联网所面临的核心问题是:海量数据、高并发、高可用、业务复杂。
垂直扩展
通过升级硬件和网络吞吐能力可以实现垂直伸缩,最简单的短期伸缩方案,因为可以不涉及架构的改变。
通过使用 RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力。
通过切换到 SSD(固态硬盘)改善 I/O 访问速度。
通过增加内存减少 I/O 操作 。
通过升级网络接口或者增加网络接口提高网络吞吐能力。
更新服务器使用更多处理器或者更多超线程
缺点:还是使用单一应用,伸缩有限,并且随着业务的扩大,开销越大
水平扩展
通过增加相同的服务器提升应用的服务能力。
分层
将整个单一的服务分为多层,例如网关层、控制层、业务层、数据层等,通过上层对下层依赖和调用组完
整的系统
分隔
分层后,每一层都负责系统的一个职责,可以根据需要,使用不同的技术手段,共同完成这一层的职责。这样有助于模块的分布式部署,提供并发能力。
分布式
不同模块分层、分隔后,把他们部署到不同的服务器上,使用多个服务器的计算资源,提升系统性能。
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
集群
将同一个模块进行集群化部署,提升系统的高可用。
数据库主从分离、分库分表
主从分离解决读多写少的场景,减轻数据库的压力。随着数据量的增加,单库单表存在性能瓶颈,可以切分跟多库和更小的表。
缓存
缓存的作用主要是加快响应速度、较少网络带宽、降低服务器压力。
CDN
反向代理
本地缓存
远程缓存
异步
系统解耦合的重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。
作用是异步、解耦、流量销峰等。
提高系统可用性
加快网站响应速度
消除并发访问高峰
冗余
互联网应用需要7×24小时连续运行,但是服务器总有可能会出现故障,特别是服务器规模比较大的时候,服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份
自动化
在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面
安全
互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式:通过密码和手机校验码进行身份认证;登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;对于常见的用于攻击网站的XSS 攻击,SQL 注入,进行编码转换等相应处理;对于垃圾信息、敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制
分层后的技术点
前端架构
App 及 Web 开发技术
浏览器及 HTTP 优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSQL 数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论