论文部分内容阅读
即时通信作为互联网的基础应用,一直都在保持高速的发展。越来越多的企业内部系统都要求具备即时通信的功能,同时提供即时通信服务的产商也在不断增加,对于企业来说,即时通信是企业内部交流沟通办公等系统的重要组成部分,也是企业内的许多系统模块不可或缺的一个功能。一般来说,企业对即时通信系统存在个性化需求,当企业要求即时通信系统和企业内部的办公系统等深度融合时,这是很多第三方商业化公司无法满足的。如果每一个用到即时通信功能的模块都去单独开发即时通信功能,则会导致需要不必要的开发。那么有必要去单独研发一套面向企业的轻量级的即时通信系统,这样当企业内部的系统有需要即时通信功能时,可以直接调用,避免了重复开发的同时,又能满足企业个性化的需求。本文通过对现有系统的即时通信模块进行抽取,再分析了一个即时通信系统需要具备的功能,同时分析了目前主流商业化即时通信服务,设计并实现了一个基于openstack的IM云平台系统。本文首先对即时通信的背景进行了调研,并分析了即时通信产品和即时通信协议在国内外的发展现状,之后对即时通信常用到的技术进行了研究,然后再结合原有项目中的即时通信子模块进行分析,得出了系统的需求后开始进行设计。设计主要分为IM服务器、REST接口和iOS端的SDK这三个部分的设计,并且单独对IM服务器的负载均衡、长连接心跳、全局唯一消息ID的生成和多端登录进行了设计。IM服务器选择了Netty、通信协议选择了XMPP以及采用了改进后的批处理消息回执确认机制,这些都使得整个IM云平台系统具备良好的性能和不错的兼容性。采用了Redis缓存和分布式的MySQL来解决系统中的高并发的的存储问题,并且采用Kafka消息队列来起到缓冲大量消息数据的作用,最后基于SpringBoot框架进行了实现。最后最系统进行了测试,包括功能测试和性能测试,通过实际的测试,发现整个IM云平台系统是满足需求的,并且测试结果都达到了预期,具备了上线使用的条件。