[Netty在Apache ServiceComb] 中的实践问题答疑

Posted Netty之家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Netty在Apache ServiceComb] 中的实践问题答疑相关的知识,希望对你有一定的参考价值。

11月29日 19:30-20:30 在华为云视界举办了一场《Netty和Vert.x在Apache顶级项目ServiceComb中的应用》直播,线上听众提了很多关于Netty实践相关的问题,由于线上互动时间有限,很多问题没有在线答疑,现将典型问题整理出来,供大家参考。


1、问题1:Netty和Mina有哪些区别?公司的老项目是基于Mina构建的,有必要迁移到Netty吗?


答复:

1)两者相同点:

  • 都是一个高性能的NIO通信框架,历史上两者有一些渊源

  • 都提供了编解解码扩展机制和协议定制能力,可以方便的构建各种协议栈


2)两者差异:

  • 功能差异,相比较而言,Netty的功能更丰富,提供了HTTP/2、MQTT,支持OpenSSL等

  • 社区活跃度差异,Netty目前应用的范围、版本发布速度等更胜一筹

  • 学习成本,Mina的API更加简洁和清晰,源码学习和维护成本更低一些,Netty的整个架构和代码更复杂一些,学习成本相对较高

    如果公司其它一些项目中使用到了Netty,或者需要使用HTTP/2等Netty独有的新特性,可以考虑切换到Netty;如果是遗留项目,功能上没太多新需求,没有重构的必要性,则不建议切换。


2、问题2:Netty的高性能体现在哪些方面?


答复:请参考2014年我在infoQ发表的文章《Netty系列之Netty高性能之道》:

https://www.infoq.cn/article/netty-high-performance


3、问题3:Netty HTTP协议栈与Tomcat的HTTP协议栈有什么区别?

答复:

1)Tomcat的HTTP协议栈是Servlet2/3.X等的一种实现,是基于Servlet实现的,Netty的HTTP协议栈是一种更轻量级实现方式

2)性能方面,Netty的HTTP协议栈性能更高,大家可以自己做下性能对比测试(Netty通常场景下性能要高2-3倍左右)

3)在非Web场景下,例如不涉及到JSP、JS、Servlet的解析、执行和Portal展示,纯后台的HTTP调用,则使用Netty性能更高、也更加轻量,可以方便的被各种第三方容器集成。反之,如果是web场景,则仍然需要运行到Web容器中,例如Tomcat、Jetty。


4、问题4:Netty内部都有哪些队列,如何防止内存泄漏?


答复:Netty内部主要有三个队列,分别如下:


1) 消息发送队列ChannelOutboundBuffer,它是个无界队列,需要通过高低水位 控制来保护消息积压,防止OOM

2) NioEventLoop中的taskQueue,用于执行I/O相关的Task,需要业务自己做保护,如果投递的任务过多,会导致NioEventLoop忙于处理Task而影响消息的读写,如果严重积压会导致OOM

3) NioEventLoop中的scheduledTaskQueue,用于执行I/O相关的定时任务,例如定时发送心跳消息。需要业务自己做保护,防止OOM

上述三个队列都可能会发生OOM,需要对它们的长度和容量做监控和告警,《Netty进阶之路》中有更详细的介绍和示例代码实现。


5、问题5:在IoT中使用到了Netty,请问有什么性能优化措施?


答复:Netty在IoT中的性能优化,主要有如下几点措施:

1)操作系统参数优化,主要包括:文件描述符、TCP/IP相关参数、多网卡队列和软中断

2)Netty性能调优,主要包括:线程数、心跳优化、接收和发送缓冲区、内存池、I/O和业务线程分离、线程绑定、连接池以及针对并发连接数的流控等

3)JVM相关参数优化:GC策略和参数调优等

在《Netty进阶之路》中,专门有一章详细介绍了如果在IoT中对Netty做性能优化。


一些朋友反映由于加班等原因没能完整的看直播,现将直播回放链接也分享给大家,点击左下角【阅读原文】观看完整版视频:



就有机会获得赠书,活动截止时间:2018年12月3号晚上 21:00点


以上是关于[Netty在Apache ServiceComb] 中的实践问题答疑的主要内容,如果未能解决你的问题,请参考以下文章

微服务直播Netty和Vert.x在Apache顶级项目ServiceComb中的应用

直播精彩回顾+开奖当Netty大咖遇到ServiceComb首席committer 唇枪舌战为哪般?

直播!《Netty进阶之路》作者ServiceComb社区首席Committer都来了!

谈谈微服务与Apache ServiceComb的前世今生 | Q 荐读

微服务开源项目ServiceComb

业内首个Apache微服务顶级项目 | 华为开源的ServiceComb毕业