陈立java进化论

因为项目的需要,需要在产品中内嵌即时通讯和消息提醒这个功能。前期的调研过程中看了蛮多的产品,看过环信和openfire,甚至包括androidpn。因为是android出身,所以对即时通讯这个模块尤为感兴趣。

openfire这个东西是一个很不错的东西,起码可以让你在前期就能很快的拥有即时通讯模块。详细看了下文档,发现openfire用的协议是古老的xmpp协议。在这个json横行的时代,xmpp显得其太古老了,,而且最大的问题是传输的数据量太大。openfire的核心是mina。据我说知,mina和netty都是由一个作者。作者也是看到了mina存在的缺陷,使得其重新开发了一个netty。复杂的通讯过程使得性能大大降低,在后期的插件维护上也是大费心思,所以我打算自己舍弃openfire这个东西。自己去定义一套完全属于自己的即时通讯系统。

协议的选择是很重要的,这个东西关系到整个系统的复杂度,和通讯过程中的性能问题。再此特意去研究了下腾讯的协议。腾讯的协议是基于ActiveSync的修改版,取名叫同步协议Sync流程如下:

1、发送消息方告诉服务器有新消息

2、服务器方接收发送消息方数据

3、服务器告诉消息接收方有新数据要接收

4、接收方取得服务器端数据

5、接收方告诉服务器数据已经拿到,消息可以作废

复杂的协议,我是这样通俗的去认为的,腾讯微信大体就是这样的一个协议,其中加入了token令牌去确保数据的安全性。

在技术上,无可厚非的选择了netty这个东西,用springmvc,spring 和mybatis做整个系统的基础框架。用redis去做sesion集群管理,使得每个用户id和session确保对应。使用阿里的dubbo服务化治理框架实现soa化。选择activemq高速队列做整流作用。

感兴趣的朋友可以联系我,一起去做这件事情,欢迎加入QQ群302633408 或者联系我的QQ329790217

幸福就是重复。每天跟自己喜欢的人一起,通电话,

陈立java进化论

相关文章:

你感兴趣的文章:

标签云: