1. 首页 > 电脑 >

netty中文文档 netty的书

netty vs mina netty和mina的区别

以下只是个人实践。可能会有其它办法解决。

Netty和mian比较报告

netty中文文档 netty的书netty中文文档 netty的书


一、数据测试报告

简述:1、启动,等到客户端接入

2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.

3、当服务端接收到链接,次接收到数据后,记录当前时间

4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间

5、当客户端接收数据量超过50m,记录当前时间。终止链接。

6、服务端和客户端得到执行时间。

netty

mina

client

server

client

5076

5349

5051

5236

5375

5490

4976

第三次

5521

5280

4953

5053

5367

5508

5214

备注:当传输量达到100m时,mina抛异常:ja.lang.OutOfMemoryError: Ja heap space

结果:mina效率更快,netty性能更稳。

二、codec和handler比较

1、Codec比较

mina编码(codec)创建实例可有以下选择:

1) 每一次接收到的数据创建一次codec实例

2) 为所有client链接创建一次codec实例

netty编码创建实例可有以下选择:

1) 四、UDP协议传输 每一次链接创建一次codec实例

2) 为所有client链接创建一次codec实例

2、Handler比较

Mina的handler创建实例可有以下选择:

1) 为所有client链接创建一次codec实例

Netty编码创建实例可有以下选择:

1) 每一次链接创建一次handler实例

2) 为所有client链接创建一次handler实例

三、文档比较

1、netty和mina文档都比较多,但mina文档不齐全,netty文档比较清晰

1、 netty将UDP无连接的特性暴露出来;而mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,Netty需要手动处理顺序、丢包检测、重发等等。

五、协议支持

Netty架构:

Mina架构

没有找到,但应有类似技术支持。

网上评价:

1. mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降;netty解决了这个设计问题。

2. netty基本的架构和mina几乎完全一样,使用时候思想上不多;但是有很多细节的改进(比如说mina的IoSession每次读写完要调用flip(),netty的channel则不用,并支持zero copy)。

3. netty比mina使用起来更简单。

4. 关于UDP链接:mina把TCP和UDP一样当"有连接"的处理,一个UDP请求会按照address产生一个新的 IoSession,过期时间是1分钟,这样做的好处是显然的,但是对于有性能要求的项目就不好了,对一个无连接的东西cache 1分钟,大多数时候可能是白cache了,做无用功。 Mina这样做可能还有个初衷是连续解码用的,比如一个包太大了,分了两次传输;但是这样的设计应该是udp大忌了。

netty channel不关闭会有什么问题

4980

netty是一个Ja nio的网络框架,它屏蔽了底层网络细节,并且非常的高效。如果你是最近要开发一个消息平台,使用netty不过了。

一个好的消息平台有很多需要注意的细节和应该遵守的约定准则。其中平台的优雅关闭必不可少。这个主要是避免消息丢失。那么如何做到netty的优雅关闭呢?

在netty中,接受连接请求和对请求进行业务处理分别有两个线程执行器bossExecutor 和 workerExecutor,除了关闭这两个外还需要关闭channel。

1. unbind netty创建的所有channel。channel.unbind()

2. close netty创建的所有channel。channel.close()

3. shutdown netty的线程执行器。factory.releaseExternalResources()

对于netty生成的channel,可以使用ChannelGroup管理,很方便。

具体的代码如下:(可以参看ChannelGroup的注释)

[ja] view plain copy

ChannelGroup allChannels = new DefaultChannelGroup();

public static void main(String[] args) throws Exception {

Bootstrap b = new Bootstrap(..);

...

// Start the server

b.getPipeline().addLast("handler", new MyHandler());

Channel serverChannel = b.bind(..);

allChannels.add(serverChannel);

... Wait until the shutdown signal reception ...

// Close the serverChannel and then all accepted connections.

allChannels.close().awaitUninterruptibly();

b.releaseExternalResources();

@Overrnetty文档说优雅关闭需要三步:ide

public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {

// Add all open channels to the global group so that they are

// closed on shutdown.

allChannels.add(e.getChannel());

}}

netty channel不关闭会有什么问题

}public class MyHandler extends SimpleChannelUpstreamHandler {第四次

netty是一个Ja nio的网络框架,它屏蔽了底层网络细节,并且非常的高效。如果你是最近要开发一个消息平台,使用netty不过了。

一个好的消息平台有很多需要注意的细节和应该遵守的约定准则。其中平台的优雅关闭必不可少。这个主要是避免消息丢失。那么如何做到netty的优雅关闭呢?

在netty中,接受连接请求和对请求进行业务处理分别有两个线程执行器bossExecutor 和 workerExecutor,除了关闭这两个外还需要关闭channel。

1. unbind netty创建的所有channel。channel.unbind()

2. close netty创建的所有channel。channel.close()

3. shutdown netty的线程执行器。factory.releaseExternalResources()

对于netty生成的channel,可以使用ChannelGroup管理,很方便。

具体的代码如下:(可以参看ChannelGroup的注释)

[ja] view plain copy

ChannelGroup allChannels = new DefaultChannelGroup();

public static void main(String[] args) throws Exception {

Bootstrap b = new Bootstrap(..);

...

// Start the server

b.getPipeline().addLast("handler", new MyHandler());

Channel serverChannel = b.bind(..);

allChannels.add(serverChannel);

... Wait until the shutdown signal reception ...

// Close the serverChannel and then all accepted connections.

allChannels.close().awaitUninterruptibly();

b.releaseExternalResources();

@Override

public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {

// Add all open channels to the global group so that they are

// closed on shutdown.

allChannels.add(e.getChannel());

}}

netty vs mina netty和mina的区别

第二次

Ne4902tty和mian比较报告

一、数据测试报告

简述:1、启动,等到客户端接入

2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.

3、当服务端接收到链接,次接收到数据后,记录当前时间

4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间

5、当客户端接收数据量超过50m,记录当前时间。终止链接。

6、服务端和客户端得到执行时间。

netty

mina

client

server

client

5076

5349

5051

5236

5375

5490

4976

第三次

5521

5280

4953

5053

5367

5508

5214

备注:当传输量达到100m时,mina抛异常:ja.lang.OutOfMemoryError: Ja heap space

结果:mina效率更快,netty性能更稳。

二、codec和handler比较

1、Codec比较

mina编码(codec)创建实例可有以下选择:

1) 每一次接收到的数据创建一次codec实例

2) 为所有client链接创建一次codec实例

netty编码创建实例可有以下选择:

1) 每一次链接创建一次codec实例

2) 为所有client链接创建一次codec实例

2、Handler比较

Mina的handler创建实例可有以下选择:

1) 为所有client链接创建一次codec实例

Netty编码创建实例可有以下选择:

1) 每一次链接创建一次handler实例

2) 为所有client链接创建一次handler实例

三、文档比较

1、netty和mina文档都比较多,但mina文档不齐全,netty文档比较清晰

1、 netty将UDP无连接的特性暴露出来;而mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,Netty需要手动处理顺序、丢包检测、重发等等。

五、协议支持

Netty架构:

Mina架构

没有找到,但应有类似技术支持。

网上评价:

1. mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降;netty解决了这个设计问题。

2. netty基本的架构和mina几乎完全一样,使用时候思想上不多;但是有很多细节的改进(比如说mina的IoSession每次读写完要调用flip(),netty的channel则不用,并支持zero copy)。

3. netty比mina使用起来更简单。

4. 关于UDP链接:mina把TCP和UDP一样当"有连接"的处理,一个UDP请求会按照address产生一个新的 IoSession,过期时间是1分钟,这样做的好处是显然的,但是对于有性能要求的项目就不好了,对一个无连接的东西cache 1分钟,大多数时候可能是白cache了,做无用功。 Mina这样做可能还有个初衷是连续解码用的,比如一个包太大了,分了两次传输;但是这样的设计应该是udp大忌了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息