我和Netty的故事

简介:

本文首发于InfoQ架构师杂志。

还在上学的时候,我特别好奇QQ是怎么实现的,为什么我一发消息我的好友马上就能收到且基本没有延迟,它的原理是什么?大三的时候,我学习了Java语言,接触到了Socket编程,不知天高地厚的我当时居然想自己实现个简易QQ,和几个朋友做了技术评估后觉得这个事好像不是那么难,紧接着我们就用Swing以及一些Socket编程知识完成了一个简易的局域网QQ,虽然功能不是那么的稳定,但基本上还是可以实现私聊、群聊、文件传输、抖屏功能。这也许是我第一次接触网络通信,核心功能部分使用了同步I/O的Socket类库。

参加工作后,公司使用的RPC框架是Hessian,Hessian是一款基于HTTP协议的RPC框架,采用的是二进制RPC协议,但是在Java中,Hessian的服务端需要使用Tomcat之类的容器,而它们的性能总是那么的不如人意。因为那会公司使用的MVC框架是Play,所以我很早就接触到了Netty,它的高性能、高可靠性的特性早有耳闻。看了Play框架中Netty部分的代码以及Netty的官方案例后,我用Netty重新实现了Hessian的服务端,于是一款构建于Netty和Hessian基础上的高性能的RPC框架诞生了,我取名叫Hetty(Hessian+Netty)。简单的性能测试之后,我发现Hetty的性能是之前的4~5倍,这次之后,我对Netty有了更深入的了解,使用Netty可以更简单的开发出高性能、可扩展、易读易维护的系统。

再到后来,我去了一家游戏公司,发现他们在服务器端大量使用了Netty框架,从来没有想到Netty在游戏行业已经得到了这么大范围的使用。不过再仔细想想,这一点都不惊奇,游戏服务器端,除了大量的业务逻辑外,其它部分其实都在玩NIO,而Netty作为一款成熟的异步NIO通信框架,它的性能、扩展性、稳定性、使用难度都得到了业界的肯定。那Netty有哪些优点了?我认为有以下几点:

  1. 文档齐全,社区活跃,API简单,案例很多。
  2. 支持多种协议,如HTTP、FTP、SMTP。
  3. 性能高,易扩展。
  4. 周期性的版本迭代,成熟且稳定。

这么一看,工作生活中处处与Netty为伴,其实是Netty见证了我的成长,希望好的框架能让更多的人收益!

相关文章
|
14天前
|
缓存 网络协议 算法
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析
152 0
|
12天前
|
编解码 网络协议 Java
大白话聊聊Netty
随着云计算、大数据和物联网的发展,Netty的潜力将进一步释放。作者通过本文跟大家聊聊Netty是什么?为什么选Netty?以及它的运行原理。
|
14天前
|
消息中间件 缓存 Java
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty
109 0
|
10月前
|
存储 前端开发 网络协议
Netty入门到超神系列-Netty入门&核心类
我们需要有GoosGroup来循环监听请求事件,需要有WorkGroup来处理事件,而这两个角色都通过来就NioEventLoopGroup来进行事件监听,我们还需要创建事件处理器ChannelHandler,通过 Channel的ChannelPipeline把ChannelHandler进行关联。
96 0
|
14天前
|
缓存 Java 数据挖掘
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty(一)
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty
101 0
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty(一)
|
14天前
|
消息中间件 缓存 Java
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty(二)
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty
130 1
《跟闪电侠学Netty》阅读笔记 - 开篇入门Netty(二)
|
14天前
|
设计模式 网络协议 算法
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析(一)
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析(一)
97 1
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析(一)
|
14天前
|
缓存 网络协议 算法
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析(二)
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析
66 1
|
10月前
|
监控 网络协议 Dubbo
Netty入门到超神系列-Netty介绍和线程模型
经过前面章节的学习你应该能感受到NIO的问题,就是类比较多,方法也比较多,而且复杂,开发工作量和难度都非常大,还需要考虑网络问题、数据丢包和异常流的处理等等。 NIO是底层API,它的实现依赖于操作系统针对IO操作的APIs,使用NIO会经常发现代码在Linux上正常运行,但在Windows上就会出现问题。JDK的NIO还有一个Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU 100%。 总之直接使用Java NIO会面临一系列的问题,Netty的其出现就是为了解决NIO的不足
96 0
|
XML 缓存 JSON
【Netty 从成神到升仙系列 四】让我们一起探索 Netty 中的零拷贝
【Netty 从成神到升仙系列 四】让我们一起探索 Netty 中的零拷贝
【Netty 从成神到升仙系列 四】让我们一起探索 Netty 中的零拷贝

热门文章

最新文章