HTTP框架总结 | 青训营笔记

68 阅读2分钟

写在前面

学习了http的基础知识以及http框架的设计以及为什么这样设计,接下来是对知识点的总结以及个人的一些思考

HTTP基础知识

HTTP是一种能够获取HTML这样的网络资源的协议,HTTP是无状态的、但是可以通过使用Cookie机制创建有状态的会话。

HTTP有一系列的请求头包括Accept、Age、Cookie等内容,这些字段协商了通信的双方应该遵守的一些基本的准则。HTTP还有一系列的请求方法比如CONNECT、DELETE、GET、HEAD等等通过这些方法可以实现客户端向服务端请求数据、发送数据、删除数据、建立隧道等等。HTTP的相应状态码也有很多,这些状态码代表了服务端给客户端的相应,一般比较常见的有200、404等等。

HTTP请求流程

HTTP的请求流程也是自上而下的,越靠近上层、抽象程度越高、业务性越强、有点计算机网络的自顶向下的味道,分为业务层、中间件层、路由层、协议编码解码层、传输层。

设计要点

HTTP框架的分层设计清晰明了、但在刚开始HTTP也并没有很复杂、也有着很多的缺陷、正是随着更新迭代、HTTP才会越来越好,整体框架也在向着高内聚、低耦合的方向发展。

业务层是最上层的业务,将接口直接暴露给用户,应该遵循接口命名清晰易懂、便捷好用的准则,提高用户的开发效率,避免不必要的麻烦。

中间件层应该照顾到用户的使用情况,对用户的透明度提高,同时中间件应该具有足够的鲁棒性,能够handle特殊的情况

路由层主要是路径解析,应该做到符合需求、性能优秀、能够快速响应

协议层和网络层的设计应该根据实际的需求选择适当的模型与接口

小结

HTTP的设计应该遵循很多原则,既要考虑到简洁性、易用性,又要考虑性能与安全,总的来说分层很大程度上对协议的整体处理更加合理、不同层有着不同层的重点。同时对于性能方面,个人的一点想法是buffer机制,buffer感觉像是一个永恒的主题,我们通过缓存比较常用的并且高速响应,把重点放在common case而不是corner case是很重要的。