超文本传输协议(HTTP)多年来演进以满足现代应用需求,从简单文本交付到高性能、实时体验。

HTTP 演进

HTTP/0.9

  • 构建用于获取简单 HTML 文档
  • 单个 GET 请求
  • 无头部

HTTP/1.0

  • 添加头部和状态码
  • 支持更丰富交互
  • 每个请求仍然需要新连接

HTTP/1.1

  • 引入持久连接
  • 更多方法
  • 使 Web 更快和更高效用于日常浏览

HTTP/2

  • 解决性能瓶颈与多路复用
  • 启用多个请求共享一个连接
  • 头部压缩

HTTP/3 (QUIC)

  • 转移到 UDP 与 QUIC
  • 减少延迟
  • 提高可靠性,特别是对于移动和实时应用

系统性能指标

四个核心指标

  1. Queries Per Second (QPS)

    • 系统每秒处理多少传入请求
    • 服务器 1 秒收到 1000 请求?那是 1000 QPS
    • 听起来直接直到你意识到大多数系统不能长时间维持峰值 QPS 没有东西开始破坏
  2. Transactions Per Second (TPS)

    • 系统每秒处理多少完成事务
    • 事务包括完整往返,即请求出去、命中数据库、回来带响应
    • TPS 告诉你关于实际完成工作,不只是收到请求
    • 这是你业务关心什么
  3. Concurrency

    • 系统在任何给定时刻处理多少同时活跃请求
    • 你可以有每秒 100 请求,但如果每个花费 5 秒完成,你实际处理 500 并发请求一次
    • 高并发意味着你需要更多资源、更好连接池和更聪明线程管理
  4. Response Time (RT)

    • 从请求开始到响应接收经过时间
    • 在客户端级别和服务器级别测量
    • 简单关系 tying 它们一起:QPS = Concurrency ÷ Average Response Time
    • 更多并发或更低响应时间 = 更高吞吐量

Nginx 为什么如此流行

Apache 统治 Web 服务器 20 年,然后 Nginx 出现并改变一切。现在 Nginx 供电一些互联网最大站点,包括 Netflix、Airbnb、Dropbox 和 WordPress.com。不是因为它更新或更流行,而是因为它解决 Apache 不能高效处理问题。

Nginx 流行原因

  • 高性能 Web 服务器
  • 反向代理和负载均衡器
  • 缓存层
  • SSL 终止(卸载)

网络调试命令

当有人说”这是网络问题”,这些命令帮助你快速找到什么错:

  • ping:检查目的地响应并报告往返时间用于基本可达性
  • traceroute / tracert:显示路径上每个跳所以你可以看到包在哪里慢或停止
  • mtr / pathping:连续测量每跳延迟和丢失捕获间歇问题
  • ip addr, ip link / ipconfig /all:打印本地 IP、MAC 和接口状态所以你可以验证机器网络身份
  • ip route:揭示路由表确认哪个网关和下一跳系统将使用
  • ip neigh:显示 IP 到 MAC 条目检测重复或陈旧 ARP 记录在 LAN
  • ss -tulpn:列出监听套接字和 PIDs 所以你可以确认服务实际绑定到期望端口
  • dig:解析 DNS 记录验证客户端将连接确切 IP
  • curl -I:只获取 HTTP(S) 头部检查状态码、重定向和缓存设置
  • tcpdump / tshark:捕获包所以你可以检查真实流量验证什么发送和接收
  • iperf3:测量两端主机之间端到端吞吐量分离带宽限制从应用问题
  • ssh:打开远程机器安全 shell 运行检查和应用修复直接
  • sftp:安全传输文件所以你可以拉日志或推送 artifacts 在事件期间
  • nmap:扫描开放端口和探测版本确认哪个服务暴露和响应

Hub、Switch 和 Router 解释

每个家庭和办公室网络依赖这三个设备,hub、switch 和 router,然而它们角色经常混合。

Hub(集线器)

  • 操作在 Layer 1(物理层)
  • 最简单三个
  • 不理解地址或数据类型
  • 当包到达,它简单广播到每个连接设备
  • 创建一个碰撞域
  • 所有设备竞争相同带宽
  • 使 hub 低效在现代网络

Switch(交换机)

  • 工作在 Layer 2(数据链路层)
  • 学习 MAC 地址并转发帧只到正确目的地设备
  • 交换机上每个端口作为自己碰撞域
  • 提高效率并加速通信在 LAN 内

Router(路由器)

  • 操作在 Layer 3(网络层)
  • 基于 IP 地址路由包
  • 连接不同网络一起,例如,你家网络到互联网
  • 每个路由器接口形成单独广播域
  • 保持本地和外部流量隔离

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP194: Evolution of HTTP

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。