论文部分内容阅读
随着智能手机、平板电脑和智能终端等多媒体终端的普及和4G的快速发展,无论是移动互联网还是智能家电等都对移动终端有迅猛发展的需求。基于移动终端的各种应用如雨后春笋般层出不穷,极大的影响了人们的生活习惯。基于长连接的分布式消息推送系统通过分析移动终端用户喜好给用户推送感兴趣的内容,能大大提高用户的活跃度、留存率,对发展用户和发展业务都有着不可替代的作用,因此成为了终端应用不可或缺的重要组成部分。然而由于安卓操作系统官方的消息推送机制C2DM有覆盖率偏低的缺陷,因此终端应用开发者需要自己开发推送系统。本论文“基于长连接的分布式消息推送系统”,是本人在国内某互联网企业实施的一个真实项目,在实习时通过对此实际项目的实践和分析,再此基础上做了大量的开发和优化工作。同时,论文引入了一致性哈希算法,保证了系统的动态扩容,以及设计了高效并且安全的加密方案,实现了多模块协同工作的分布式架构。本论文分析比较了常用的网络协议和网络通讯框架,采用JAVA NIO网络框架Netty实现了客户端和服务端的TCP通信信道长连接的建立,使用心跳检测的手段保障了通信通道的稳定性和可用性,采用开源数据序列化框架Protocol Buffers对协议数据进行数据序列化和反序列化,以实现最大程度的高效率传输,使用非对称和对称加密算法相结合的独特安全协议设计既保证了系统安全性也保证了较高加密效率。本论文创新性地在系统中引入了一致性哈希算法,使得系统有更好的伸缩性能,同时实现了系统各功能模块的拆分解耦,可部署在不同机器实现了协同工作的分布式架构,使得系统具有更高的弹性,从而满足系统高并发和高可用的目的,为企业带来更加高效和可靠的消息推送服务。本论文的创新点是为系统引入一致性哈希算法提高系统的高并发和高可用能力,本、项目的难点是在实际运行的网络上设计实现分布式的消息推送系统并稳定运行。目前此项目已经在线上支撑数百万移动设备同时在线,消息发送性能能够达到上万QPS,表明该系统实现了企业级消息推送的要求,能够满足工业级生产环境使用的水平,达到了预定的设计目的。