跳转至

Web 应用开发

本章导读

Web 应用开发涉及多个技术维度,从架构模式到性能优化,从数据存储到分布式处理。本章系统梳理 Web 技术演变路径、SOA 与 ESB 的核心概念、RESTful 设计原则、微服务架构的优势与挑战,以及 CDN、缓存等关键技术的应用场景。这是论文和案例分析的高频考点。

学习目标

  • 理解 Web 技术的演变历程
  • 掌握 SOA 和 ESB 的核心概念与作用
  • 熟练掌握 REST 的五个设计原则
  • 理解微服务架构的优势与挑战
  • 掌握 CDN、缓存等性能优化技术

Web 技术全景

技术维度总览

维度 涉及技术架构
从架构来看 MVC、MVP、MVVM、REST、WebService、微服务
从缓存来看 Memcache、Redis、Squid
从并发分流来看 集群(负载均衡)、CDN
从数据库来看 主从库、内存数据库、反规范化、NoSQL、分区(分表)、视图
从持久化来看 Hibernate、MyBatis
从分布式存储来看 Hadoop、FastDFS、区块链
从数据编码来看 XML、JSON
从 Web 服务器来看 Apache、WebSphere、WebLogic、Tomcat、JBoss、IIS
其他 有状态与无状态、响应式 Web 设计

Web 技术演变 ⭐

Web 系统架构经历了从简单到复杂的演变过程:

演变阶段

graph TB
    A[阶段1: 单机部署] --> B[阶段2: 数据库分离]
    B --> C[阶段3: 应用服务器集群]
    C --> D[阶段4: 数据库主从分离]
    D --> E[阶段5: 引入缓存]

阶段详解

Web 应用和数据库部署在同一台服务器上。

  • 优点:简单、成本低
  • 缺点:性能瓶颈、单点故障

将数据库独立部署到单独的服务器。

  • 优点:资源独立、互不影响
  • 缺点:网络延迟

部署多个应用服务器实例,通过负载均衡分发请求。

面临的问题

  • 用户请求由谁来转发到具体的应用服务器?
  • 用户每次访问的服务器不一致,如何维护 Session 一致性?

解决方案

方案 说明
Session 服务器 统一管理 Session 会话信息
负载均衡 + Cookie 客户端保存 Cookie,每次访问携带 Cookie

配置主库和从库,实现读写分离。

graph LR
    A[应用服务器集群] -->|写| B[数据库 主]
    B <-->|同步| C[数据库 从]
    C -->|读| A

使用缓存缓解数据库读取压力。

graph LR
    A[应用服务器集群] -->|写| B[数据库 主]
    B <-->|同步| C[数据库 从]
    D[缓存集群] -->|1.读缓存| A
    C -->|2.读数据库| A

面向服务架构(SOA)⭐

SOA 定义

SOA 核心定义

SOA 是一个**组件模型**,它将应用程序的不同功能单元(称为服务)通过定义良好的**接口和契约**联系起来。接口采用**中立方式**定义,独立于实现服务的硬件平台、操作系统和编程语言。

SOA 特点

mindmap
  root((SOA 特点))
    接口中立
      独立于硬件平台
      独立于操作系统
      独立于编程语言
    统一通用
      服务间交互方式统一
    松耦合
      服务独立演进

ESB 企业服务总线 ⭐

ESB(Enterprise Service Bus)是 SOA 的一种实现方式:

作用 说明
总线连接 将各种服务进行连接与整合
元数据管理 描述服务的元数据和服务注册管理
数据传递 在服务请求者和提供者之间传递数据,支持数据转换
模式支持 支持同步模式、异步模式等
动态交互 发现、路由、匹配和选择,支持服务间动态交互
解耦能力 解耦服务请求者和服务提供者
高级能力 安全支持、服务质量保证、可管理性、负载均衡

CDN 内容分发网络 ⭐

CDN 定义

CDN 定义

CDN(Content Delivery Network,内容分发网络)是建立并覆盖在承载网之上,由分布在不同区域的**边缘节点服务器群**组成的分布式网络。

CDN 工作原理

graph TB
    A[用户] --> B{DNS 解析}
    B --> C[全局负载均衡]
    C --> D[最近的缓存服务器]
    D --> E[命中缓存]
    D --> F[回源获取]
    E --> A
    F --> G[源站]
    G --> D

CDN 核心功能

功能 说明
负载均衡 中心平台的负载均衡功能
内容分发 将内容分发到边缘节点
调度优化 智能调度,选择最优节点
就近获取 用户从最近节点获取内容

CDN 关键技术

  • 内容存储技术:缓存内容的存储和管理
  • 分发技术:内容从源站到边缘节点的分发

REST 表述性状态传递 ⭐

REST 概念

REST 定义

REST(Representational State Transfer)是一种**软件架构风格**,是设计风格而不是标准,只提供一组设计原则和约束条件。

REST 五大原则

原则 说明
资源抽象 网络上的所有事物都被抽象为**资源**
唯一标识 每个资源对应一个唯一的**资源标识(URI)**
通用接口 通过通用的连接接口(HTTP 方法)对资源进行操作
标识不变 对资源的各种操作**不会改变资源标识**
无状态性 所有的操作都是**无状态的**

RESTful API 设计

graph LR
    A[资源] --> B[URI 标识]
    B --> C[HTTP 方法操作]
    C --> D[GET 查询]
    C --> E[POST 创建]
    C --> F[PUT 更新]
    C --> G[DELETE 删除]
HTTP 方法 操作 幂等性
GET 查询资源
POST 创建资源
PUT 更新资源
DELETE 删除资源

REST 的优点

  • 基于该风格设计的软件**更简洁**
  • 更有层次
  • **更易于实现缓存**等机制

微服务架构 ⭐

微服务定义

微服务架构

微服务架构建议将大型复杂的**单体架构应用**划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为**单一的业务功能**。

微服务特点

mindmap
  root((微服务特点))
    独立部署
      隔离进程
      独立发布
    技术异构
      自由选择语言
      自由选择技术栈
    独立扩展
      按需扩容
      弹性伸缩
    松耦合
      服务自治
      独立演进

微服务优势

优势 说明
解决复杂性 把庞大的单一模块应用分解为一系列服务,同时保持总体功能不变
独立开发 开发者能够自由选择可行的技术,让服务决定 API 约定
独立配置 每个微服务都能独立配置,变化一旦测试完成就被配置
独立调整 可以给每个服务配置正好满足容量和可用性限制的实例数

微服务挑战

挑战 说明
适用性限制 并非所有系统都能转成微服务,如数据库底层操作不推荐服务化
部署复杂 众多微服务需要单独部署,增加部署复杂度(容器技术可解决)
性能问题 服务间通信通过标准接口,可能产生延迟或调用出错
数据一致性 分布式部署的微服务,保持数据一致性更加复杂

数据编码格式

XML 可扩展标记语言

特点 说明
自描述性 标签自带语义
可扩展 可自定义标签
跨平台 纯文本格式
冗余较大 标签占用空间

JSON 轻量级数据交换格式

特点 说明
轻量级 数据量小
易解析 JavaScript 原生支持
可读性好 结构清晰
无模式 灵活但缺乏约束

XML vs JSON

对比项 XML JSON
数据量 较大 较小
可读性 一般
解析难度 较复杂 简单
模式验证 支持 XSD 支持 JSON Schema
适用场景 配置文件、文档 API 数据交换

无状态服务

有状态 vs 无状态

类型 特点 适用场景
有状态服务 服务端保存会话状态 需要会话管理的应用
无状态服务 每次请求独立,不保存状态 RESTful API、微服务

无状态服务优点

graph TB
    A[无状态服务] --> B[易于扩展]
    A --> C[负载均衡简单]
    A --> D[故障恢复快]
    A --> E[资源利用率高]

本章小结

核心知识点

  1. Web 技术演变:单机 → 分离 → 集群 → 主从 → 缓存

  2. SOA/ESB

  3. SOA:接口中立、松耦合
  4. ESB:服务连接、协议转换、动态交互

  5. REST 五原则:资源抽象、唯一标识、通用接口、标识不变、无状态

  6. 微服务

  7. 优势:独立开发、独立部署、独立扩展
  8. 挑战:部署复杂、性能问题、数据一致性

  9. CDN:边缘节点、就近获取、负载均衡

技术选型对照

场景 推荐技术
性能优化 CDN、缓存(Redis)、读写分离
高可用 集群、负载均衡、主从复制
系统集成 SOA、ESB
API 设计 RESTful
大型应用 微服务架构

考试重点

知识点 考查形式
REST 五原则 原则识别与应用
微服务优势与挑战 场景分析
ESB 作用 概念理解
CDN 原理 工作流程

学习建议

  1. REST 原则:牢记五大原则,能够判断是否符合 RESTful 规范
  2. 微服务:理解优势和挑战,掌握适用场景
  3. 性能优化:理解 CDN、缓存、主从分离的工作原理