NIO框架的cindy,现在作者不再维护了吗?有没有什么好的NIO框架推荐?
最近要使用NIO框架,一开始找了MINA,结构很好,但性能和稳定性方面不太如意。后来再找了cindy,性能和稳定性都比MINA强多,但javaeyes的CVS、sourceforge和MSN的BLOG自从2006年后就再没有更新了,是不是作者放弃了?
另问,有没有一些好的NIO框架推荐? 1 楼 sdh5724 2008-12-02 mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子. 2 楼 家常咖啡 2008-12-02 可以试试Grizzly:
http://groups.google.com/group/glassfish_china/web/grizzlycomet?hl=zh-CN 3 楼 longlongriver 2008-12-19 EJOE,我用过,感觉不错! 4 楼 hanjs 2009-02-26 谁知道cindy如何设置长连接的使用方式?
5 楼 kaktos 2009-02-26 mina的性能据我测试2.0的性能要好于grizzly1.8x
看看grizzly2.0的代码 发现和mina已经基本一样了... 6 楼 bachmozart 2009-02-27 hanjs 写道谁知道cindy如何设置长连接的使用方式?
长连接短连接不是通过你设置的,你发送完数据不关闭session不就是长连接吗?
人家的框架是尽力做到通用,长短连接还有协议什么的都是你自己控制 7 楼 bachmozart 2009-02-27 sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
8 楼 sdh5724 2009-02-28 bachmozart 写道sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
任何框架, 都会比原始的结构性能差那么点。 框架要处理的东西会比较多。 框架的目的不是为了实现有多好的性能。 而是为了能有更好的处理问题的办法。 就像ibatis/hibernate他们都是降低性能的, 但是极大的提高了开发的速度。 但是只要降低的不是太离谱, 我们都是认为可接受的。除非你的应用真的要求非常高, 一般来说, 没有必要为这点性能去苛求。 像类似memcached server协议, 自己写thread pool来处理, 是非常快的,而且处理的网络代码也不超过1000行。 我觉得, 你要是能实现也是可以的。我认为mina是相当的快的, 因为mina避免了输入输出buff的内存分配过程, 这个在大规模并发下, 改善是非常明显的。
选择mina吧, 相信他。
注: memcached基本是属于小数据, 你应该把tcpnoday设置下, 另外, 应该适当设置下TCP的输入输出buffer大小。 看你的测试数据如何。不过,default 8K是大了点, 可以设置成1-4K。 毕竟是小数据么。 9 楼 bachmozart 2009-02-28 sdh5724 写道bachmozart 写道sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
任何框架, 都会比原始的结构性能差那么点。 框架要处理的东西会比较多。 框架的目的不是为了实现有多好的性能。 而是为了能有更好的处理问题的办法。 就像ibatis/hibernate他们都是降低性能的, 但是极大的提高了开发的速度。 但是只要降低的不是太离谱, 我们都是认为可接受的。除非你的应用真的要求非常高, 一般来说, 没有必要为这点性能去苛求。 像类似memcached server协议, 自己写thread pool来处理, 是非常快的,而且处理的网络代码也不超过1000行。 我觉得, 你要是能实现也是可以的。我认为mina是相当的快的, 因为mina避免了输入输出buff的内存分配过程, 这个在大规模并发下, 改善是非常明显的。
选择mina吧, 相信他。
注: memcached基本是属于小数据, 你应该把tcpnoday设置下, 另外, 应该适当设置下TCP的输入输出buffer大小。 看你的测试数据如何。不过,default 8K是大了点, 可以设置成1-4K。 毕竟是小数据么。
TcpNoDelay 还是不要设置啦,除非是那种实时传输的,比如远程桌面之类的,需要实时传输鼠标位置之类的,否则每个小数据包都加一个40字节的包头,还需要ACK,是比较恐怖的 10 楼 sdh5724 2009-03-01 bachmozart 写道sdh5724 写道bachmozart 写道sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
任何框架, 都会比原始的结构性能差那么点。 框架要处理的东西会比较多。 框架的目的不是为了实现有多好的性能。 而是为了能有更好的处理问题的办法。 就像ibatis/hibernate他们都是降低性能的, 但是极大的提高了开发的速度。 但是只要降低的不是太离谱, 我们都是认为可接受的。除非你的应用真的要求非常高, 一般来说, 没有必要为这点性能去苛求。 像类似memcached server协议, 自己写thread pool来处理, 是非常快的,而且处理的网络代码也不超过1000行。 我觉得, 你要是能实现也是可以的。我认为mina是相当的快的, 因为mina避免了输入输出buff的内存分配过程, 这个在大规模并发下, 改善是非常明显的。
选择mina吧, 相信他。
注: memcached基本是属于小数据, 你应该把tcpnoday设置下, 另外, 应该适当设置下TCP的输入输出buffer大小。 看你的测试数据如何。不过,default 8K是大了点, 可以设置成1-4K。 毕竟是小数据么。
TcpNoDelay 还是不要设置啦,除非是那种实时传输的,比如远程桌面之类的,需要实时传输鼠标位置之类的,否则每个小数据包都加一个40字节的包头,还需要ACK,是比较恐怖的
现在是KM网络了, 怕什么40 BYTE而已, 根本不用担心, 这个是为低速网络设计的东西, 今天的网络没有多大的意义了, 现在网络游戏都要加这个, 不然延迟厉害。 11 楼 bachmozart 2009-03-01 sdh5724 写道bachmozart 写道sdh5724 写道bachmozart 写道sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
任何框架, 都会比原始的结构性能差那么点。 框架要处理的东西会比较多。 框架的目的不是为了实现有多好的性能。 而是为了能有更好的处理问题的办法。 就像ibatis/hibernate他们都是降低性能的, 但是极大的提高了开发的速度。 但是只要降低的不是太离谱, 我们都是认为可接受的。除非你的应用真的要求非常高, 一般来说, 没有必要为这点性能去苛求。 像类似memcached server协议, 自己写thread pool来处理, 是非常快的,而且处理的网络代码也不超过1000行。 我觉得, 你要是能实现也是可以的。我认为mina是相当的快的, 因为mina避免了输入输出buff的内存分配过程, 这个在大规模并发下, 改善是非常明显的。
选择mina吧, 相信他。
注: memcached基本是属于小数据, 你应该把tcpnoday设置下, 另外, 应该适当设置下TCP的输入输出buffer大小。 看你的测试数据如何。不过,default 8K是大了点, 可以设置成1-4K。 毕竟是小数据么。
TcpNoDelay 还是不要设置啦,除非是那种实时传输的,比如远程桌面之类的,需要实时传输鼠标位置之类的,否则每个小数据包都加一个40字节的包头,还需要ACK,是比较恐怖的
现在是KM网络了, 怕什么40 BYTE而已, 根本不用担心, 这个是为低速网络设计的东西, 今天的网络没有多大的意义了, 现在网络游戏都要加这个, 不然延迟厉害。
呵呵,具体情况确实要视真实网络环境而定
12 楼 fjlyxx 2009-03-01 流量不是问题 问题是握手会耗费多次连接 这样在高并发的情况下不是一个好事情 所以网路层的长短连接选择还真是一个难题.
定义数据包和靠令牌进行传输在一定程度上是能解决高并发的问题,但是也因此带来了一些新的问题,移动,联通SP网管基本上就是靠数据包定义交互协议的做法 我觉得可以借鉴一下. 13 楼 unsid 2009-03-05 sdh5724 写道bachmozart 写道sdh5724 写道bachmozart 写道sdh5724 写道mina 性能不好.....我没有测试过, 但是我看到的有高并发使用的例子.
我用cindy和mina 2.0-m3 分别实现过一个简单的Memcached Server,用java-memcached-client测试发现cindy 性能比mina高很多,后来自己写了个基于简单的1:M 的NIO模型的server,性能也比mina高一些
不过看过mina代码,代码风格挺好的,功能也齐全,性能原因也不排除我使用不当的因素
任何框架, 都会比原始的结构性能差那么点。 框架要处理的东西会比较多。 框架的目的不是为了实现有多好的性能。 而是为了能有更好的处理问题的办法。 就像ibatis/hibernate他们都是降低性能的, 但是极大的提高了开发的速度。 但是只要降低的不是太离谱, 我们都是认为可接受的。除非你的应用真的要求非常高, 一般来说, 没有必要为这点性能去苛求。 像类似memcached server协议, 自己写thread pool来处理, 是非常快的,而且处理的网络代码也不超过1000行。 我觉得, 你要是能实现也是可以的。我认为mina是相当的快的, 因为mina避免了输入输出buff的内存分配过程, 这个在大规模并发下, 改善是非常明显的。
选择mina吧, 相信他。
注: memcached基本是属于小数据, 你应该把tcpnoday设置下, 另外, 应该适当设置下TCP的输入输出buffer大小。 看你的测试数据如何。不过,default 8K是大了点, 可以设置成1-4K。 毕竟是小数据么。
TcpNoDelay 还是不要设置啦,除非是那种实时传输的,比如远程桌面之类的,需要实时传输鼠标位置之类的,否则每个小数据包都加一个40字节的包头,还需要ACK,是比较恐怖的
现在是KM网络了, 怕什么40 BYTE而已, 根本不用担心, 这个是为低速网络设计的东西, 今天的网络没有多大的意义了, 现在网络游戏都要加这个, 不然延迟厉害。
奇怪,我从来没加过noDelay,为啥客户服务器从来没感觉到过延迟?开始我以为是测试并发小的缘故,后来一想由于发送缓存不满导致的延迟应该和客户连接数没关系.也许是我发的数据还算比较大,立刻就发出去了 14 楼 unsid 2009-03-05 另外关于JAVA程序里的BufferedOutputStream,这是程序级别的缓存,就算没有用BufferedOutputStream而直接用OutputStream发送一个字节,在TcpNoDelay=false的情况下,也不会立刻把这个字节发送出去,而还有底层TCP得nagle算法缓存着对不?
而如果用BufferedOutputStream的flush把未满的数据发送出去,那么这些数据如果未满TCP底层发送缓存,还是会换存在发送端,也不立刻发送出去,对不? 15 楼 bachmozart 2009-03-05 TcpNodelay是当待发送数据包很小时,不足一个mss大小时可能会和下次待发的数据包一并发出,以减少ack的数量,这个延迟时间是极短,普通应用完全察觉不到的 16 楼 unsid 2009-03-05 bachmozart 写道TcpNodelay是当待发送数据包很小时,不足一个mss大小时可能会和下次待发的数据包一并发出,以减少ack的数量,这个延迟时间是极短,普通应用完全察觉不到的
延迟时间极短是不是填充一个mass的时间短,如果就发送一个字节而没下文了,岂不永远也填不满永远也发不过去 17 楼 bachmozart 2009-03-05 这个不太可能,底层的算法没看过,没法解释,不过这是TCP自己处理的,不会这么傻一直等着填满一个mss才发送的,应该只是由一个固定的延迟事件,超过则必须发送了 18 楼 bloodwolf_china 2009-03-20 以前做过通信层,采用mina NIO方式开发,可以支持1000个连接(连接关闭由客户端负责,长连接),好像没发现性能方面的问题。
响应速度方面因为没有使用过其他框架,不好比较 19 楼 lqql 2009-04-23 可当连接20000时,你就知道MINA性能差了! 20 楼 livensun 2009-05-06 lqql 写道可当连接20000时,你就知道MINA性能差了!
比较适合建内网,实话20000人的我还没有试过~