[发明专利]一种基于Disruptor和注解的高性能内存队列调度方法在审
申请号: | 202211699411.5 | 申请日: | 2022-12-28 |
公开(公告)号: | CN115904758A | 公开(公告)日: | 2023-04-04 |
发明(设计)人: | 宋桂宇 | 申请(专利权)人: | 重庆富民银行股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/448;G06F9/50 |
代理公司: | 重庆强大凯创专利代理事务所(普通合伙) 50217 | 代理人: | 黄书凯 |
地址: | 401121 重庆市渝*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 disruptor 注解 性能 内存 队列 调度 方法 | ||
本发明涉及内存队列调度技术领域,具体为一种基于Disruptor和注解的高性能内存队列调度方法。包括:项目启动阶段初始化消费者,包括在需要消费消息加上方法的标志性注解或者类的标志性注解,并在项目启动的时候扫描所有加上标志性注解的方法和加上标志性注解的类,为每个方法生成一个对象;生产者发送消息,包括S21:在需要发送消息的方法上加上发送的标志性注解;根据topic路由表将消息内容推送到ringbuffer中;消费者消费消息,采用线程池的工作线程并行处理所述ringbuffer内存队列中的消息。本技术方案能够在保留Disruptor的高性能的同时减少开发配置工作量,提升消费效率。
技术领域
本发明涉及内存队列调度技术领域,具体为一种基于Disruptor和注解的高性能内存队列调度方法。
背景技术
在一个消息队列内部,因各种原因所致,有时候会出现消息体无法有效出列的情况,这种情况下,如果不及时为之调度,将导致消息队列阻塞,从而影响其他消息体的正常消费,甚至导致相关上下游服务的崩溃,因此需要利用技术方案实现消息队列防阻塞。
现有技术在同一个系统内部进行消息推送时,用Kafka、RabbitMQ等系统间传递消息的消息队列,可能会面临浪费性能和服务器的问题,而java原生的ArrayBlockingQueue等队列的性能较差且不方便扩展。以Disruptor作为基础的内存队列具有很高的性能,但其本身仍存在的调用接口较为繁琐、生产者不能阻塞等待消费结果、消费者只能串行消费等问题。
发明内容
本发明的目的在于:提出一种基于Disruptor和注解的高性能内存队列调度方法,该技术方案能够在保留Disruptor的高性能的同时解决上述问题。
为解决上述问题,本发明提供的基础方案:一种基于Disruptor和注解的高性能内存队列调度方法,包括:
项目启动阶段初始化消费者,包括在需要消费消息加上方法的标志性注解或者类的标志性注解,并在项目启动的时候扫描所有加上标志性注解的方法和加上标志性注解的类,为每个方法生成一个对象;
生产者发送消息,包括S21:在需要发送消息的方法上加上标志性注解;
根据topic路由表将消息内容推送到ringbuffer中;
消费者消费消息,采用线程池的工作线程并行处理所述ringbuffer内存队列中的消息。
基础方案的有益效果:本技术方案使用Disruptor作为底层队列实现,保证高性能;使用标志性注解作为生产者和消费者的实现方式,降低接口调用频率,减少开发配置工作量;使用线程池作为消费者的并行消费,提升消费效率,且具备了可选的生产者阻塞等待消费结果;同时根据线程池大小可调节的特性,可根据实际情况大小控制可同时消费的消息个数。
作为优选方案,所述项目启动阶段初始化消费者的步骤包括:
S11:在需要消费消息加上方法的标志性注解@OnEvent或者类的标志性注解@Consumer;
S12:项目启动的时候扫描所有加上@OnEvent注解的方法和加上@Consumer注解的类,给每个方法生成一个Disruptor的EventHandler对象;
S13:将所有的EventHandler对象根据topic分组,每个topic生成一个Disruptor对象;
S14:在DisruptorFactory里面维护topic到Disruptor对象的映射关系。
本技术方案,进行topic分组所有的消息将会按照topic被均匀地分布到不同的分区中,这样就实现了负载均衡和水平扩展,也能更好地容错。
作为优选方案,所述生产者发送消息的步骤还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆富民银行股份有限公司,未经重庆富民银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211699411.5/2.html,转载请声明来源钻瓜专利网。