
面试题-队列
文章平均质量分 88
桃月十二_
这个作者很懒,什么都没留下…
展开
-
redis淘汰策略
volatile-lru,针对设置了过期时间的key,使用lru算法进行淘汰。allkeys-lru,针对所有key使用lru算法进行淘汰。volatile-lfu,针对设置了过期时间的key,使用lfu算法进行淘汰。allkeys-lfu,针对所有key使用lfu算法进行淘汰。volatile-random,从所有设置了过期时间的key中使用随机淘汰的方式进行淘汰。allkeys-random,针对所有的key使用随机淘汰机制进行淘汰。原创 2023-05-14 21:37:35 · 971 阅读 · 1 评论 -
RabbitMQ如何保证顺序消费
来源:https://www.bilibili.com/video/BV1zm4y1r7ct/?假如生产者A发送消息1,生产者B发送消息2,生产者C发送消息3,由于是没办法保证顺序性,所以进入队列的顺序可能变成了3,1,2。消费者拿到消息,应该判断redis中上一条消息有没有被消费,如果没有被消费,返回队列,如果被消费,正常消费。接着拿到消息2,发现消息1已经被消费(redis中判断),正常消费,同时把消息2放入redis;接着拿到消息3,发现消息2已经被消费,正常消费,同时把消息3放入redis。原创 2023-05-14 20:34:14 · 2213 阅读 · 0 评论 -
RabbitMQ如何避免丢失消息
镜像集群模式通过从主节点拷贝消息的方式使所有节点都能保留一份数据,一旦主节点崩溃,备节点就能完成替换从而继续对外提供服务。这解决了节点宕机带来的困扰,提高了服务稳定性,但是它并不能实现负载均衡,因为每个操作都要在所有节点做一遍,这无疑降低了系统性能。再者当消息大量入队时,集群内部的网络带宽会因此时的同步通讯被大大消耗掉,因此对于可靠性要求高、性能要求不高且消息量并不多的场景比较适用。原创 2023-05-14 17:26:49 · 3119 阅读 · 0 评论 -
Kafka和RabbitMQ有哪些区别,各自适合什么场景?
列出业务最重要的几个特点深入到消息队列的细节中去比较等我们对这些中间件的特点非常熟悉之后,甚至可以把业务分解成不同的子业务,再根据不同的子业务的特征,引入不同的消息队列,即消息队列混用。这样,我们就可能会最大化我们的获益,最小化我们的成本。说了这么多,其实还有很多 Kafka 和 RabbitMQ 的比较没有说,比如二者集群的区别,占用资源多少的比较等。以后有机会可以再提提。来源:https://zhuanlan.zhihu.com/p/453970771。原创 2023-03-08 19:47:21 · 1532 阅读 · 1 评论 -
Kafka的Rebalance机制
rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化,kafka会重新分配消费者消费分区的关系。比如consumer group中某个消费者挂了,此时会自动把分配给他的分区交给其他的消费者,如果他又重启了,那么又会把一些分区重新交还给他。注意:rebalance只针对subscribe这种不指定分区消费的情况,如果通过assign这种消费方式指定了分区,kafka不会进行rebanlance。转载 2022-11-05 17:59:52 · 870 阅读 · 0 评论 -
kafka消费者组
消费者组是kafka提供的可扩展且具有容错性的消费者机制。既然是一个组,那么组内必然可以有多个消费者或消费者实例,它们共享一个公共的ID,即group ID。原创 2022-11-05 17:21:53 · 5739 阅读 · 0 评论 -
延时队列的实现
当接收到消息之后,我需要隔一段时间进行处理(相对于立马处理,它隔了一段时间,所以他叫延迟消息)。转载 2022-10-27 20:28:25 · 224 阅读 · 0 评论 -
【Kafka三】Kakfa API
Kafka 0.9 版本之前,offset 存储在 zookeeper,0.9 版本及之后,默认将 offset 存储在 Kafka的一个内置的 topic 中。除此之外,Kafka 还可以选择自定义存储 offset。offset 的维护是相当繁琐的,因为需要考虑到消费者的 Rebalace。当有新的消费者加入消费者组、已有的消费者退出消费者组或者所订阅的主题的分区发生变化,就会触发到分区的重新分配,重新分配的过程叫做 Rebalance。原创 2022-09-21 15:34:37 · 236 阅读 · 0 评论 -
【kafka】面试题
如果你发送消息的时候指定了 Partition 的话,所有消息都会被发送到指定的 Partition。为了确定消息是发送成功,我们要判断消息发送的结果。比如你刚刚消费完消息之后,还没提交 offset,结果自己挂掉了,那么这个消息理论上就会被消费两次。我们知道 Kafka 中 Partition(分区)是真正保存消息的地方,我们发送的消息都被放在了这里。自动提交的话会有一个问题,试想一下,当消费者刚拿到这个消息准备进行真正消费的时候,突然挂掉了,消息实际上并没有被消费,但是 offset 却被自动提交了。原创 2022-09-21 15:50:41 · 1148 阅读 · 0 评论 -
【Kafka二】架构深入
Kafka架构深入原创 2022-08-18 14:46:10 · 738 阅读 · 0 评论 -
【Kafka一】概述
kafka原创 2022-08-17 11:16:20 · 830 阅读 · 0 评论 -
RabbitMQ
1.应用场景1.异步处理应用场景:用户注册后,需要发注册短信。1.串行方式(用户请求用户系统进行注册,注册完成后,调用message系统进行发送短信提醒,等message系统处理完以后才给用户注册结果)2.并行方式(用户请求用户系统进行注册,注册完成后,给message系统发送消息,异步发送短信提醒,返回注册结果)· 提升用户体验2.削峰应用场景:秒杀活动中1.服务器收到请求后,首先写入消息队列,加入消息队列长度超过最大值,则直接返回售罄等提示2.秒杀业务根据消息队列中的请求信息,再做后原创 2021-02-10 15:45:42 · 1511 阅读 · 1 评论