HTTP框架的实现与Hertz框架特点| 青训营

100 阅读2分钟

HTTP 协议是一种用于在互联网上交换数据的通信协议,它是基于 TCP/IP 协议的应用层协议。HTTP 协议的出现背景是为了解决在不同计算机之间共享文档的问题,最初是由蒂姆·伯纳斯-李(Tim Berners-Lee)在 1989 年提出的。HTTP 协议的内涵是定义了客户端和服务器之间的请求和响应的格式和规则,以及如何处理不同类型的数据,如文本、图片、音频、视频等。

在日常开发过程中,设计与实现 HTTP 框架的主要有如下四步:确定 HTTP 版本和方法, 设计请求和响应的格式,实现数据的编码和解码,处理错误和异常。

字节跳动则使用了自己设计开发的Hertz框架。Hertz 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp 、 gin 、 echo 的优势,并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点。 Hertz 的主要优势分为以下几点:

  • 高易用性:Hertz 提供简洁且灵活的 API,支持路由分组、中间件、参数绑定、参数校验、错误处理等常用功能,让开发者可以快速地构建 HTTP 服务。Hertz 还提供了丰富的文档和示例,方便开发者学习和使用。
  • 高性能:Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景相较于 go net,Hertz 在 QPS、时延上均具有一定优势。Hertz 还采用了零拷贝、对象池、字节缓冲等技术,减少了内存分配和垃圾回收的开销,提高了性能和稳定性。
  • 高扩展性:Hertz 采用分层设计,提供了较多的接口以及默认的扩展实现,用户也可以自行扩展。例如,用户可以自定义协议解析器、编解码器、网络层实现等。Hertz 还支持多协议,如 HTTP/1.1、ALPN 等,并且可以通过插件的方式为 Hertz 扩展更多协议支持。