
之前做的一个物联网项目,接触了各种各样的技术,虽然好多自己也做了一下记录,但是比较琐碎,现在打算把这几年的各种记录,和经验整合完善一下,发布在本公众号,应该会做几个系列吧,先从Netty这个系列开始,闲话到此为止。
官网上介绍:Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。
太官方了,比较难理解,简单总结一句话:
网络编程方面

以上结论是通过大量的商业项目认证的得到的,并不是我无脑吹。
我们常用的开源项目都使用了Netty,比如 Dubbo(阿里开源分布式服务框架)、RocketMQ(开源消息中间件)、Elasticsearch(分布式搜索引擎)、gRPC(谷歌开源的RPC框架)、Spark(开源大数据计算框架)...
假设你想了解上面开源项目的源码,或者一直致力于写CRUD(增删改查),想进阶一下,Netty都是不错的选择。是不是有点心动?
那么,Netty到底能用来干啥?
1、在分布式环境中,各节点之间需要进行远程调用,那么一个高性能的RPC框架是必不可少的,Netty正好满足这个需求,具体应用比如阿里的Dubbo、谷歌的gRPC等。
2、IM(即时通讯)系统,可以使用Netty实现一个类似微信可以聊天的IM(即时通讯)系统,好多IM系统都是基于Netty开发的。
3、游戏行业,目前越来越多的JAVA应用诞生,像账号登陆服务器、地图服务器这里需要高性能通信的需求,好多使用Netty来实现。
4、物联网领域、大数据领域 这两块后续会专门讲,之前就是用来做这一块的。
...
上面简单列举了Netty的一些应用场景,那么为啥大家都喜欢用Netty呢?优势在什么地方?
1、高性能,NIO、零拷贝、内存池管理内存、Reactor设计模式等都是Netty高性能的支撑,这一块也会逐个讲的。
2、封装好,封装了网络编程的底层细节,支持多种主流协议。但是可扩展性又很强,Netty框架也可以提升我们对编程能力的提升
3、使用简单,一方面是提供了一套统一API,另外主要业务处理都是串形化读写,不用考虑锁带来的复杂度和开销。
4、支撑好,框架商业成功案例多,开源社区活跃,很少有BUG,并且修复及时。
...
整个Netty的核心如下图(源自官网):

从图中也可以看到,上面讲优势的时候基本都提到了各组件,后续我会出一个系列文章来聊一下什么是NIO、TCP的拆包粘包、零拷贝、内存池、Reactor设计模式、流量整形等基础原理性的东西。
再做一个系列Netty的源码解读,聊一下Netty的架构,各核心组件的功能,比如Bootstrap、ServerBootstrap、Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipeline等。
最后会出一个实践系列,从零开始搭建netty服务器、客户端,以及逐步晋升,如何优化代码、调整服务器内核参数、JVM配置、压力测试、包含我的一些经验,踩的坑等等。
最后,学了Netty你能得到什么?
除了Netty相关的知识和一些编程思想外,再说个实际的:能够有进大厂,拿高薪的机会,业内好多著名的公司在招聘高级/资深Java工程师时基本上都要求熟练掌握、或熟悉Netty,可以去招聘网站上面看看。
简介就到此吧,本来打算贴一段服务端和客户端实现的代码。留在实践篇吧,另外有兴趣了解netty哪方面知识的小伙伴可以在下方留言,我可以提前整理更新这块的内容。
先立一个小目标,每周更新一篇,下一篇是NIO。




