高性能的RTC服务器OpenFire

OpenFire是什么,以及它能做什么?或许这是许多开发人员最关心的一个话题。简单来说,OpenFire是一个采用纯Java语言编写(核心架构使用Mina构建)的开源RTC(Real-Time Communications,实时协作)服务器。它采用XMPP协议进行分布式通信,该协议的前身其实就是基于Jabber协议,只不过XMPP对其进行了部分扩展。说到底XMPP协议无非就是一个基于TCP/IP协议的扩展协议,它采用XML的方式进行数据传输,以此满足体系结构的中立

 

当大家对OpenFire有一个大致的认识和了解后,我们再来探讨OpenFire能做什么。即时通信(IM,Instant Messenger)相信大家都应该听说过,比如我们常用的QQ、微信、米聊等等都是IM系统。那么这和OpenFire有什么关系呢?OpenFire既然是RTC服务器,自然开发人员就可以利用它构件一个具备高性能的即时通信服务器。OpenFire的性能如何呢?经过笔者和同事对其进行压力测试后发现,一台主流的8/16G服务器,在不集群(cluster)的情况下,使用多个Connection Manager(连接管理器)对OpenFire进行连接负载均衡,并对OpenFire做了一定的优化后,其完全可以承受住约10-20万左右的并发操作,如果session中不存储集合对象,抗住30-40万左右的高并发操作也不是没有可能。假设OpenFire无法满足你的应用需求时,开发人员完全可以对OpenFire的源码进行二次开发,使用插件的方式对其功能进行扩充,这一切都是OpenFire带给你的实惠。

 

当然,如果你仍然觉得OpenFire的性能还是无法满足于你的需求时,假设你具备扎实的NIO或者AIO编程经验,笔者完全支持并赞成你自己研发一个通信服务器,如果你做不到,那么请耐心并仔细的研究如何优化OpenFire的运行性能。要是想达到微信那种过亿用户连接数,千万级并发量,从理论上来说整体的系统架构必然非常复杂,这个时候架构师需要考虑的问题太多,比如:服务器之间如何集群?如何实现模块化部署?如何构建分布式缓存?海量数据如何处理?缓冲区如何构建?容灾或容错策略如何解决?带着这些疑问,笔者希望大家在工作或者是闲暇之余,耐心的思考下。


转自:http://gao-xianglong.iteye.com/blog/1944234

你可能感兴趣的:(高性能的RTC服务器OpenFire)