openfire 的NIO框架Mina
由于最近在开发项目需要大量关于消息推送,IM的系统,所以最近在研究openfire spark smack 等开源项目。 最近也看了DDPUSH 任意门推送的源码,是基于udp 和tcp实现的,没有使用XMPP 、MQTT协议,测试发现还是有一些问题,也许正是因为UDP协议本质所决定的吧,发送包有一些没法接收到,最近做类似滴滴这样的项目如果用这样的推送可以无法保证消息的准确性和及
由于最近在开发项目需要大量关于消息推送,IM的系统,所以最近在研究openfire spark smack 等开源项目。
最近也看了DDPUSH 任意门推送的源码,是基于udp 和tcp实现的,没有使用XMPP 、MQTT协议,测试发现还是有一些问题,也许正是因为UDP协议本质所决定的吧,发送包有一些没法接收到,最近做类似滴滴这样的项目如果用这样的推送可以无法保证消息的准确性和及时性。
因为在这些不管是开源的项目还是我们自己在做有些东西的时候 都要用到NIO,正如java 里面还没有NIO这个东西时候,淘宝的大牛们自己编写过这样的东西,可谓是耗费了相当多的心血,所以如果在自己的项目中,要求不是那么高的情况,也许使用开源的NIO框架更为划算和适用。
下面是转载的关于Java NIO框架Mina、Netty、Grizzly介绍与对比 转载只为学习和记录 http://www.blogjava.net/javagrass/archive/2011/07/05/353680.html
Mina:
Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序,Mina 所支持的功能也在进一步的扩展中。目前,正在使用 Mina的应用包括:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、 Openfire等等。
Netty:
Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。也就是说,Netty是一个NIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端。它极大简化了网络编程,如TCP和UDP套接字服务器。
Grizzly:
Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各种问题。使用JAVA NIO作为基础,并隐藏其编程的复杂性。容易使用的高性能的API。带来非阻塞socketd到协议处理层。利用高性能的缓冲和缓冲管理使用高性能的线程池。
OK,我们现在可以看看三者的简单对比了。
首先,从设计的理念上来看,Mina的设计理念是最为优雅的。当然,由于Netty的主导作者与Mina的主导作者是同一人,出自同一人之手的Netty在设计理念上与Mina基本上是一致的。而Grizzly在设计理念上就较差了点,几乎是Java NIO的简单封装。
其次,从项目的出身来看,Mina出身于开源界的大牛Apache组织,Netty出身于商业开源大亨Jboss,而Grizzly则出身于土鳖Sun公司。从其出身可以看到其应用的广泛程序,到目前为止,我见到业界还是使用Mina多一些,而Netty也在慢慢的应用起来,而Grizzly则似乎只有Sun自已的项目使用了,如果还有其他的公司或开源项目在使用,那就算我孤陋寡闻。
最后,从入门的文档来说,由于Mina见世时间相对较长,官方以及民间的文档与入门示例都相当的多。Netty的官方文档也做得很好,而民间文档就要相对于Mina少一些了。至于Grizzly,不管是官方还是民间,都很少见到其文档。
-------------------------------------------------------
看了上面的比较其openfire 也并不是那么的理想。
XMPP协议是基于xml的,使用来说的确广泛,比起用json 传输数据来,在有一些的数据量级的传输下,差距就出来了。
openfire 至于集群方面比起tigase 来相对薄弱,所以很多朋友向我推荐tigase ,可是tigase 的集群相对复杂得多,让我难以取舍。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)