限制进入系统的请求在1w之内,限流的设计方案及RabbiMq模式总结

文章介绍了令牌桶算法用于系统限流的基本原理和实现方案,通过Redis存储和更新令牌数量。同时,详细阐述了RabbitMQ的四种消息传递模式:Simple(点对点),Work(竞争消费者),Fanout(广播),Routing(直连)以及Topic(主题)模式,这些模式满足不同场景下的消息处理需求。
摘要由CSDN通过智能技术生成

要限制进入系统的请求在1w之内,可以使用令牌桶算法进行限流。令牌桶算法是一种基于令牌桶的算法,可以平滑地限制请求的流量,避免系统过载。

具体实现方案如下:

  1. 创建一个令牌桶,初始时桶中有1w个令牌。

  2. 对于每一个请求,从令牌桶中获取一个令牌,如果桶中没有令牌,则拒绝该请求。

  3. 每秒钟向令牌桶中添加n个令牌,保证桶中的令牌数量不超过1w个。

  4. 可以使用Redis的计数器功能实现令牌桶算法。具体来说,可以使用Redis的INCR命令来实现计数器,每秒钟使用Redis的ZADD命令将当前时间戳作为分值,将当前时间戳加上1秒作为成员值,将令牌数量作为分值,将当前时间戳作为成员值,然后使用Redis的ZREVRANGEBYSCORE命令获取当前时间戳前1秒内的成员值,计算出令牌数量,判断是否超过1w个令牌。

  5. 如果请求被拒绝,则可以返回一个错误码或者页面,提示用户稍后再试。

需要注意的是,令牌桶算法可以平滑地限制请求的流量,但是不能保证每个请求都能够得到及时的响应。因此,在实际应用中,需要根据业务需求和系统资源情况进行权衡和调整。

RabbitMQ有一下几种主要的消息传递模式:

  1. Simple模式:也称为点对点模式,是一种基本的消息传递模式。在这种模式下,一个生产者发送一条消息到一个队列,一个消费者从队列中获取消息并进行处理。一个消息只能被一个消费者消费。

  2. Work模式:也称为竞争消费者模式,是一种多个消费者共同消费消息的模式。在这种模式下,一个生产者发送一条消息到一个队列,多个消费者从队列中获取消息并进行处理。一个消息只能被一个消费者消费。

  3. Fanout模式:也称为广播模式,是一种一对多的消息传递模式。在这种模式下,一个生产者发送一条消息到一个交换机,交换机将消息广播到所有绑定到它上面的队列中。每个消费者都会收到一份完整的消息。

  4. Routing模式:也称为直连模式,是一种根据路由键进行消息传递的模式。在这种模式下,一个生产者发送一条消息到一个交换机,交换机根据消息的路由键将消息路由到一个或多个绑定到它上面的队列中。每个消费者只会收到与自己关注的路由键匹配的消息。

  5. Topic模式:也称为主题模式,是一种根据匹配规则进行消息传递的模式。在这种模式下,一个生产者发送一条消息到一个交换机,交换机根据消息的主题(Topic)进行匹配,将消息路由到一个或多个绑定到它上面的队列中。每个消费者只会收到与自己关注的主题匹配的消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值