码迷,mamicode.com
首页 > 其他好文 > 详细

service mesh初了解,remoting模块分析

时间:2020-07-12 16:18:00      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:定义   分组   height   rocketmq   http   -o   containe   package   view   

本文是继《RocketMQ remoting模块分析》后添加的一篇,针对Netty如何实现HTTP Server进行的调研。
一句话总结:Netty 提供的 ChannelHandler,可以直接用来处理 HTTP 和 HTTPS 协议,而不必编写自定义的编解码器。

图 11-2 和图 11-3 分别展示了生产和消费 HTTP 请求和 HTTP 响应的方法。


 
技术图片
image.png

一个 HTTP 请求/响应可能由多个数据部分组成,并且它总是以一 个 LastHttpContent 部分作为结束。FullHttpRequest 和 FullHttpResponse 消息是特 殊的子类型,分别代表了完整的请求和响应。所有类型的 HTTP 消息(FullHttpRequest、 LastHttpContent 以及代码清单 11-2 中展示的那些)都实现了 HttpObject 接口。

两种实现方式

方式一

(参考github项目)

 
技术图片
image.png

 

 
技术图片
image.png

方式二

(参考github项目1)
(参考github项目2)

在 ChannelInitializer 将 ChannelHandler 安装到 ChannelPipeline 中之后,你 便可以处理不同类型的 HttpObject 消息了。但是由于 HTTP 的请求和响应可能由许多部分组 成,因此你需要聚合它们以形成完整的消息。为了消除这项繁琐的任务,Netty 提供了一个聚合 器,它可以将多个消息部分合并为 FullHttpRequest 或者 FullHttpResponse 消息。通过 这样的方式,你将总是看到完整的消息内容。


 
技术图片
 


作者:运动书生
链接:https://www.jianshu.com/p/ef5da017b125
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

service mesh初了解,remoting模块分析

标签:定义   分组   height   rocketmq   http   -o   containe   package   view   

原文地址:https://www.cnblogs.com/jinr/p/13288475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!