netty vs mina netty和mina的区别

作者&投稿:壹方 (若有异议请与网页底部的电邮联系)
java 应用服务框架mina 和 netty应用案例都有那些,两者该怎么选择~

给你一个专业答复的地址供你参考,
http://www.zhihu.com/question/20527458

哪个熟悉用哪个.Netty是基于线程的完全非阻塞异步模型, 强依赖于LinkedBlockingQueue. 说不定未来会有一款基于完全无锁队列(例如disruptor)的IO框架. Netty比较烦心的是需要定义Inbound,Outbound的handler, 当信道active的时候, 会先找到inbound,如果这个inbound handler里面有调用写操作或者刷新操作,则会在这个inbound处,再次查找outbound,这就要求在添加pipleline的时候要按照一定的顺序, 个人感觉这像是被强奸了一样.

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大忌了。


花山区19267988870: java 应用服务框架mina 和 netty应用案例都有那些,两者该怎么选择 -
陈没贾华富: 哪个熟悉用哪个.Netty是基于线程的完全非阻塞异步模型, 强依赖于LinkedBlockingQueue. 说不定未来会有一款基于完全无锁队列(例如disruptor)的IO框架. Netty比较烦心的是需要定义Inbound,Outbound的handler, 当信道active的时候, 会先找到inbound,如果这个inbound handler里面有调用写操作或者刷新操作,则会在这个inbound处,再次查找outbound,这就要求在添加pipleline的时候要按照一定的顺序, 个人感觉这像是被强奸了一样.

花山区19267988870: netty vs mina netty和mina的区别 -
陈没贾华富: Netty和mian比较报告 一、数据测试报告简述:1、启动服务器,等到客户端接入 2、客户端发送链接请求.当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb. 3...

花山区19267988870: netty 和 java nio 的区别 -
陈没贾华富: 1. Java NIO框架MINA用netty性能和链接数、并发等压力测试参数好于mina.2. NIO弥补了原来的I/O的不足,它再标准java代码中提供了高速和面向块的I/O3. 原力的I/O库与NIO最重要的区别是数据打包和传输方式的不同,原来的I/O以流的方式处...

花山区19267988870: nginx netty 哪个好 -
陈没贾华富: 和nginx、apache的MINA、python的twisted、ruby的eventmachine、java的netty类似,都是event-driven的模式

花山区19267988870: 上万socket的连接用的方案和技术?netty?分布式?越详细越好. -
陈没贾华富: Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如...

花山区19267988870: 为什么选择Netty作为基础通信框架 -
陈没贾华富: 一、什么是Netty Netty是一个高性能 事件驱动、异步非堵塞的IO(NIO)Java开源框架,Jboss提供,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器,快速开发高性能、高可靠性的网络服务器和客户端程序.支持HTTP、 ...

花山区19267988870: java web既然已经有了tomcat为什么还要使用netty -
陈没贾华富: 但是nio直接使用比较难用,所以有了mina,netty这些针对网络io部分(tcp/udp-传输层)的封装(nio也有非网络io部分),为了使nio更易用. http是应用层的协议. servlet3.0则是另外一种东西,不是对协议的封装,javaee6众多规范中的一个,...

花山区19267988870: go有没有开源的类似java的mina或者netty的socket框架 -
陈没贾华富: mina与netty都是Trustin Lee的作品,所以在很多方面都十分相似,他们线程模型也是基本一致,采用了Reactors in threads模型,即Main Reactor + Sub Reactors的模式.由main reactor处理连接相关的任务:accept、connect等,当连接处理完毕并建立

花山区19267988870: 我看不下去鸟.Java和C#的socket通信真的简单吗 -
陈没贾华富: C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己开发的一套组件. Java socket通信的组件也有很多,常用的大多数都是用的mina或者netty.游戏行业使用也是居多. 关于socket的底层写法,实在太多

花山区19267988870: netty和nginx哪个更有价值对于java -
陈没贾华富: 完全无关的两个东西,如果一定要说.只能选netty,因为nginx和java没有关系.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网