Netty初探

匠心零度 转载请注明原创出处,谢谢!编程

说在前面

为何咱们须要学习netty?谈谈本身的见解,因为本人水平有限,若是有那里不对,但愿各位大佬积极指出,欢迎在留言区进行评论交流、探讨。缓存

因为移动互联网的爆发性的增加,带来了不少机遇与挑战,其中一项就是把有些http协议调用修改成基于TCP自定义协议方式的长链接调用了,让我想起来了一句话:天下武功无坚不破 惟快不破。,全部的出发点都是为了快,而且如今不少互联网上面的项目好比Dubbo、Hadoop系列,MQ等都在使用netty了,若是没有使用到这些使用netty的产品,须要实现通讯使用socket的确也能够,可是实现复杂容易有bug。网络

主题

  • 为何须要学习netty?
  • netty简介。
  • 我打算如何学习。

为何须要学习netty?

说说netty以前,咱们先看看使用jdk原生nio编程的一些问题:多线程

  • NIO的类库和API繁杂,使用麻烦,你须要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。
  • 须要具有其余的额外技能作铺垫,例如熟悉Java多线程编程。这是由于NIO编程涉及到Reactor模式,你必须对多线程和网路编程很是熟悉,才能编写出高质量的NIO程序。
  • 可靠性能力补齐,工做量和难度都很是大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等问题,NIO编程的特色是功能开发相对容易,可是可靠性能力补齐的工做量和难度都很是大。
  • JDK NIO的BUG,例如臭名昭著的epoll bug,它会致使Selector空轮询,最终致使CPU 100%。官方声称在JDK 1.6版本的update18修复了该问题,可是直到JDK 1.7版本该问题仍旧存在,只不过该BUG发生几率下降了一些而已,它并无获得根本性解决。

netty是一个优秀的框架,为何咱们还要学习呢?并发

  • 你只有熟悉才能够更好的使用。
  • 你不想看看为何netty这么优秀的? 怎么解决一些原生nio的问题的?
  • 方便往后的维护、扩展、定制等。
  • 如何考虑提升并发性能,如何把线程玩转的?
    等等。

netty简介

Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是数一数二的,它已经获得成百上千的商用项目验证,例如Hadoop的RPC框架Avro就使用了Netty做为底层通讯框架,其余还有业界主流的RPC框架,也使用Netty来构建高性能的异步通讯能力。框架

经过对Netty的分析,咱们将它的优势总结以下。异步

  • API使用简单,开发门槛低;
  • 功能强大,预置了多种编解码功能,支持多种主流协议;
  • 定制能力强,能够经过ChannelHandler对通讯框架进行灵活地扩展;
  • 性能高,经过与其余业界主流的NIO框架对比,Netty的综合性能最优;
  • 成熟、稳定,Netty修复了已经发现的全部JDK NIO BUG,业务开发人员不须要再为NIO的BUG而烦恼;
  • 社区活跃,版本迭代周期短,发现的BUG能够被及时修复,同时,更多的新功能会加入;
  • 经历了大规模的商业应用考验,质量获得验证。Netty在互联网、大数据、网络游戏、企业应用、电信软件等众多行业已经获得了成功商用,证实它已经彻底可以知足不一样行业的商业应用了。

正是由于这些优势,Netty逐渐成为了Java NIO编程的首选框架。socket

我打算如何学习

因为上面说的一些缘由,本身也准备学习下netty,我准备从如下几方面进行学习,后续在慢慢在文章里面展开怎么学习。高并发

  • Netty权威指南(买了本书准备系统学习下,目前真正看……)。
  • 看牛逼人物的netty博客(好比我狼哥netty系列博客)。
  • 准备基于netty4.x系列源码看看。

结束语

上面的一些都是零度准备学习netty的一些思考和理解,若是有那里不对欢迎留言区进行留言讨论。oop


若是读完以为有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

相关文章
相关标签/搜索