OSC 第 50 期高手问答 -- Netty 开发的问题

阿娇OSC 发布于 2014/07/07 10:20
阅读 11K+
收藏 22

OSCHINA 本期高手问答(7月7日-7月13日)我们请来了 @Nettying (李林锋)为大家解答关于Netty方面的问题。

@Nettying  李林锋:Netty中国推广者,现华为技术有限公司平台中间件架构与设计部设计师,公司总裁技术创新奖获得者。长期从事高性能通信软件的架构设计和开发工作,有多年在NIO领域的设计、开发和运维经验,精通NIO编程和Netty、Mina等主流NIO框架。

为了鼓励踊跃提问,@博文视点  会在问答结束后从提问者中抽取 5 名幸运会员赠予《Netty权威指南》一书。同时选出3名会员赠与互动出版网30元购书电子卷一张。


购买链接:http://product.china-pub.com/3770198

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就Netty方面问题向@Nettying 提问,请直接回帖提问。 

加载中
0
max佩恩
max佩恩
最近ErLang、GoLang风头很旺,这些语言/框架都强调超高并发,更自然的写/语法。请问大神,Netty与er/golang相比,优势是基于JVM,或是框架易学易用,或是实战中的高稳定性?
@Nettying
newzai
newzai
回复 @黄开源中国 : 这个不是很清楚。。。
newzai
newzai
回复 @黄开源中国 : 几年前使用过;不过Java不是我的主要工具,我主要使用C++的ASIO,ACE等框架;做后台服务器还是要C++比较高性能;
黄开源中国
黄开源中国
回复 @newzai : 因为我看mina官网已经很久不更新了。。。难道是另外换了其他人在维护?
max佩恩
max佩恩
回复 @newzai : 所以说这年头技术选型很难,不是找不到合适的,而是看上去合适的太多,只有真正去用了才能知道是否合适。类似的还有学Java还是C#、学Python还是Groovy
黄开源中国
黄开源中国
回复 @newzai : 你在近两年的项目中用过mina吗?
下一页
0
时间在追我
Nettying
Nettying
可以加入到 Netty读者群,跟大家一起学习和讨论。 群号:195820454
0
sofn
sofn
@Nettying : Akka用Scala系的Spray.io替换Netty, Play Framework也是,请问Spray.io和Netty相比,有哪些优劣?
JerryLin
JerryLin
回复 @sofn : akka2.2/2.3里lib下面的netty.jar包现在起什么作用?
sofn
sofn
回复 @JerryLin : yes,2.2就切了
JerryLin
JerryLin
Spray.io目前的模型和netty是类似的,但akka已经切换到spray.io上了吗?
newzai
newzai
回复 @Nettying : 都是基于NIO的,性能应该差不多;关键的区别还是在于编程范式;Spary.io利用Scala的优美的语法和闭包等支持,可以写出更加易读和更少的代码实现更多的功能;
Nettying
Nettying
这个确实没有比较过。但是,现在Netty也替换了很多其它的NIO框架或者通信系统,Netty的应用越来越广泛。
0
筱龙缘
筱龙缘
@Nettying :Mina 和Netty 相比呢?曾用Mina写自定义协议通信
筱龙缘
筱龙缘
回复 @Nettying : Mina 在与Spring集成后 使用filter插件时非常蛋疼 没有相关配置说明 例如心跳、黑白名单等
Nettying
Nettying
两者的主要区别如下: 1. Netty的ByteBuf和Mina的IoBuffer; 2. 线程模型;3. 内存管理方式; 4. 编程细节。 坦率的讲,根据Netty之前的benchmark和Dubbo等的实测,Netty在性能、内存占用和回收方面更有优势。但是这种优势不是代差。
0
叶超
叶超
@Nettying :netty增加SSL之后,性能上会有多少个百分比的下降?
purely
purely
回复 @Nettying : 可以使用第三方的ssl
JerryLin
JerryLin
回复 @Nettying : normanmaurer实现了底层使用openssl库的分支,你们有没有测试过,性能有多少提升?
Nettying
Nettying
Netty使用的是标准的SSL类库,没有特殊的处理,性能下降会比较厉害,我并没有具体同等对比过下降,但是这个比较容易测试,你可以自己对比测试下。事实上,鱼与熊掌不可兼得。
0
小天120
小天120
@Nettying :在书中第133页,您说客户端禁止对类加载器进行缓存。但是在服务端中对类加载器进行了缓存,这是何故?服务端就不会用OSGI么?热部署是否只是客户端才有?
Nettying
Nettying
不是那个意思。书中仅仅是个例子,如果业务不需要热部署等则可以通过缓存来提升性能。没有特指客户端或者服务端一定支持OSGi热部署。跟业务的使用场景相关。
0
勇哥0_0
勇哥0_0
@Nettying : 请问 java天然的 gc的时候 会停掉整个应用?那么 与前天的语言相比 netty在通讯方面会有即时的优越性么? 
Nettying
Nettying
如果使用恰当,基于Netty的应用的GC对系统的影响是可控的: 1. 避免Full GC(或者频率很低、持续时间短); 2. 普通的GC时间非常短,不会对系统产生影响。 Netty的内存管理非常细腻,提供了内存池和堆外内存等,另外通过合理设置JVM内存参数,是可以解决你说的问题的。 在我们或者其它产品中,我们从来没有被GC影响导致系统长时间暂停的。
0
筱龙缘
筱龙缘
今以购书,作者有博客么?
Nettying
Nettying
没有,我主要玩微博和微信,文章主要放到infoQ分享给大家。
0
galfordliu
galfordliu

@Nettying :对netty零了解。前面作者有说Netty相比mina的优点。在一个每分钟发上万条短信的业务中,netty与mina相比,有哪些优势?又有哪些劣势?

因为这两个框架的作者同一个人,但是mina是汲取了netty优点之后再开发的框架,会不会因此mina更优秀一些?

galfordliu
galfordliu
回复 @Nettying : 我只是想知道mina与netty各方面相比到底如何。如果差不多,没必要再学一次同类型的框架了。学习是需要成本的。
galfordliu
galfordliu
回复 @max佩恩 : mina是后来者。apache上有Trustin Lee写的road map http://mina.apache.org/mina-project/road-map.html
newzai
newzai
回复 @huaye2007 : 复杂度高,并不是Java NIO特有的,java NIO其实也是一套跨平台的网络接口,这些问题在C++语言要实现扩平台的网络库里面也会遇到相同的问题,当然C,C++可以针对具体的平台写出很高性能的网络框架,但是如果考虑了跨平台,那么其复杂性和性能就基本和Java NIO没多大区别;剩下的选择就是团队的技术了;
Nettying
Nettying
我就担心上升到语言层面的性能之争,O(∩_∩)O。基于Netty的行业应用很多,事实胜于雄辩。我个人不参与语言孰优孰劣之争。
星爷
星爷
回复 @newzai : 那不是性能不行,是因为java nio复杂度比较高,能写出一个商用比较少bug很难。底层决定了上层。
下一页
0
魏大伟
魏大伟
@Nettying :对于单链接串行通信的时候,即客户端只能串行通信,用NioServerSocketChannel自己做阻塞处理还是OioSocketChannel合适?有了nio还需要oio吗?什么时候合适使用oio?
魏大伟
魏大伟
回复 @Nettying : 谢谢
Nettying
Nettying
应该说有了NIO框架之后,基本就可以代替OIO了。之所以说按照场景去应用,是说直接基于JDK的NIO类库开发和维护工作量比较大,如果是简单、并发量小、网络质量高的简单应用,可以仍然使用OIO。OIO的核心问题就是两个:可能被同步阻塞和线程模型膨胀,如果你确认这两个问题对你不重要,也可以使用Netty的OIO,两种模式都支持。
返回顶部
顶部