在我之前从事的一个物联网项目中,接触到了各种技术。 虽然很多人自己做了记录,但是比较麻烦。 公众号应该可以出几个系列,先从Netty系列开始,闲话到此结束。
官网介绍:Netty是一个异步风暴驱动的网络应用框架,用于快速开发可维护的高性能合约服务器和客户端。
太官方了,很难理解。 我们用一句话来概括:
网络编程
以上推论是通过大量商业项目认证得到的,并非我无脑吹。
我们常用的开源项目都是使用Netty的,比如Dubbo(阿里开源分布式服务框架)、RocketMQ(开源消息中间件)、Elasticsearch(分布式搜索引擎)、gRPC(Google开源RPC框架)、Spark(开源)大数据估计框架)...
假设你想了解里面开源项目的源码,或者仍然致力于编写CRUD(增删改查),并且想进阶,Netty是一个不错的选择。 你兴奋吗?
那么,Netty 能做什么呢?
1、分布式环境中,节点之间需要进行远程调用,因此高性能的RPC框架必不可少,而Netty正好满足了这一需求。 具体应用如阿里的Dubbo、谷歌的gRPC等。
2、IM(Instant Messaging)系统,可以使用Netty实现一个类似于Momo的可以聊天的IM(Instant Messaging)系统。 很多IM系统都是基于Netty开发的。
3、在游戏行业,越来越多的JAVA应用正在诞生,比如需要高性能通信的账号登录服务器、地图服务器等,其中很多都是使用Netty来实现的。
4、后续会专门讨论物联网领域和大数据领域,之前是用来做这个的。
...
上面简单列出了Netty的一些应用场景,那么为什么大家都喜欢使用Netty呢? 优势在哪里?
1、高性能,NIO、零拷贝、内存池管理显存、Reactor设计模式等都是Netty高性能的支撑,这一点就一一讨论。
2、封装性好,封装了网络编程的底层细节,支持多种主流合约。但是扩展性非常强,Netty框架还可以提高我们的编程能力
3、使用方便。 一方面,它提供了统一的API。 另外,主要的业务处理是串行化的读写,没有考虑锁带来的复杂度和开销。
4.支持良好,框架业务成功案例较多,开源社区活跃,bug少,修复及时。
...
整个Netty的核心如下(来自官网):
从图中也可以看出,上面讲优点的时候基本上都提到了各个组件。 我会发布一系列文章来谈谈NIO、TCP拆包和粘连、零拷贝、内存池和Reactor。 设计模式和流量整形等基本原则。
然后做一系列Netty源码分析,讲讲Netty的架构netty源码游戏netty源码游戏,各个核心组件的功能,比如Bootstrap、ServerBootstrap、Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipeline等。
最后会有一个实践系列,从零开始搭建netty服务器、客户端,逐步推广,如何优化代码,调整服务器内核参数,JVM配置,压力测试,包括我的一些经验,陷阱等等。
最后,学习Netty后你能得到什么?
除了Netty相关的知识和一些编程思路之外,我来说说一个实用的:想要有机会进入大厂并拿高薪,行业内很多知名公司基本上都要求熟练或熟悉中级/高级Java工程师,当他们紧急招聘中级/高级Java工程师时。 Netty,你可以去紧急招聘网站看看。
介绍就这些了,我将发布一段由服务器和客户端实现的代码。 让我们留在实践章节。 另外,有兴趣了解netty哪些方面的知识的朋友可以在下面留言,我可以提前整理更新这块的内容。