对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)
时间: 2024-08-01 22:43:55

对netty5支持HTTP协议的代码简析的相关文章

最简单的基于FFMPEG的转码程序分析 +ffmpga代码简析(转 +总结)

模块:  libavcodec    - 编码解码器         libavdevice   - 输入输出设备的支持         libavfilter   - 视音频滤镜支持         libavformat   - 视音频等格式的解析         libavutil     - 工具库         libpostproc   - 后期效果处理         libswscale    - 图像颜色.尺寸转换 1. ffmpga代码简析 1.1 av_log() av_

OpenStack之虚机冷迁移代码简析

OpenStack之虚机冷迁移代码简析 前不久我们看了openstack的热迁移代码,并进行了简单的分析.真的,很简单的分析.现在天气凉了,为了应时令,再简析下虚机冷迁移的代码. 还是老样子,前端的Horizon代码就省去了,直接看后端的代码实现,前端通过请求的action进入到nova/api/openstack/compute/contrib/admin_actions.py文件.代码如下: 1 @wsgi.action('migrate') 2 def _migrate(self, req

uboot 2013.01 代码简析(1)开发板配置

u-boot下载地址:ftp://ftp.denx.de/pub/u-boot/u-boot-2013.01.01.tar.bz2 下载之后对该文件进行解压. 我试着分析smdk2410_config对应的代码执行流程,接触u-boot时间较短,有不周之处还请见谅. 通常执行u-boot第一步就是进行开发板的配置,而smdk2410的配置命令如下: make smdk2410_config 而Makefile中对应内容如下: 775 %_config:: unconfig 776 @$(MKCO

HTML代码简写法:Emmet和Haml

http://www.ruanyifeng.com/blog/2013/06/emmet_and_haml.html?bsh_bid=657901854 HTML代码简写法:Emmet和Haml 作者: 阮一峰 日期: 2013年6月11日 HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml两种,本文都将加以介绍. 这两种简写法,功能相近,各有特点

蓝牙简单配对(Simple Pairing)协议及代码流程简述

kangear注: 文章转自:http://blog.csdn.net/myxmu/article/details/12217135 原文把图给搞丢了,但是文章太好了,这个时候我就发挥多年的Google和人脉关系根据链接找到了,补上图(这个图是MTK内部用图). [DESCRIPTION] 在BT2.1及之后版本,蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式.这种新的配对方式操作更为简单.安全性也更强.目前市面上大部分

让Asp.net mvc WebAPI 支持OData协议进行分页查询操作

这是我在用Asp.net mvc WebAPI 支持 OData协议 做分页查询服务时的 个人拙笔. 代码已经开发到oschina上.有兴趣的朋友可以看看,欢迎大家指出不足之处. 看过了园子里的几篇关于ASP.NET MVC WebAPI 支持OData协议的文章,很受启发. 但是对于OData协议下对数据的分页查询,确实没有找到让我满意的东西,可能是个人就这脾气.不喜欢复杂. 对于在 WebAPI 支持OData协议,好处不多讲了,反正,我个人是非常乐意用它来做服务接口之类的. 这篇笔记的主题

关于OkHttp–支持SPDY协议的高效HTTP库 com.squareup.okhttp

转载:http://liuzhichao.com/p/1707.html OkHttp–支持SPDY协议的高效HTTP库 柳志超博客 » Program » Andriod » OkHttp–支持SPDY协议的高效HTTP库 posted in Andriod, Life on 2013/07/16 by liuzc Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时

OkHttp在4.4及以下不支持TLS协议的解决方法

在做超理论坛app的过程中,遇到许多用户反馈在他们的手机上客户端不能访问网络,我问了他们的手机型号和Android系统版本,全部是5.0以下的,之后我自己运行API19(4.4)的Android模拟器,也遇到了同样的错误. 错误信息如下: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x79f145b0: Failure in SSL lib

我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第一篇)

OData协议.多么牛B的技术. 传统的分页写习惯了,最近项目中,用到了 Asp.net WebAPI 2.0来做数据交互接口.至于为什么要使用WebAPI,我想只要是对OData协议有了解的朋友.只要说到WebAPI都会想到这个,如果你想对它有更多的深入了解.可以移步博客园(张善友大师)的介绍. URL(http://www.cnblogs.com/shanyou/archive/2010/03/26/1697316.html) 微软 5.5.2.0 的 System.Web.OData.dl