从零开始学netty

网友投稿 498 2022-11-13

从零开始学netty

从零开始学netty

Netty概述: 1、netty是基于Java NIO的网络应用框架,client-server框架 2、Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持, 作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的, 通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 3、作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用, 一些业界著名的开源组件也基于Netty的NIO框架构建。

Netty创建步骤:

NIO通讯服务端步骤: 1、创建ServerSocketChannel,为它配置非阻塞模式 2、绑定监听,配置TCP参数,录入backlog大小等 3、创建一个独立的IO线程,用于轮询多路复用器Selector 4、创建Selector,将之前的ServerSocketChannel注册到Selector上,并设置监听标识位SelectionKey.ACCEPT 5、启动IO线程,在循环体中执行Selector.select()方法,轮询就绪的通道 6、当轮询到处于就绪的通道时,需要进行判断操作位,如果是ACCEPT状态,说明是新的客户端介入,则调用accept方法接受新的客户端。 7、设置新接入客户端的一些参数,并将其通道继续注册到Selector之中。设置监听标识等 8、如果轮询的通道操作位是READ,则进行读取,构造Buffer对象等 9、更细节的还有数据没发送完成继续发送的问题

Netty实现通讯的步骤: 1、创建两个NIO线程组,一个专门用来网络事件处理(接受客户端连接),另一个则进行网络通讯读写 2、创建一个ServerBootstrap对象,配置Netty的一系列参数,例如接受传入数据的缓存大小等。 3、创建一个实际处理数据的类ChannelInitializer,进行初始化的准备工作,比如设置传入数据的字符集,格式,实现实际处理数据的接口。 4、绑定端口,执行同步阻塞方法等待服务器启动即可。

当对于NIO模型,netty简单、健壮、性能稳定,而且这几步都是模板式开发,以后可以直接用,开发只需专注实际处理数据类的实现。 Netty最佳实践(数据通讯、心跳检测)

netty服务最好可以单独作为一个项目,当然也可以与web项目集成在一起发布到tomcat, 这样好处是可以用到web项目中的service方法,但是web项目8080关闭,netty监听的端口号也关闭了 所以netty可以打成jar包运行,当然如果要用到service层的代码,也可以将service层的代码打成jar包 给netty业务类使用。

netty通讯的方式: ①使用长连接通道不断开的形式进行通信,也就是服务器和客户端的通道一直处于开启状态,如果服务器的 性能比较好,而且客户端的数量也不多的情况下,可以考虑这种方式 ②一次性批量提交数据,采用短连接的方式,也就是我们把数据保存在本地临时缓冲区或者临时表中, 当达到临界值时进行一次性批量提交,又或者根据定时任务轮询提交,这种情况下弊端是做不到 实时性传输,在实时性要求不高的程序中可以采用 ③采用一种特殊的长连接,在指定某一段时间之内,服务端和某台客户端没有任何通讯,则断开连接, 下次如果客户端要向服务端发送数据时,再次建立连接。

但有两个因素要考虑:

1、如何在超时(即服务端和客户端没有任何通信)后关闭通道?关闭后如何再次连接? 2、客户端宕机,无需考虑,下次客户端重启后可以与服务端建立连接,但是服务器宕机怎么办?

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何监控海外服务器性能
下一篇:四种常见的post请求中的参数形式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~