写点什么

互联网架构总结

用户头像
J
关注
发布于: 2020 年 12 月 19 日

互联网架构总结



1. 互联网系统面临怎样的挑战



高并发:需要面对高并发用户,大流量访问。日活亿级



高可用:系统7×24小时不间断服务



海量数据:需要存储、管理海量数据。日增PB数据



用户分散/网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别



安全环境恶劣:大型网站几乎每天都会遇到黑客攻击



需求变更迭代快:互联网产品为快速适应市场,满足用户需求,其产品发布频率也是极高的。有时候一天会发布几十次!



发展是渐进式的:不可能一开始就大跃进搞复杂的技术方案,是随着市场和需求变化进行演进。



2. 应对高并发挑战的两个技术方向



垂直伸缩:通过升级硬件和网络吞吐能力实现垂直伸缩。不需要改变应用架构,但成本呈指数增长,并发量过大时未必可行(存在单机的物理极限)。



水平伸缩:通过增加服务器提升计算能力的一类架构方法。架构更加复杂,但克服了成本和极限的限制。



3. 互联网架构演化



  • Step 0: 一台服务器走天下,应用程序+文件存储+数据库都在一台设备上。

  • Step 1:应用数据分离。应用程序、文件服务器、数据库服务器三者分离到不同服务器上。

  • Step 2:增加缓存改善系统性能。应用程序+本地缓存,增加远程分布式缓存。

  • Step 3:应用程序 -> 应用服务器集群,前端通过负载均衡分发流量到不同的应用服务器。改善了系统的并发处理能力。

  • Step 4:数据库读写分离。数据库服务器分主从和读库、写库,应用程序的数据访问模块实现读写逻辑分流。

  • Step 5:增加反向代理和CDN,加速网站响应。部署在load balance之外,借助运营商/云服务商的CDN和backward proxy能力,对应用架构改变少。

  • Step 6:文件服务器->分布式文件服务器集群,数据库服务器->分布式数据库服务器集群。

  • Step 7:使用NoSQL和搜索引擎。应用服务基础模块增加统一数据访问模块,提供对NoSQL、File Systems、DB、search engine的服务调用。

  • Step 8:业务拆分。应用服务 -> 应用服务A/B/C...,应用服务之间通过MQ通讯。

  • Step 9:进一步微服务化和中台化

  • Step 10:大数据和智能化



4.互联网架构模式



架构模式类似于设计模式,是一系列重复问题的可复用方案,是价值经验的总结。



4.1 分层



分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。



4.2 分割



如果说分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分。系统越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。



4.3 分布式



对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大。



4.4 集群



使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块,比如网站的首页,还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。



4.5 缓存



缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,现代 CPU 越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计。



  • CDN

  • 反向代理

  • 本地缓存

  • 远程缓存



4.6 异步



大型网站架构中,系统解耦合的手段除了前面提到的分层、分割、分布等手段,还有一个重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。



4.7 冗余



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



4.8 自动化



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



4.9 安全



互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式



  • 通过密码和手机校验码进行身份认证;

  • 登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;

  • 为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;

  • 对于常见的用于攻击网站的XSS 攻击,SQL 注入,进行编码转换等相应处理;

  • 对于垃圾信息、敏感信息进行过滤;

  • 对转账交易等重要操作根据交易模式和交易信息进行风险控制。



5. 如何衡量一个系统的架构设计(架构的核心要素)



  • 高性能:优化网站性能的手段也非常多,从用户端到数据库,从代码到机房部署,影响用户请求的所有环节都可以进行性能优化。

  • 高可用:主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

  • 可伸缩:是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

  • 可扩展:主要手段是事件驱动架构和分布式服务

  • 安全:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。



6. 互联网架构技术一览





6.1 前端架构



  • App 及 Web 开发技术

  • 浏览器及 HTTP 优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS



6.2 网关及应用层架构



  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分



6.3 服务层架构



  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

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



6.4 存储层架构



  • 分布式文件

  • 分布式关系数据库

  • NoSQL 数据库



6.5 后台架构



  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库



6.6 运维与安全



  • 数据采集与展示

  • 数据监控与报警

  • 攻击与防护

  • 数据加密与解密



用户头像

J

关注

还未添加个人签名 2015.06.24 加入

还未添加个人简介

评论

发布
暂无评论
互联网架构总结