02 HTTP框架学习 | 青训营笔记

76 阅读3分钟

盖尔定律:一个切实可行的复杂系统必须是从一个切实可行的简单系统演化而来的。从头开始设计的复杂系统往往不切实可行,也无法通过修补来让它切实可行,只能重新开始,从一个简单系统开始。

盖尔定律的目的是防止过度设计和过早优化,鼓励从小规模和简单功能开始,然后逐步扩展和完善,以适应不断变化的需求和环境。

HTTP协议简介

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

为什么需要协议

协议是一种规则,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。协议可以让不同的设备、软件、系统之间进行通信和交互,保证数据的正确传输和处理。

协议的请求流程

image.png

HTTP的请求流程

HTTP的请求流程是指客户端和服务器之间通过HTTP协议进行数据交换的过程,一般可以分为以下几个步骤:

  1. 客户端向服务器发送一个HTTP请求报文,包含请求方法、请求地址、请求头和请求体等信息。
  2. 服务器接收到客户端的请求报文,根据请求方法和请求地址,查找对应的资源,并生成一个HTTP响应报文,包含状态码、响应头和响应体等信息。
  3. 服务器将响应报文发送回客户端,客户端解析响应报文,根据状态码和响应头,判断是否成功获取资源,并根据响应体的内容类型,进行相应的处理或显示。

三代HTTP的不足与展望

HTTP1

  • 队头阻塞
  • 传输效率低
  • 明文传输不安全

HTTP2

  • 多路复用
  • 头部压缩
  • 二进制协议

QUIC

  • 基于UDP实现
  • 解决队头阻塞
  • 加密减少握手次数
  • 支持快速启动

HTTP框架分层设计的优势与劣势

HTTP框架要做分层设计的原因是为了提高系统的可维护性、可扩展性、可复用性和可测试性1。分层设计的优势和劣势如下:

优势:

  1. 分层设计可以简化系统的设计和实现,让不同的层次专注于自己的功能,降低了系统的复杂度。
  2. 分层设计可以提高系统的扩展性,通过定义清晰的接口,可以在不影响其他层次的情况下,增加或替换某一层次的实现。
  3. 分层设计可以提高系统的复用性,通过抽象出通用的功能,可以在不同的场景下重用某一层次的代码。
  4. 分层设计可以提高系统的测试性,通过隔离不同的层次,可以方便地对每一层次进行单元测试或集成测试。

劣势:

  1. 分层设计可能会增加系统的开发成本和时间,因为需要定义和维护多个层次之间的接口和协议。
  2. 分层设计可能会降低系统的性能,因为需要在不同的层次之间进行数据传递和转换。
  3. 分层设计可能会导致系统的冗余,因为某些功能可能在不同的层次中重复实现或调用。