分布式即时通信系统的设计与实现(源码)【字数:10265】

摘 要随着互联网技术的不断发展,即时通信软件的出现大大影响了人们之间的交流方式,随着即时通信功能的越来越强大,人们也越来越依赖于即时通信软软件。但是随着用户量的增大,单机系统已经较难支持庞大的用户群,因此将系统进行横向的扩展,即从单机模式转换成分布式模式已经成为即时通信系统的主流趋势。本课题首先对分布式即时通信系统的研究背景和意义进行阐述,其次介绍了该系统所使用的Netty、RabbitMQ、Redis等技术,然后重点阐述了系统的详细设计,该系统主要包括负载均衡、模块间通信、连接管理、逻辑处理、数据库连接、服务器间消息转发和日志处理等功能模块,各个模块可在多机上任意部署。最后展示了本课题实现的分布式即时通信系统的主要功能。
目 录
第一章 绪论 1
1.1 研究背景和意义 1
1.2 文章组织结构 2
第二章 开发技术介绍 3
2.1 Nginx 3
2.2 Netty 3
2.2.1 NIO 3
2.2.2 IO多路复用 5
2.3 RabbitMQ 6
2.4 Redis 6
第三章 系统设计 7
3.1 系统总体设计 7
3.1.1 客户端 7
3.1.2 服务端 7
3.2 系统详细设计 8
3.2.1 webIM模块 9
3.2.2 webSocketServer模块 9
3.2.3 exchangeServer模块 9
3.2.4 dealUnit模块 9
3.2.5 dealLogic模块 10
3.2.6 dataOperation模块 10
3.2.7 imEntity模块 11
3.2.8 imLoggerServer模块 11
3.2.9 流程实例 12
第四章 系统实现 13
4.1 开发环境 13
4.1.1 软件环境 13
4.1.2 物理结构 13
4.2 相关数据概念介绍 13
4.2.1 消息格式  *好棒文|www.hbsrm.com +Q: #351916072# 
13
4.2.2 包 14
4.2.3 session 14
4.3 系统模块功能 14
4.3.1 负载均衡 14
4.3.2 连接管理 15
4.3.3 模块间通信 15
4.3.4 数据处理 17
4.3.5 分布式日志收集 18
4.4 系统业务逻辑 19
4.4.1 注册 19
4.4.2 登录 20
4.4.3 初始化 20
4.4.4 发消息 21
4.4.5 消息确认 22
结束语 23
致 谢 24
参考文献 25
附录1 已发表或录用论文 26
第一章 绪论
1.1 研究背景和意义
近年来,随着互联网技术的飞速发展,人们衣食住行已经都依赖于互联网,人们之间的通信也开始依赖于互联网,各种即时通信软件应运而生,如QQ、微信、Skype、MSN,这些即时通信软件的出现使得人们可以随时、随地、随身的交流。截止2016年年底,国内即时通信用户规模已经达到了6.66亿。QQ每日在线人数已经达到了2.5亿之多。
即时通信作为基础的互联网应用,在2016年再次获得了蓬勃的发展,个人即时通信开始出现差异化,而企业级的即时通信成为了各厂商的战略重点。个人端方面,国内以QQ和微信为代表的主流即时通信产品功能出现了明显的差异,QQ更偏向于年轻用户,将阅读、音乐等娱乐服务作为主要发展功能,微信则是将用户购物、出行等生活服务作为主要发展方向。此外,以陌生社交作为核心功能的陌陌通过引入直播服务实现了快速发展,其直播服务营收占比已超七成。企业端方面,基于工作场景定制的移动即时通信产品成为厂商竞争的重要领域。以Slack为代表的企业即时通信产品在海外市场获得成功,促使阿里、腾讯、网易等大型互联网厂商先后在该领域进行布局。
越来越大的用户群体,越来越丰富的服务,同时也意味着更庞大的服务支撑。一个系统随着用户量的增大,一味地通过升级硬件来纵向的扩展系统已经没有了可行性,不仅因为成本越来越高,而且由于硬件瓶颈的出现,硬件想要快速升级已经没有了可能性。而且即使拥有一台能够支持所有用户的机器来运行系统,如果这台机器出现了故障,将会导致所有用户都不能够使用,甚至导致数据的丢失等不可挽回的后果。所以横向的扩展系统已经成为了不二之选,理论上可以达到无限的扩展,但是随着扩展的机器增多,机器之间的管理与协作也成了随之而来的问题,可以想象,如果一台机器损坏的几率是1%,只有一台机器的时候,感觉可以接受,但是如果是100台机器组合起来呢,于是出现了许多分布式基础设施来处理和解决这些需求。
分布式系统将少到几台多到上万台的计算机组织起来,彼此通信,彼此协调,从理论上实现了无限的横向扩展。一个大型、文件、成熟的分布式系统的背后,往往会涉及众多的支撑系统,分布式缓存系统、持久化存储、分布式消息系统、分布式协作、搜索引擎、内容分发网络(Content Delivery Network,CDN)、负载均衡系统、运维自动化系统、实时计算系统、离线计算系统、分布式文件系统、日志收集系统、监控系统、数据仓库等。本课题将从众多支撑系统中选出一部分来实现一个简单的分布式即时通信系统。
1.2 文章组织结构
论文一共有五章,各章节的内容及结构如下:
第一章绪论,主要介绍即时通信与分布式的研究背景和意义。
第二章开发技术,介绍主要介绍了本课题使用的技术。
第三章系统设计,主要介绍了本课题系统的架构以及系统各个模块的详细介绍。
第四章系统实现,介绍了系统所实现的功能。
第二章 开发技术介绍
本系统使用Nginx作为反向代理服务器实现webSocket的负载均衡,使用Netty框架处理Socket连接,使用RabbitMQ实现模块间通信和解耦,使用Redis作为高速缓存。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/rjgc/414.html

好棒文