JSP多点聊天系统设计毕业论文
2021-12-08 21:53:38
论文总字数:22633字
摘 要
即时通信技术是现代互联网社交的基石,人们通过即时通信技术,跨越了时间和空间的限制,与不同地方不同时区的亲朋好友,工作伙伴在互联网上畅所欲言。
目前大部分的即时通信软件跨平台支持不完整,比如微信只支持了Windows,Mac等平台,却没有支持Linux,BSD等平台,而基于Web的聊天系统依托了跨平台的浏览器,可以很好满足人们对跨平台的需求,实现多点聊天。同时传统的Web聊天系统,基于轮询策略,定期拉取消息,不仅消息实时性不高,也给服务器带来了巨大压力。此外采用了单节点的聊天室存在着稳定性和扩展性等问题,在大量消息的情况下,数据库压力十分巨大。
因此,本文针对以上问题,使用了JSP,Java,JS,MySQL,WebSocket,RocketMQ等技术开发了一款基于Web的多点聊天系统,实现了群组管理和账号管理,解决了消息实时性等问题,解决了高并发场景下,大量消息同时写入数据库,导致数据库崩溃的问题,提升了系统稳定性,改善了用户体验。
关键词:多点聊天;Java;JSP;Websocket;RocketMQ
Abstract
Instant messaging technology is the cornerstone of modern Internet socialization. With instant messaging technology, people have surpassed the limitations of time and space and talked freely with friends, family, friends and work partners in different places and different time zones on the Internet.
At present, most cross-platform support of instant messaging software is incomplete. For example, WeChat only supports Windows, Mac and other platforms, but does not support Linux, BSD and other platforms. The Web-based chat system relies on cross-platform browsers and can be very good. To meet people's needs for cross-platform, to achieve multi-point chat. At the same time, the traditional Web chat system, based on the polling strategy, regularly pulls messages, not only the real-time message is not high, but also brings great pressure to the server. In addition, the chat room with a single node has problems such as stability and scalability. At the same time, in the case of a large number of messages, the database pressure is very huge.
Therefore, in order to solve the above problems, this article uses JSP, Java, JS, MySQL, WebSocket, RocketMQ and other technologies to develop a Web-based multi-point chat system, which implements group management and account management, and solves the problems of real-time messages. , Solved the problem of a large number of messages being written to the database at the same time in a high concurrency scenario, causing the database to crash, improving system stability, and improving the user experience.
Key Words: Multipoint chat;Java;JSP;Websocket;RocketMQ
目录
第1章 绪论 1
1.1 研究背景与意义 1
1.2 研究现状 2
1.3 研究内容 2
1.4 章节架构 3
第2章 系统开发技术介绍 4
2.1 JSP 4
2.2 WebSocket 5
2.3 Redis 6
2.4 RocketMQ 7
2.5 Nginx 8
第3章 需求分析 9
3.1 多点聊天系统的功能性需求分析 9
3.1.1 多点聊天系统的功能性模块划分 9
3.1.2 多点聊天系统的功能性模块用例图 9
3.2 多点聊天系统的非功能性需求分析 12
第4章 系统设计与实现 13
4.1 账号系统 13
4.1.1 账号系统数据库表结构设计 13
4.1.2 用户注册 13
4.1.3 用户登录 14
4.1.4 修改密码 14
4.1.5 修改用户信息 15
4.2 群组系统 15
4.2.1 创建群组 15
4.2.2 申请入群 16
4.2.3 退出群组 17
4.3 消息系统 17
4.3.1 消息表设计 17
4.3.2 接入消息系统 18
4.3.3 消息转发 19
4.3.4 架构分析 19
第5章 系统功能和性能测试 21
5.1 测试环境 21
5.2 功能测试 21
5.2.1 账号系统 21
5.2.2 群组系统 24
5.2.3 消息系统 25
5.3 性能测试 26
5.3.1 消息延迟测试 27
5.3.2 消息入库 27
第6章 结论和展望 29
6.1 结论 29
6.2 展望 29
参考文献 30
致谢 31
第1章 绪论
1.1 研究背景与意义
随着科学技术的发展,人们的生活发生了翻天覆地的变化,不断有新奇的技术出现,给社会带来了巨大进步,给人们生活带来了巨大便利。二十一世纪是互联网的世纪,互联网通过网络技术,缩短了人与人之间的距离,在虚拟的网络空间构建了错综复杂的社交网络。
即时通讯技术正是在此背景中孕育而生。即时通讯技术是一个端到端的服务,可以让两人或多人通过网络即时的发送文字等信息。通过基于即时通讯技术的多点聊天系统,人们可以跨越时间和空间距离,与处于不同地理位置,不同时区的人进行生活上或者商业上的交流,极大提高了信息交换效率和降低了信息交换成本。
目前,大多数的多点聊天系统基于C/S架构,例如腾讯的微信及QQ,阿里巴巴的钉钉,微软的MSN等。这些系统基于C/S架构,在客户端和服务器之间维持了一条TCP长连接[1],用户的发出的消息通过长连接发送到服务器,消息由服务器转发到目标客户端,可以很好的保证多点聊天系统的实时性,同时因为它们有着强大易用的好友和群组功能,受到了用户的喜爱。但是,基于C/S架构意味着需要为每一个平台编写客户端,所以大多数软件客户端只在少部分平台上运行,不支持Linux和BSD等,因此跨平台性不佳。为了解决这个问题,人们将注意力转移到了B/S架构,基于浏览器和服务器开发多点聊天系统。
基于B/S架构可以很轻松的实现跨平台,因为每个平台上都有自己的一套浏览器都可以运行B/S架构的多点聊天系统。因此出现了很多的Web聊天系统。但Web聊天系统最大的问题在于消息实时性。早期的Web并没有一个浏览器到服务器双工长连接方案,这导致了浏览器必须通过模拟长连接以实现主动拉取消息。通常浏览器通过定时向服务器轮询消息实现,而轮询定时长短严重影响了消息延迟和性能。定时过长,消息延迟越高;定时过短,消息延迟越低,但对服务器压力越大,也造成很多不必要的网络流量[2]。为了满足B/S架构长连接的需要,WebSocket协议正式被提出。WebSocket协议在浏览器和服务器中维护了一条长连接,以提供全双工的长连接服务,实现浏览器和服务器的双向通信,可有效避免轮询。同时传统的Web聊天系统,大多是单节点部署,其水平扩展性低,故障容错性差,一个节点崩溃整个系统都无法提供服务。
综上,本文旨在基于B/S架构,利用JSP,Java,WebSocket等技术开发一款延时低,支持群组管理的和可水平扩展的多点聊天系统,以解决传统Web聊天系统延时高,易用性差,扩展性低的问题。
1.2 研究现状
早期多数的多点聊天系统都是基于C/S架构实现即时通信。国外的聊天系统有微软开发的MSN,Google推出的Google Talk和聊天系统的开山之作ICQ。而国内最流行当属腾讯公司的微信和QQ,这两款产品占据了中国聊天系统的绝大部分市场。同时阿里也根据平台特点推出阿里旺旺以及流行的企业级聊天系统钉钉。可以说多点聊天系统不论在国内还是在国外都是人们日常生活中不可或缺的一部分。随着Web技术的不断发展,基于B/S架构的多点聊天系统开始流行,其运行在浏览器中,不需要下载和安装客户端软件就能进行聊天。Web聊天系统有的基于轮询技术实现[3],通过Ajax等技术获取获取最新消息。然而轮询技术带来一系列问题,比如轮询造成了很多无用的网络流量给服务器带来了不小的压力,同时轮询技术也无法确保消息的实时性。后来,由于WebSocket协议的出世,大家逐渐将注意力放到了基于WebSocket协议实现Web多点聊天系统。惠苗开发的Web即时通讯系统,其在Web页面上实现了好友管理,群组管理,并利用WebSocket实现了低延迟的聊天体验[4],还有刘苏磊等基于WebSocket技术实现了一个校园聊吧,为同学们提供了校内社交平台[5]。覃家皓针对WebSocket的即时通信技术进行了研究,结果表明使用WebSocket技术将带来比传统的轮询技术更低的延时和更优良的性能[6]。总之由于B/S架构的便利和WebSocket协议提供的强大全双工能力,Web多点聊天系统受到了开发者的关注和喜爱。
但是经过分析,这些现有的Web多点聊天系统还存在一些问题:当消息量十分大时,由于没有限流保护,直接操作数据库,数据库有崩溃的危险,MySQL等关系型数据库并发能力有限,当读/写QPS过大时,会导致数据库崩溃,十分影响用户体验;基于单节点架构,不能进行水平扩展,无法应对日益增长的用户规模所带来的的流量压力,同时单节点架构稳定性差,只要节点故障系统就无法提供服务[7]。
1.3 研究内容
为了解决现有的Web多点聊天系统存在的问题,本文基于JSP等技术开发一款低延时的,可扩展的,支持高并发的多点聊天系统。系统由用户系统,群组系统和消息系统三大子系统组成,以提供即时的多点聊天体验,主要内容如下:
- 实现用户系统,提供用户注册,用户登录,修改密码等必备功能;
- 实现群组系统以支持用户在不同的群组进行聊天。提供创建群组,搜索群组,加入群组和退出群组等群组管理功能;
- 设计了基于WebSocket协议的消息服务器,作为用户和消息系统的接入层,负责直接处理用户的请求和转发消息给用户;
- 设计了消息转发服务,基于消息路由,将用户发送的消息转发到目标WebSocket消息服务器;
- 设计了消息服务器集群扩展架构。
1.4 章节架构
论文的章节架构安排如下:
请支付后下载全文,论文总字数:22633字
相关图片展示: