[发明专利]一种基于lookup操作的多线程消息处理方法在审
申请号: | 202010469760.2 | 申请日: | 2020-05-28 |
公开(公告)号: | CN111737026A | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 李伟;李雪生 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/182 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 孙玉营 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 lookup 操作 多线程 消息 处理 方法 | ||
本发明提供一种基于lookup操作的多线程消息处理方法,包括:增加lookup消息处理线程池,并设置所述线程池的最少处理量;设置起始位置并遍历消息队列,根据所述最少处理量筛选出待处理消息队列;将待处理消息队列中的消息平均分配给所述线程池的线程;所述各个线程同时进行lookup处理操作。本发明在消息队列中主动将集中发送至MDS的lookup消息转移至对应的线程池中,同时行执行lookup处理操作,大大节约消息队列整体的消息处理时间。
技术领域
本发明分布式文件处理技术领域,具体涉及一种基于lookup操作的多线程消息处理方法。
背景技术
目前的分布式文件系统中,很多场景下在执行实际的操作前都需要执行至少一次lookup操作,例如在某个目录下创建文件或者删除文件之前进行lookup操作以确定文件是否真的存在,从而协助上层模块是否可执行实际的操作。在所有消息中,很多场景下的lookup操作只是为了获取文件的基本属性,而不会去写入改变该文件,此类操作并不会影响数据的一致性和准确性。
此类lookup操作消息在实际应用中经常会在一个较短的时间段内集中的发送到MDS的消息队列中,而在MDS中,所有的消息必须等上一个消息处理完成后,才能从消息队列中取出下一个消息进行处理,以保证数据的一致性和正确性。假设消息队列中同时存在n个消息要处理,即第n个消息的耗时可表示如下:耗时n=本消息处理时间+前面n-1个消息的处理时间。如果在前面n-1消息中存在一个高耗时的消息处理操作,例如网络延迟等,就会导致队列中该消息后面的消息均出现高耗时,从未导致上层应用连续多次的性能波动。
发明内容
针对现有技术的上述不足,本发明提供一种基于lookup操作的多线程消息处理方法,以解决上述技术问题。
本发明提供一种基于lookup操作的多线程消息处理方法,包括:
获取分布式文件系统需进行lookup处理操作的消息队列;
在所述消息队列中增加lookup消息处理线程池,设置达到所述线程池处理消息的最低处理量;
遍历消息队列,并根据所述最低处理量筛选出待处理消息队列;
将待处理消息队列中的lookup类型消息平均分配给所述线程池的线程,线程池中的多个线程同时处理所述lookup类型消息。
进一步的,所述遍历消息队列,并根据所述最低处理量筛选出待处理消息队列,包括:
配置当前处理消息之后第M个消息为所述起始位置;
从起始位置开始遍历当前消息队列,将连续属于lookup类型的消息数量达到最少处理量的消息作为待处理消息队列。
进一步的,所述方法还包括:
在所述待处理消息队列的起点插入一个自定义类型消息;
监控所述自定义类型消息的处理状态:当所述自定义类型消息被处理时,暂停原有消息处理线程,线程池中的多个线程同时处理所述lookup类型消息。
进一步的,所述方法还包括:
增加一个新的线程,所述新的线程用于处理所述自定义类型消息。
进一步的,所述方法还包括:
各线程处理完成后单独向上层模块返回处理结果。
进一步的,在所述消息队列中增加lookup消息处理线程池,包括:
增加一个线程池,所述线程池用于处理消息队列中的lookup类型消息;
并设置所述线程池默认休眠状态;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010469760.2/2.html,转载请声明来源钻瓜专利网。