码迷,mamicode.com
首页 > 其他好文 > 详细

即时通讯之路——技术选型

时间:2015-06-18 11:35:35      阅读:403      评论:0      收藏:0      [点我收藏+]

标签:activemq   mybatis   dubbo   redis   即时通讯   

   因为项目的需要,需要在产品中内嵌即时通讯和消息提醒这个功能。前期的调研过程中看了蛮多的产品,看过环信和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

即时通讯之路——技术选型

标签:activemq   mybatis   dubbo   redis   即时通讯   

原文地址:http://blog.csdn.net/chenli522/article/details/46544863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!