导读:Web 应用程序架构描述了 Web 应用所有布局,包括各种应用程序组件、第三方中间件系统、Web 服务和数据库之间的交互。
软件架构突出体现系统的所有高级组件以及它们之间的交互过程。
而软件设计是一种代码级设计,侧重于将应用程序业务逻辑分布到具有其特定目的的各个模块中,如何有助于构建和管理应用程序的业务逻辑。
用户代理主要是帮助用户与服务器交互的工具。用户主要使用 浏览器(如Google Chrome、Firefox、微软Edge、Safari 以及 Android 和 IOS 平台上的应用程序)与服务器交互。用户代理向服务器发送请求并接收响应,然后显示界面给用户。
域名服务器就像网站的通讯簿。每当用户使用浏览器向 Web 地址发送请求时,浏览器在发送请求之前利用 DNS 查找 Web 服务器的真实地址(IP 地址),以便让浏览器找出网站所在的服务器,将 HTTP 请求发送到正确的位置。
负载均衡设备主要处理水平扩展。它将传入请求定向到多个服务器之一,然后负载均衡设备再将从这些服务器接收到的响应发送给用户。
通常,Web 应用程序服务器以相互镜像的多个副本形式存在,以提供一致性和高可用性。负载均衡器设备之间用算法分配任务。它与服务器结合自动缩放,可以工作得很好。
在计算中,虚拟机( VM ) 是计算机系统的虚拟化/仿真。虚拟机基于计算机体系结构并提供物理计算机的功能。它们的实现包括专门的硬件、软件或组合。
Web 服务器处理用户的请求并将包含数据(HTML、JSON、XML 等文档)的响应包发送回浏览器。托管在虚拟机上的 Web 服务器利用 VM 提供的计算能力来执行任务。Web 服务器通常是指后端基础设施,例如数据库、缓存服务器、消息队列等。
数据库提供用于组织、添加、搜索、更新、删除和对数据执行计算的工具。通常有关系型数据库——MySQL、PostgreSQL、Microsoft SQL Server、Oracle 数据库、Microsoft Access 等,非关系型数据库——MongoDB、Dynamo DB 等。
缓存服务为数据提供存储,允许存储和搜索数据。缓存允许开发者参考先前的计算结果以加快速度。缓存可以在各种技术层中应用,包括操作系统、网络层(包括内容交付网络 (CDN) 和 DNS)、Web 应用程序和数据库等。
客户端 — HTTP 缓存标头、浏览器
DNS — DNS 服务器
Web — HTTP 缓存标头、CDN、反向代理、Web 加速器、键/值存储
应用程序 — 键/值数据存储、本地缓存
数据库 — 数据库缓存、缓冲区、键/值数据存储
内容交付网络或内容分发网络 (CDN) 是代理服务器及其数据中心的地理分布网络。目标是通过相对于最终用户在空间上分配服务来提供高可用性和性能。CDN 服务于大部分互联网内容,包括 Web 对象(文本、图形和脚本)、可下载对象(媒体文件、软件、文档)、应用程序(电子商务、门户)、直播流媒体、点播流媒体以及社交媒体网站。
外部存储用于存储资产,包括图像、视频、文档和其他大文件。在很多情况下,也会对这些文件进行操作。示例 — 视频网站自动转换用户上传的多种分辨率的视频。微博将用户图像和视频转换为适合移动设备的格式。由于将这些数据存储在 VM 本地磁盘上可能成本高昂,且会消耗大量计算资源,因此它们通常存储在外部存储中。云存储是最受欢迎的选项之一。
云存储是一种云计算模型,它通过将数据存储作为服务进行管理和运营的云计算提供商将数据存储在互联网上。它以即时容量和成本按需交付,无需购买和自己管理数据存储基础设施。
Web 服务提供了一个通用平台,允许基于各种编程语言构建的应用程序能够相互通信。
Web 服务使用 SOAP(简单对象访问协议)在应用程序之间发送 XML 数据。数据通过 HTTP 请求发送。从 Web 服务发送到应用程序的数据称为 SOAP 消息。SOAP 消息是一个 XML 文档。由于文档是用 XML 编写的,因此调用 Web 服务的客户端应用程序可以用任何编程语言编写。
主要有两种类型的 Web 服务:
简单对象访问协议或 SOAP Web 服务。
具象状态传输或 REST Web 服务。
数据仓库是用于报告和数据分析的系统,被认为是商业智能的核心组件。每个现代应用程序都会收集、存储和分析数据。DW 是来自一个或多个不同来源的集成数据的中央存储库。它们将当前和历史数据存储在一个地方,用于执行商业智能和为企业创建分析报告。
用于构建数据仓库系统的两种主要方法是提取、转换、加载 (ETL) 和提取、加载、转换 (ELT)。
这三个必需的过程分别是——
提取:从多个来源提取数据。
转换 : 对数据进行清洗、边距和分类的转换。
加载:将数据加载到存储中以进行数据仓库。
Web 应用程序组件只有三种模型。它与用于 Web 应用程序的服务和数据库的数量密切相关。他们来了:
一台Web服务器,一台数据库
多个Web服务器,一个数据库
多个 Web 服务器、多个数据库
应用服务
这三种所谓的“单体”模型是由于其服务器的刚性和稳定性。相比之下,应用服务(微服务和无服务器)则是敏捷的,它们简化了升级和扩展,可以将 Web 服务器拆分为更小的部分:微服务中的“服务”和无服务器中的“功能”。因此,使用它们中的每一个独立地修改和缩放会更容易。
构建可靠应用程序架构的主要标准:
高效的
灵活的
可重复使用
易于测试
始终如一地成功解决问题
结构良好且易于理解的代码
在开发过程中可扩展
有快速的响应时间
非碎片化
没有单点故障
简单
有首选安全标准
作者:大雄
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。