netty vs mina netty和mina的区别
答案:2 悬赏:10 手机版
解决时间 2021-02-10 17:00
- 提问者网友:临风不自傲
- 2021-02-10 09:13
netty vs mina netty和mina的区别
最佳答案
- 五星知识达人网友:思契十里
- 2021-02-10 09:21
Netty和mian比较报告
一、数据测试报告
简述:1、启动服务器,等到客户端接入
2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.
3、当服务端接收到链接,第一次接收到数据后,记录当前时间
4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间
5、当客户端接收数据量超过50m,记录当前时间。终止链接。
6、服务端和客户端得到执行时间。
netty
mina
Server
client
server
client
第一次
5076
5349
5051
5236
第二次
5375
5490
4902
4976
第三次
5521
5280
4953
5053
第四次
5367
5508
4980
5214
备注:当传输量达到100m时,mina抛异常:java.lang.OutOfMemoryError: Java 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文档比较清晰
四、UDP协议传输
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大忌了。
一、数据测试报告
简述:1、启动服务器,等到客户端接入
2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.
3、当服务端接收到链接,第一次接收到数据后,记录当前时间
4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间
5、当客户端接收数据量超过50m,记录当前时间。终止链接。
6、服务端和客户端得到执行时间。
netty
mina
Server
client
server
client
第一次
5076
5349
5051
5236
第二次
5375
5490
4902
4976
第三次
5521
5280
4953
5053
第四次
5367
5508
4980
5214
备注:当传输量达到100m时,mina抛异常:java.lang.OutOfMemoryError: Java 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文档比较清晰
四、UDP协议传输
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大忌了。
全部回答
- 1楼网友:第幾種人
- 2021-02-10 10:10
哪个熟悉用哪个.netty是基于线程的完全非阻塞异步模型, 强依赖于linkedblockingqueue. 说不定未来会有一款基于完全无锁队列(例如disruptor)的io框架. netty比较烦心的是需要定义inbound,outbound的handler, 当信道active的时候, 会先找到inbound,如果这个inbound handler里面有调用写操作或者刷新操作,则会在这个inbound处,再次查找outbound,这就要求在添加pipleline的时候要按照一定的顺序, 个人感觉这像是被强奸了一样.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯