【计算机毕业设计】基于netty的网关推送平台

news2025/1/14 10:12:52

前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯基于netty的网关推送平台

课题背景与意义

在浏览某些网页的时候,例如 QQ网页版、在线客服服务、CSDN站内私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复。可见,这种功能的需求由来已久,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events):

 通过几种模式的对比,可见Comet、websocket更适合现有场景的需求,即只使用chrome/firefox做为浏览器的内部系统,使用websocket技术,外部系统使用Comet技术。所以Comet长轮询和websocket 将作为消息推送网关的主要支持协议,为了同时能够兼容这两种模式且发挥服务器的最大性能,使用了netty作为框架底层来实现。

 

消息推送网关基于netty4 ,客户端与服务端建立TCP 全双工通道的NIO模式,和传统的一个连接一个线程式的BIO不同,NIO是非阻塞的,能支持更多的连接。

 

客户端注册后,针对每个用户发放一个ID,作为该客户端的标识。在敏感的数据交互场景中,若有连接进来,需要进行鉴权,对于非法的连接进行拒绝,对于合法的连接进来后,注册到注册中心,这样就知道每个客户端的连接在哪个服务器上。

每个模块的角色:

1. Boss Group线程组:作为服务端Acceptor线程,用于accept客户端连接,并转发给WorkerGroup中的线程;

2. Worker Group线程组:作为IO线程,负责IO的读写,从SocketChannel中读取报文或向SocketChannel写入报文;

3.连接空闲检测Task:作为定时任务线程,执行定时任务,例如连路空闲检测;

4.pipLine: 是一个负责和执行ChannelHandler的职责链;

5.编解码器:负责接收数据的加解码;

6.分块写处理器:主要用于大文件传输;

7.对象聚合器:会把请求转换成另外一个对象;

8.proxy server :调用后端接口代理;

9.http服务:主要是用于暴露Http服务给路由分发服务;

10.路由分发服务:主要是通过注册中心,知道某个用户的连接在具体哪一台机器,后端无需关注用户登录在什么机器,只需要知道用户的ID,就可以对用户所登录在线的机器发送消息,由路由分发服务来找到对应的网关,对外暴露dubbo\RMI\http协议,满足不同调用需求。

该系统可以进行横向伸缩,当需要支持更多的客户端或者需要传输的数据时,通过新增机器就可以满足,理论上是没有上限的。

 

消息推送网关已经应用于中天门户的消息推送功能模块、C端用户中心的微信二维码扫描登录模块、云打印中的PC/移动端打印信息推送模块,尤其解决了业务系统门户(中天门户)即时消息推送不畅的问题。

消息推送:最早门户消息提醒并非使用长连接而是使用HTTP短轮询,每个用户发消息过来后产生一个对后台服务的远程调用,在用户量小时,对后台压力并不是很大,而如果用户数变大后,后台将开始出现服务超时等现象且当用户数达到3W后系统频繁宕机,反应在功能上就是用户收不到消息,而现在中天作为业务系统门户,每天登录用户将超过10W+,通过网页版前端登录后,跟服务端保持长连接,后端根据用户ID,针对某个用户的消息进行推送,触达及时且单一机器可承载用户数更多;

微信图像二维码登录:实现用户使用微信扫一扫,在扫描图像二维码后微信会回调后台接口,后台需要及时通知到客户端,客户端收到后进行登录跳转,前期二维码扫描登录,是通过每5秒短轮询一次后台判断用户是否已经通过微信扫描,这样由于每次请求都需要进行加解密操作,当用户量大时后台负载也变大,且用户反馈扫描后长时间无反应或者反应很慢,用户体验不好,使用消息推送网关后单台机器即可支撑且完美解决客户体验问题。

打印消息推送:由于打印消息推送和普通的消息推送的区别在于推送打印数据的时效要求和.net交互,之前使用的第三方推送由于心跳间隔比较长,如果网络抖动或者在心跳间隙断开,后台并不知道,这样推到前端就无法触达,消息推送网关通过缩短心跳间隔时间和后台调整获取打印消息的逻辑解决。

除了以上场景,还能满足以下一些场景:

在线人数实时报表:通过session管理器可以实时拿到在线的session以及用户通过哪些客户端连接。

聊天室:通过两个客户端都连接到网关,通过服务代理把消息进行交换。

文件上传下载:在上传时会将文件分成多个小块chunck,比方说:一个文件10M,网关会用ChunckedWriteHandler(支持异步发送的码流(大文件传输)但不占用过多的内存,防止java内存溢出)类将这个文件拆分,比如说分成10份,每份1M分10次进行传输,将10次传输封装成1个response进行响应,这样每次传输的内容小所以够快。

基础资料实时同步:现在智能终端或者PDA的基础资料大部分采用开机下载和定时拉取的设计,可以通过消息推送网关,把更新的基础资料数据实时分发,解决基础资料同步延时问题。

课题实现技术思路

🚀海浪学长的作品示例:

大数据算法项目

机器视觉算法项目

 

微信小程序项目

Unity3D游戏项目

最后💯

🏆为帮助大家节省时间,如果对开题选题,或者相关的技术有不理解,不知道毕设如何下手,都可以随时来问学长,我将根据你的具体情况,提供帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字符流用户注册案例、字符缓冲流、字符缓冲流特有功能、字符缓冲流操作文件中的数据排序案例

文章目录字符流用户注册案例字符缓冲流字符缓冲流特有功能字符缓冲流操作文件中的数据排序案例IO流小结字符流用户注册案例 案例需求: 将键盘录入的用户名和密码保存到本地实现永久化存储实现步骤 获取用户输入的用户名和密码(这里使用 scanner 键盘录…

NLP的数据增强技术总结

文章目录一、简单的数据增强技术 EDA (Easy Data Augmentation) 即Normal Augmentation Method1、同义词替换(Synonym Replacement, SR):2、随机插入(Random Insertion, RI):3、随机交换(Random Swap, RS):4、随机删除(Random Deletion, RD)&…

JS中判断数据类型的几种方法

目录 1.typeof 2.constructor 3.instanceof 4.Object.prototype.toString.call 1.typeof 📙 语法 : typeof(需要判断的数据变量) 📙 特点: 🍀 对于基本数据类型,除了null外都可以返回正确的结果;对于null,返回的是Object &#x1f34…

FL Studio21中文版本新增功能FL2023完整版

FL Studio水果简称FL,全称:Fruity Loops Studio,国人习惯叫它水果萝卜。FL软件现有版本是 FL Studio 21,已全面升级支持简体中文语言界面 。 FL Studio 21水果工具更新、新功能和插件FL Studio 21已经发布,并且有许多…

[附源码]java毕业设计日常饮食健康推荐系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

迭代器C11

迭代器 迭代器失效 容器使用迭代器时,不要改变容器的大小 /在操作迭代器的过程中(使用了迭代器这种循环体),千万不要改变vectori容器的容量,也就是不要增加或者删除vectori容器中的元素 /往容器中增加或者从容器中删…

python基于百度sdk语音转文字

python基于百度sdk语音转文字 1.安装baidu-aip 这样pip install aip; 2.要是不行的话下载"识别、合成 RESTful API Python SDK ",解压到某个文件夹下面如:d:\AI 百度智能云-管理中心https://console.bce.baidu.com/ai/#/ai/speech/overview/…

【面试题】深入理解Cookie、Session、Token的区别

【面试题】深入理解Cookie、Session、Token的区别 Cookie与Session Cookie Session Cookie与Session之前的联系 Cookie与Session的在请求中的工作流程 Cookie与Session存在问题 Token 什么是Token? 为什么要有token? token认证机制 Token流…

灵界的科学丨五、心灵与意识的科学奥祕

摘自李嗣涔教授《灵界的科学》 每个人都有「自我意识」, 每天睡觉时「我」就不见了, 每天早上醒来时,「我」又回来了, 好像没有太大的改变, 这个「我」的物理现象是什么? 探索科学的最后疆界──意识 …

【感恩系列】:说点事儿 以及 我把所有的粉丝放到了中国地图上啦~

文章目录💞许久不见,甚是想念💘初次相遇💘为什么写博客?💘写博客的收获💘此可已无言💘中国版图里的我们💖设计思路:💖具体实现💕爬取粉…

【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计(原理图工程、仿真工程、低重复率设计文档、答辩PPT、开题报告)

【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计(原理图工程、仿真工程、低重复率设计文档、答辩PPT、开题报告) 文章目录【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计(原理图工程、仿真工…

HCIP实验2-1:IS-IS 配置实验

实验 2-1 IS-IS 配置实验 实验目标 掌握IS-IS协议基本配置掌握IS-IS协议DIS优先级修改方式掌握IS-IS协议网络类型修改方式掌握IS-IS协议外部路由引入掌握IS-IS接口cost修改方式掌握IS-IS路由渗透配置方式 拓扑图 场景 使用IS-IS协议作为某网络的IGP,R1和R5运行在…

操作系统:操作系统概论

目录前言1. 操作系统概观1.1 操作系统与计算机系统1.1.1 操作系统1.1.2 硬件软件1.1.2.1 硬件1.1.2.2 软件1.1.2.2.1 系统软件(操作系统层)1.1.2.2.2 支撑软件1.1.2.2.3 应用软件1.2 操作系统资源管理技术1.2.1 资源管理1.2.1.1 资源复用1.2.1.2 资源虚化…

线性代数---第五章特征值和特征向量

1特征值的和等于a11加上a22,特征值的积等于行列式 2利用|λE-A|0求特征值,代入特征值求基础解系,利用基础解系求特征向量 3如果两个特征值相等,那么它们的特征向量也相等 当特征值是二重根时,有可能有一个线性无关的特…

EndNote安装与使用

一、安装 1、双击ENX9Inst.msi安装 2、进入安装目录,使用CHS或ENG里的文件替换安装目录文件 CHS 中文版 ENG 英文版 二、软件优化 1、EndNote Import.enf 此文件用于导入中文文献时期刊名解析错误的问题,右击使用EndNoteX9打开后关闭即可 2、geebin…

Navicat导入SQL文件

安装Navicat 软件下载地址 https://wwz.lanzoub.com/i3T9S0gbq2wd 参考链接接 https://www.cnblogs.com/hhaostudy/p/15898030.html 准备导入SQL文件 新建连接 点击左上角连接 -> 选择MySQL 连接名:任意名称都可以,可输入localhost 主机&#x…

[计算机毕业设计]网络流量的在线恶意应用检测系统

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

【Pytorch with fastai】第 17 章 :基础神经网络

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

【LeetCode每日一题:799.香槟塔~~~模拟】

题目描述 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任…

〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径

✌ 大家好,我是 哈士奇 ,一位工作了十年的"技术圈混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 ✌ 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &am…