第七次笔记|青训营

49 阅读2分钟

 

 

 

http协议:

终端——前端路由——页面——状态管理——API接口层

数据库——业务逻辑——后端路由——请求解析

——http请求

一、再谈http协议

http是超文本传输协议

图片、文档、视频——点击实现跳转

为什么需要协议:需要明确的边界:开始与结束

能够携带的信息:什么信息、消息类型:协议开始——协议元数据——text——协议结束

一个常见的http里有什么?

常见方法名:get,head,post,put,delete,connect,options,trace,patch;

请求行/状态行:方法名/url/协议版本;协议版本,状态码,状态码描述:状态码:1xx:信息类;2xx:成功;3xx:定向;4xx:客户端错误;5xx:服务端错误

请求头/响应头

请求体/响应体:

请求流程:业务层/服务治理层,中间件层/路由层——协议边(解码)层——传输层

不足与展望:

http1:队头阻塞;传输效率低;明文传输不安全;

http2:多路复用;头部压缩;二进制协议;

quic:基于udp实现;解决队头阻塞;加秘密减少握手次数;支持快速启动;

二、http框架的设计与实现 空结构体:使用空结构体节省内存——空结构体struct{}实例不占据任何的内存空间

可作为各种场景下的占位符使用:节省资源、空结构体本身具备很强的语义,即这里不需要任何值,仅作为占位符

实现set,可考虑用map代替

Atomic包:锁的实现是通过操作系统来实现,属于系统调用;atomic操作通过硬件实现,效率比锁高;sync.mutex应该用来保护一段逻辑,不仅仅用于保护一个变量;对于非数值操作,可以使用atomic.value,能承载一个interface{}

小结:避免常见的性能陷阱可以保证大部分程序的性能;普通应用代码,不要一味的追求程序的性能;越高级的性能优化手段越容易出问题;在满足正确可靠、简洁清晰的要求的前提下提高程序性能

性能优化分析工具:性能调优原则:要依靠数据而不是猜测;要定位最大瓶颈而不是细枝末节;不要过早、过度优化。

三、性能修炼之道

四、企业实践