最近在看移动IM相关的资料, 然后发现网上有很多的资料,所以在学习过程中,整理了一些笔记, 供那些 想了解 移动IM的童鞋一些参考。 移动IM技术选型要点1、协议选型 一、常用的IM协议二、IM 服务器的选择经过这几天在网上的调研, 发现目前比较流行的几个IM 服务器 也就是 Openfire、Tigase, Ejabberd: 三、XMPP协议的问题及改进1、登录握手部分改进 2、心跳改进 3、文件传输 4、Presense 移动互联网环境下,不管用户是否在线, 都会假设 用户永远在线。 5、Muc 聊天室 Muc 是聊天室协议,在业务层面进行改进, 发送消息时 发送给所有用户,不管他在不在线 四、基于Openfire 服务器的改进1、发送消息回执 在server端维护一个消息队列, 当收到client发送会的消息回执时, 将这个消息删掉 2、性能改进 不要使用内置的数据库, 对于Vcard或者好友列表信息 可以考虑放到Redis 3、如果是消息量很大的话, 消息存储可以使用Kafka(和数据库集群之间存定时拉取关系),分布式锁基于Zookeeper,前端LVS做负载均衡。 五、移动IM的那些坑点1、长连接 android 平台 维护client 到server的长连接 IM或推送,建立长连接是必须的,可以节省TCP来回创建的开销,但断线之后,是否需要即刻重连,尤其是处于地铁、WIFI边缘地带,可能会造成重连风暴,需要添加稍加延迟连接机制。 2、心跳包 GGSN 维护移动网GGSN 3、消息回执处理Ack 移动网络很容易丢包, 发送、接受应加入回执处理 4、语音、图片的收发优化 大数据拆分成多个包, 一个包大概10字节 六、第三方的IM服务1、环信(个人感觉选他不错), 大概是从2013年4月创立, 到目前为止号称 有6000万注册用户, 有1000+ app使用 2、leancloud 2013 年 9 月发布以来,已经吸引了近万移动应用和开发者加入。 七、结论如果说自己搭建一套IM框架的: 如果说基于现有的IM服务器搭建的话, 个人觉得 从IMserver性能以及后期维护和招人成本上来看, 应该是 Tigase > Openfire > Ejabberd 八、写在最后如果你也对IM感兴趣的话,可以看一看 环信的一个讲座, 对应的ppt。 |
|