高并发条件下基于消息队列的流量控制系统及消息队列中间件技术方案

技术编号:38152820 阅读:13 留言:0更新日期:2023-07-13 09:18
针对高并发场景下短时间内流量暴增出现的系统性能问题,本发明专利技术提出一种高并发条件下基于消息队列的流量控制系统及消息队列中间件,该系统包括表示层、服务单元层、缓存层和数据层,上述消息队列中间件应用于上述系统;利用设计的消息队列实现了异步处理、应用解耦和流量削峰;以商品营销秒杀活动为例,实验表明,本发明专利技术能有效提升系统性能,消息队列能有效缓解服务器压力,在突发流量冲击下,服务器消息处理能力和响应速度显著提高,减少了系统TPS降低风险。降低风险。降低风险。

【技术实现步骤摘要】
高并发条件下基于消息队列的流量控制系统及消息队列中间件


[0001]本专利技术涉及流量控制领域,具体涉及一种高并发条件下基于消息队列的流量控制系统及消息队列中间件。

技术介绍

[0002]随着互联网技术的快速发展,越来越多电商企业选择线上发布销售新产品,通过举办促销活动,提高品牌的知名度。在商品营销活动场景中,短时间内用户请求过大,流量暴增,极易导致单位时间内服务器压力骤增,无法及时响应用户请求,导致系统宕机,出现商品超卖,系统可用性降低。因此,高并发和高可用已经成为电商企业网站的必备需求。

技术实现思路

[0003]本专利技术针对现有技术中的不足,提供一种高并发条件下基于消息队列的流量控制系统及消息队列中间件,在普通系统架构基础上,增加消息队列与数据缓存,通过微服务形式部署,以提升系统的并发性和可用性,通过Nginx技术的负载均衡策略,实现网站的高可用性,并设计一种消息队列OPPLMQ,使用消息队列的异步处理机制,对突发流量以及访问高峰期进行削峰处理,增强系统消息处理能力,减少响应时间和服务器压力,提高系统的高并发处理能力。
[0004]为实现上述目的,本专利技术采用以下技术方案:
[0005]一种高并发条件下基于消息队列的流量控制系统,包括表示层、服务单元层、缓存层和数据层;
[0006]所述表示层通过Vue框架搭建,负责承载用户动作请求、前后端数据交互和页面数据渲染等具体事务,表示层将用户、数据和服务进行联系,表示层包括前端地址、后端地址、路由守卫模块、路由控制模块、公共状态模块、服务请求模块和数据处理模块,用户独立访问系统前端地址和后端地址,在Vue路由控制下,引导URL索引资源的页面数据,并进行渲染;在表示层设立路由守卫模块,配置资源前置处理器,拦截非法以及未验证的用户请求;所述表示层还包括页面控制模块,用户获得资源后,在页面内进行事务处理,页面接收用户动作后,通过Axios对后端进行服务请求,并将返回的数据在页面内进行渲染;
[0007]所述服务单元层包括公共服务单元、邮件服务单元和消息队列服务单元,服务单元层通过公共服务单元接收表示层的用户请求,对请求数据进行解析处理,调用与请求对应的服务单元,解耦服务架构,进行统一格式响应返回,邮件服务单元承载邮件发送的具体功能,面向对象为服务单元层内部单元,只允许服务单元层内部调用;消息队列服务单元解决公共服务单元的数据承载与传输处理,提供数据事务接口与数据监控地址;
[0008]所述缓存层位于数据层与服务单元层之间,承担部分I/O事务,基于Mybatis和Redis设计数据库三级缓存,当用户请求命中缓存数据,则直接返回,省去解析、优化和执行等步骤,通过Redis搭建高速热数据缓存服务,承载服务的高I/O数据与临时热数据的存储,
Mybatis提供一级缓存来优化查询;
[0009]所述数据层使数据持久化,存储服务数据,提供业务数据,通过MySQL实现关系型数据持久模型,在服务单元层和缓存层调用下,通过事务查询提供数据操作,查询结果在服务单元层内进行处理,统一返回给用户。
[0010]为优化上述技术方案,采取的具体措施还包括:
[0011]进一步地,所述消息队列服务单元作为消息队列模型的消息中心,负责用户请求的写入、存储、读出、确认和重试,消息中心包含至少一条消息队列;所述消息队列根据队列的FIFO特性存储用户请求;所述公共服务单元作为消息队列模型的生产者或消费者,当公共服务单元接收用户请求时作为生产者,向消息队列服务单元写入用户请求,当公共服务单元接收商城的订单处理业务时作为消费者,读取消息队列服务单元存储的用户请求。
[0012]进一步地,所述服务单元层还包括流量控制器,所述流量控制器控制用户请求的流量,具体为:
[0013]流量控制器按照一定速率生成令牌并放入令牌桶中,处理用户请求前判断令牌桶内是否还存在令牌,如果存在令牌则申请取得令牌再处理用户请求,如果没有令牌则根据实际场景选择立即返回策略或阻塞等待策略。
[0014]进一步地,所述消息中心、生产者和消费者之间的通信方式包括点对点通信方式和发布订阅通信方式;
[0015]在点对点通信方式中,生产者将消息发送到消息队列,消费者从消息队列中获取消息,消息队列是存储消息的缓冲区,生产者与消费者身份可以互换;在发布订阅通信方式中,生产者生产的消息,会分发给所有的消息队列,所有和消息队列绑定的消费者均会订阅这一消息;
[0016]在抢购活动中,使用消息队列的点对点通信方式进行流量削峰,而商品秒杀活动中,则通过发布订阅通信方式进行单点数据的扩散性事务传递;用户请求与业务操作异步执行,当用户发出秒杀请求,系统处理成功后立即响应,同时将秒杀请求发送到一条独立命名的消息队列上,消息消费者订阅或监听该消息队列,获得秒杀请求并进行后续的业务处理,消费者无需对发布者做出同步回应,整个联系由消息中心处理并转发。
[0017]本专利技术还提出了一种消息队列中间件,应用于如上所述的高并发条件下基于消息队列的流量控制系统,包括消息队列服务端、消息队列客户端和通信管理器;
[0018]所述消息队列服务端承载着数据在消息队列中的运行逻辑与存储过程,所述消息队列客户端为消息队列接入端,所述通信管理器是消息队列服务端与消息队列客户端协定的一套数据交流协议,将通过内部指定的逻辑进行数据封装与传输,以此达到消息队列服务端与消息队列客户端双方的数据通信;
[0019]所述通信管理器包括容器单元、队列单元、队列信息、认证标签和队列键;所述容器单元用于承载信息传输任务,所述队列单元具体采用Java中的非阻塞队列。
[0020]为优化上述技术方案,采取的具体措施还包括:
[0021]进一步地,所述消息队列服务端采用Jooby Web框架实现,消息队列服务端包括OpplMessageQueue启动类、autoconfig程序包、content程序包、entity程序包、exception程序包、request程序包、tools程序包和Initializer类;
[0022]所述OpplMessageQueue启动类用于搭建服务组件,设置环绕日志打印,设置全局
异常控制,设置资源路径,设置外部组件,挂载路由与配置授权认证模块;
[0023]所述autoconfig程序包负责服务的自动配置,包括AutoBanner类、AutoConfig类和AutoSaveDisk类;所述AutoBanner类实现程序标识符输出;所述AutoConfig类实现自动化配置,包括user.oldb文件内用户与密码的启动读取;所述AutoSaveDisk类通过Netty的Channel通道对JSON格式数据实现数据持久化;
[0024]所述content程序包负责具体队列的实现,包括Queu类、QueueType类、AdminMq类、DirectQueue类、TopicQueue类、DirectController类与TopicContr本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高并发条件下基于消息队列的流量控制系统,其特征在于,包括表示层、服务单元层、缓存层和数据层;所述表示层通过Vue框架搭建,负责承载用户动作请求、前后端数据交互和页面数据渲染等具体事务,表示层将用户、数据和服务进行联系,表示层包括前端地址、后端地址、路由守卫模块、路由控制模块、公共状态模块、服务请求模块和数据处理模块,用户独立访问系统前端地址和后端地址,在Vue路由控制下,引导URL索引资源的页面数据,并进行渲染;在表示层设立路由守卫模块,配置资源前置处理器,拦截非法以及未验证的用户请求;所述表示层还包括页面控制模块,用户获得资源后,在页面内进行事务处理,页面接收用户动作后,通过Axios对后端进行服务请求,并将返回的数据在页面内进行渲染;所述服务单元层包括公共服务单元、邮件服务单元和消息队列服务单元,服务单元层通过公共服务单元接收表示层的用户请求,对请求数据进行解析处理,调用与请求对应的服务单元,解耦服务架构,进行统一格式响应返回,邮件服务单元承载邮件发送的具体功能,面向对象为服务单元层内部单元,只允许服务单元层内部调用;消息队列服务单元解决公共服务单元的数据承载与传输处理,提供数据事务接口与数据监控地址;所述缓存层位于数据层与服务单元层之间,承担部分I/O事务,基于Mybatis和Redis设计数据库三级缓存,当用户请求命中缓存数据,则直接返回,省去解析、优化和执行等步骤,通过Redis搭建高速热数据缓存服务,承载服务的高I/O数据与临时热数据的存储,Mybatis提供一级缓存来优化查询;所述数据层使数据持久化,存储服务数据,提供业务数据,通过MySQL实现关系型数据持久模型,在服务单元层和缓存层调用下,通过事务查询提供数据操作,查询结果在服务单元层内进行处理,统一返回给用户。2.根据权利要求1所述的高并发条件下基于消息队列的流量控制系统,其特征在于,所述消息队列服务单元作为消息队列模型的消息中心,负责用户请求的写入、存储、读出、确认和重试,消息中心包含至少一条消息队列;所述消息队列根据队列的FIFO特性存储用户请求;所述公共服务单元作为消息队列模型的生产者或消费者,当公共服务单元接收用户请求时作为生产者,向消息队列服务单元写入用户请求,当公共服务单元接收商城的订单处理业务时作为消费者,读取消息队列服务单元存储的用户请求。3.根据权利要求1所述的高并发条件下基于消息队列的流量控制系统,其特征在于,所述服务单元层还包括流量控制器,所述流量控制器控制用户请求的流量,具体为:流量控制器按照一定速率生成令牌并放入令牌桶中,处理用户请求前判断令牌桶内是否还存在令牌,如果存在令牌则申请取得令牌再处理用户请求,如果没有令牌则根据实际场景选择立即返回策略或阻塞等待策略。4.根据权利要求2所述的高并发条件下基于消息队列的流量控制系统,其特征在于,所述消息中心、生产者和消费者之间的通信方式包括点对点通信方式和发布订阅通信方式;在点对点通信方式中,生产者将消息发送到消息队列,消费者从消息队列中获取消息,消息队列是存储消息的缓冲区,生产者与消费者身份可以互换;在发布订阅通信方式中,生产者生产的消息,会分发给所有的消息队列,所有和消息队列绑定的消费者均会订阅这一消息;在抢购活动中,使用消息队列的点对点通信方式进行流量削峰,而商品秒杀活动中,则
通过发布订阅通信方式进行单点数据的扩散性事务传递;用户请求与业务操作异步执行,当用户发出秒杀请求,系统处理成功后立即响应,同时将秒杀请求发送到一条独立命名的消息队列上,消息消费者订阅或监听该消息队列,获得秒杀请求并进行后续的业务处理,消费者无需对发布者做出同步回应,整个联系由消息中心处理并转发。5.一种消息队列中间件,用于如权利要求1所述的高并发条件下基于消息队列的流量控制系统,其特征在于,包括消息队列服务端、消息队列客户端和通信管理器;所述消息队列服务端承载着数据在消息队列中的运行逻辑与存储过程,所述消息队列客户端为消息队列接入端,所述通信管理器是消息队列服务端与消息队列客户端协定的一套数据交流协议,将通过内部指定的逻辑进行数据封装与传输,以此达到消息队列服务端与消息队列客户端双方的数据通信;所述通信管理器包括容器单元、队列单元、队列信息、认证标签和队列键;所述容器单元用于承载信息传输任务,所述队列单元具体采用Java中的非阻塞队列。6.根据权利要求5所述的消息队列中间件,其特征在于,所述消息队列服务端采用JoobyWeb框架实现,消息队列服务端包括OpplMessageQueue启动类、autoconfig程序包、content程序包、entity程序包...

【专利技术属性】
技术研发人员:李海波琚森超
申请(专利权)人:江苏开放大学江苏城市职业学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1