我和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有哪些优点了?我认为有以下几点:
- 文档齐全,社区活跃,API简单,案例很多。
- 支持多种协议,如HTTP、FTP、SMTP。
- 性能高,易扩展。
- 周期性的版本迭代,成熟且稳定。
这么一看,工作生活中处处与Netty为伴,其实是Netty见证了我的成长,希望好的框架能让更多的人收益!
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 我和Netty的故事
蕾兄技术果然是牛逼杠杠的~!
这几个月刚用mina做了个手机在线课堂的项目,当时选择mina前也做了mina和netty的选择,很是纠结,最终也是选择了mina