HTTP 前端、客户端、后端通信协议
HTTP协议
是什么
hypertext transfer protocol 超文本 媒体资源
- 开始 结束
- 消息类型
有什么
- 请求行 / 状态行
- 方法名 GET HEAD
- URL
- 协议版本
- 协议版本
- 状态码
- 状态码描述
- 请求头 / 响应头
- 请求体 / 响应体
请求流程
- 业务层
- 服务治理层 / 中间件层
- 路由层
- 协议编码层
- 传输层
不足与展望
- HTTP1
- 队头阻塞
- 传输效率低,不支持多路复用
- 明文传输不安全
- HTTP2
- 多路复用
- 头部压缩
- 二进制协议
- QUIC
- 基于UDP实现
- 解决队头阻塞
- 加密减少握手次数
- 支持快速启动
HTTP框架的设计与实现
分层设计
专注性、扩展性、复用性 高内聚 低耦合 易用性 高扩展性 应用层 application - context request response handler middleware - recovery circuitbreak timeout access-log route - add find route-time route-group codec - websocket http1 quic http2 transport - netpoll go-net
common - 公共逻辑
应用层设计
- 提供合理的API
- 可理解性 - 命名
- 简单性
- 有效性
- 兼容性
- 可测性
- 可见性
中间件设计
- 需求 配合handler实现一个完整的请求处理生命周期 拥有预处理逻辑与后处理逻辑 可以注册多中间件 对上层模块用户逻辑模块已用
- 洋葱模型
- 日志
- metrics
- biz handler
- metrics
- 日志处理 。。。
- 日志