对netty5支持HTTP协议的代码简析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对netty5支持HTTP协议的代码简析相关的知识,希望对你有一定的参考价值。

  前段时间,为提高直播时用户体验,所在事业部计划做一个用户带宽统计系统,用于统计直播时用户终端(客户端、浏览器)定时上报的频道带宽等数据,并根据数据进行各项指标分析,最终采取采取措施提升直播质量。这个任务落在我头上,我先对系统的并发量做了个调查,结果就是系统需要支持10W+每秒的并发量。

  为简化用户终端的开发工作(越复杂就越容易出错),决定使用 HTTP 作为数据上报协议。虽然数据接收系统是个 HTTP 服务器,但显然这并不是个 WEB 应用,因此无需使用 TOMCAT 等提供 WEB 容器。鉴于 netty 的多线程模型以及其对 HTTP 协议的良好支持,最终我决定使用 netty + HTTP1.1 来实现数据接收系统。在未经过任何优化的情况下我对 netty + HTTP1.1 的架构进行了性能测试,并与基于 TOMCAT 的 HTTP 服务进行了对比,结果还是让我非常满意的。(关于性能测试细节后续整理后补上)

  由于种种原因,用户带宽统计系统目前并未进入排期开发阶段,而我也在这段时间对 netty 的 HTTP 支持进行了简单的实践,实现了一些很基础的功能(暂时也不打算实现一个很完善功能的netty HTTP服务端,有兴趣的朋友可以自己去实现更高级的用法),藉以此梳理下 netty 支持 HTTP 协议的源码。

  该服务端基于 netty5 和 HTTP1.1,简单实现以下功能:

  • HTTP GET 请求解析与响应
  • HTTP POST 请求解析与响应,目前提供 application/json、application/x-www-form-urlencoded、multipart/form-data 三种常见 Content-Type 的 message body 解析(可自行扩展)
  • 作为服务端接收浏览器文件上传及保存(multipart/form-data)

 

以上是关于对netty5支持HTTP协议的代码简析的主要内容,如果未能解决你的问题,请参考以下文章

linux搭建svn支持svn协议和http协议

HTTP协议和防盗链

[网络] SOCKET, TCP/UDP, HTTP, FTP

SOCKET, TCP/UDP, HTTP, FTP 浅析

QUIC/HTTP3 协议简析

QUIC/HTTP3 协议简析