[发明专利]一种利用消息队列优化服务器处理请求的方法在审
申请号: | 201710101436.3 | 申请日: | 2017-02-23 |
公开(公告)号: | CN106941461A | 公开(公告)日: | 2017-07-11 |
发明(设计)人: | 张启亮;黄凯 | 申请(专利权)人: | 江苏徐工信息技术股份有限公司 |
主分类号: | H04L12/863 | 分类号: | H04L12/863 |
代理公司: | 徐州市三联专利事务所32220 | 代理人: | 耿岩 |
地址: | 221000 江苏省徐*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 消息 队列 优化 服务器 处理 请求 方法 | ||
技术领域
本发明涉及数据通信技术领域,具体是一种利用消息队列优化服务器处理请求的方法。
背景技术
“消息”是在两台计算机间传送的数据单位。“消息队列”是在消息的传输过程中保存消息的容器。消息队列将消息从源传递到目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。传统的用户和服务器之间的通信不可避免通信过程的复杂性,而用户往往希望关注的只是最后得到的通知,利用消息队列可以很好的实现这一需求。
发明内容
本发明提供了一种利用消息队列优化服务器处理请求的方法,解决了消息队列中信息丢失和重复不能同时实现的问题,较好的实现了用户和服务器之间的分离,提高了服务器处理请求的效率。
本发明是通过如下技术方案实现的:
一种利用消息队列优化服务器处理请求的方法,包括用户和服务器,在用户与服务器之间有消息队列,所述消息队列处理、合并用户请求消息,将处理结果推送给服务器执行,提高服务器处理用户请求的效率。
优选的是,所述消息队列分为三种类型:可执行消息队列:存放的用户请求直接推送给相应的空闲服务器执行;排队等候消息队列:存放的用户请求按到达的先后顺序在此队列中排队等候;备份消息队列:存放复制过的用户请求消息。
优选的是,用户请求到达消息队列后的处理过程如下步骤:
步骤一:用户请求到达消息队列端后,消息队列判断此时服务器是否处于空闲状态;若是,则请求消息被放入可执行消息队列中,依次推送给服务器执行;步骤二:若服务器处于忙碌状态,则用户请求消息被放入排队等候队列,依次加入队列末尾排队等候;步骤三:当有新的用户请求到达后,消息队列将判断排队等候消息队列中是否有与该新到达的请求相同的消息:如果有,则依次遍历排队等候消息队列,找到与新到达请求相同的消息所处的位置,将两个请求消息进行合并,放入该位置;如果排队等候队列中没有与该请求相同的消息,则新到达的请求将被放到排队等候队列的末尾,等待执行;步骤四:当服务器由忙碌状态转换到空闲状态后,可执行消息队列将排队等候队列中存放的请求消息依次调入,并推送给服务器端执行;步骤五:推送请求消息之前,将备份一份此请求放入备份消息队列中。
优选的是,所述消息队列与所述服务器之间利用报文传送进行通信。
优选的是,所述报文传送包括以下报文:Request报文:用户向消息队列发送请求消息使用的报文;Reply报文:服务器向用户返回处理结果使用的报文;Push报文:可执行消息队列向服务器推送可执行的请求消息使用的报文;Invalid报文:服务器返回无效的请求给消息队列使用的报文;Ack报文:服务器确认消息队列端发送的请求消息使用的报文。
优选的是,所述消息队列将可执行消息推送给服务器之前,将会做一份备份,放入备份消息队列中;如果请求消息推送失败,将重传备份消息队列中的该请求消息;服务器成功收到此请求消息后,备份队列中的备份信息将被删除;每发送一次备份消息,将会在此备份消息中添加一个序列号来防止因链路故障而导致服务器端接收到重复消息。
优选的是,所述消息队列和所述服务器沟通过程如下步骤:步骤一:取出可执行消息队列最前端的请求消息,将此请求消息备份一份放入备份消息队列中,利用Push报文将该请求消息发送到服务器;步骤二:服务器接收到此请求消息后,将判断是否能够处理此请求消息:如果能处理,则向消息队列端返回一个Ack报文,确认自己正确收到并可以处理此消息;如果不能,则向消息队列返回一个Invalid报文,通知消息队列端自己无法处理此请求消息;步骤三:如果消息队列收到服务器发来的报文是Ack报文,则将备份消息队列中关于该已被确认的请求消息的备份删除;步骤四:如果消息队列端收到服务器发来的报文是Invalid报文,则将备份消息队列中的该请求消息通过Push报文发向其他的空闲服务器;步骤五:如果消息队列端没有收到服务器发回的任何响应报文,则将会重传备份消息队列中的该请求消息的备份,并在此备份消息中加入一个起始序列号1,此后每一次重传,序列号都会增加1,直至序列号加到5,便直接删除备份消息队列中的该请求消息的备份。
优选的是,所述步骤五中,造成消息队列收不到服务器发回的任何响应报文的原因是链路故障造成的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏徐工信息技术股份有限公司,未经江苏徐工信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710101436.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种平板变压器引脚焊接工装
- 下一篇:一种带有磁吸治具的继电器自动沾锡装置