http:
定义:超文本传输协议
协议里面有什么:
1.请求行:
方法名
URL
协议版本
1.状态行
协议版本
状态码
状态码描述
2.请求头,状态头
3.请求体,响应体
不足:
http1:
队头阻塞
传输效率低
明文传输不安全
http2:
多路复用
头部压缩
二进制协议
QUIC:
基于UDP实现
解决队头阻塞
加密减少握手次数
支持快速启动
路由设计
最简单的一种方法:
mapstirng用map存储
更好一点的方法就是前缀匹配树:就是一颗树,然后逐渐往下补全部分,匹配完成也就是走到叶节点就是匹配完成了
如何匹配http方法:
外层的map:最外层根据method进行初步筛选
如何实现添加多处理函数
在每个节点上使用一个list存储
就比如既要a信息,又要b信息,就可以这样:
网络层设计:
BIO:
它的设计模式就是一直等等到你收集到足够的数据为止,都要占用的你这个客服,别人不能使用
NIO:
相当于看到你收集到了足够的信息才会给你打客服的电话
路由设计
-
最简单的路由设计:
-
使用
map[string]Handler存储路由和处理器。 -
示例
:
-
-
前缀匹配树:
-
使用前缀树(Trie)进行路由匹配,逐步向下匹配路径。
-
示例
:
-
匹配HTTP方法
-
外层的map
:
-
最外层根据HTTP方法进行初步筛选。
-
示例
:
-
添加多处理函数
-
在每个节点上使用一个列表存储
:
-
示例
:
-
网络层设计
-
BIO(Blocking I/O) :
- 同步阻塞:每个请求都需要一个独立的线程处理,直到处理完成。
- 缺点:资源消耗大,处理大量并发请求时性能低下。
-
NIO(Non-blocking I/O) :
- 异步非阻塞:使用事件驱动模型,一个线程可以处理多个请求。
- 优点:资源利用率高,适合处理大量并发请求。
示例: