后端笔记 | http

43 阅读2分钟

http:

定义:超文本传输协议

协议里面有什么:

1.请求行:

方法名

URL

协议版本

1.状态行

协议版本

状态码

状态码描述

2.请求头,状态头
3.请求体,响应体

不足:

http1:

队头阻塞

传输效率低

明文传输不安全

http2:

多路复用

头部压缩

二进制协议

QUIC:

基于UDP实现

解决队头阻塞

加密减少握手次数

支持快速启动

路由设计

image-20241111150735184

最简单的一种方法:

mapstirng用map存储

更好一点的方法就是前缀匹配树:就是一颗树,然后逐渐往下补全部分,匹配完成也就是走到叶节点就是匹配完成了

image-20241111151215864

如何匹配http方法:

外层的map:最外层根据method进行初步筛选

image-20241111151405867

如何实现添加多处理函数

在每个节点上使用一个list存储

就比如既要a信息,又要b信息,就可以这样:

image-20241111151531833

网络层设计:

BIO:

它的设计模式就是一直等等到你收集到足够的数据为止,都要占用的你这个客服,别人不能使用

NIO:

相当于看到你收集到了足够的信息才会给你打客服的电话

路由设计

  1. 最简单的路由设计

    • 使用 map[string]Handler 存储路由和处理器。

    • 示例

  2. 前缀匹配树

    • 使用前缀树(Trie)进行路由匹配,逐步向下匹配路径。

    • 示例

匹配HTTP方法

  1. 外层的map

    • 最外层根据HTTP方法进行初步筛选。

    • 示例

添加多处理函数

  1. 在每个节点上使用一个列表存储

    • 示例

网络层设计

  1. BIO(Blocking I/O)

    • 同步阻塞:每个请求都需要一个独立的线程处理,直到处理完成。
    • 缺点:资源消耗大,处理大量并发请求时性能低下。
  2. NIO(Non-blocking I/O)

    • 异步非阻塞:使用事件驱动模型,一个线程可以处理多个请求。
    • 优点:资源利用率高,适合处理大量并发请求。

    示例