一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?

用户头像
A p7+
关注
发布于: 2020 年 10 月 18 日

大型互联网所面临的核心问题是:海量数据、高并发、高可用、业务复杂。

  • 垂直扩展

通过升级硬件和网络吞吐能力可以实现垂直伸缩,最简单的短期伸缩方案,因为可以不涉及架构的改变。

通过使用 RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力。

  • 通过切换到 SSD(固态硬盘)改善 I/O 访问速度。

  • 通过增加内存减少 I/O 操作 。

  • 通过升级网络接口或者增加网络接口提高网络吞吐能力。

  • 更新服务器使用更多处理器或者更多超线程

缺点:还是使用单一应用,伸缩有限,并且随着业务的扩大,开销越大

  • 水平扩展

通过增加相同的服务器提升应用的服务能力。



  • 分层

将整个单一的服务分为多层,例如网关层、控制层、业务层、数据层等,通过上层对下层依赖和调用组完

整的系统

  • 分隔

分层后,每一层都负责系统的一个职责,可以根据需要,使用不同的技术手段,共同完成这一层的职责。这样有助于模块的分布式部署,提供并发能力。



  • 分布式

不同模块分层、分隔后,把他们部署到不同的服务器上,使用多个服务器的计算资源,提升系统性能。

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算



  • 集群

将同一个模块进行集群化部署,提升系统的高可用。



数据库主从分离、分库分表

主从分离解决读多写少的场景,减轻数据库的压力。随着数据量的增加,单库单表存在性能瓶颈,可以切分跟多库和更小的表。



  • 缓存

缓存的作用主要是加快响应速度、较少网络带宽、降低服务器压力。

  • CDN

  • 反向代理

  • 本地缓存

  • 远程缓存



  • 异步

系统解耦合的重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。

作用是异步、解耦、流量销峰等。

  • 提高系统可用性

  • 加快网站响应速度

  • 消除并发访问高峰



  • 冗余

互联网应用需要7×24小时连续运行,但是服务器总有可能会出现故障,特别是服务器规模比较大的时候,服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份



  • 自动化

在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面



  • 安全

互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式:通过密码和手机校验码进行身份认证;登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;对于常见的用于攻击网站的XSS 攻击,SQL 注入,进行编码转换等相应处理;对于垃圾信息、敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制



分层后的技术点



前端架构

  • App 及 Web 开发技术

  • 浏览器及 HTTP 优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS



网关及应用层架构

  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分



服务层架构

  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性(锁)服务



存储层架构

  • 分布式文件

  • 分布式关系数据库

  • NoSQL 数据库



后台架构

  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库



运维与安全

  • 数据采集与展示

  • 数据监控与报警

  • 攻击与防护

  • 数据加密与解密



用户头像

A p7+

关注

还未添加个人签名 2020.06.05 加入

还未添加个人简介

评论

发布
暂无评论
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?