HTTP 框架修炼之道2 | 青训营

60 阅读1分钟

02HTTP 框架的设计与实现

2.1 分层设计

image-20230605101212645

image-20230605101736372

2.2 应用层

和用户直接打交道的一层

image-20230605101926629

image-20230605102243361

2.3 中间件层设计

image-20230605102319134

请求一层一层从日志进入 业务逻辑(Biz Handler)

image-20230605102339893

image-20230605102543543

有中间件之后:

image-20230605102541029

image-20230605103038996

把预处理函数和后处理函数统一成Next();

调用下一个业务逻辑

image-20230605103152908

image-20230605103216564

image-20230605103319974

有没有其它实现中间件的方式

2.4 路由层设计

image-20230605104125441

image-20230605105727182

如何处理带参数的路由注册?(处理形如: /a/:id/b类型的路由)

用fullPath匹配参数

image-20230605110710195

Method对应Key

image-20230605110744652

如何做设计

image-20230605110808149

2.5 协议层设计

image-20230605110844514

image-20230605113424262

2.6 网络层

image-20230605114237056

Golang的标准库 Go net在用户态看就是典型的BIO

传入 byte 数组 返回n底层有多少数据,底层链接关闭等错误 返回给err

image-20230605124037165

2.7 总结

image-20230605124119814

03性能修炼之道

3.1 针对网络库的优化

image-20230605124514051

image-20230605124614174

看到这里 感觉有点难 下次再见!

04企业实践