这两天在互联网冲浪的时候,翻到不少用户吐槽 vivo 最近新品 vivo X200 Pro 在拍摄时频繁出现眩光,但上市前拿到机子的测评博主并没有在测评中提到。
前几天影视飓风发了一期视频测评了这个问题,还给出了一个最简单的解决办法——换个全包手机壳。vivo 官方急忙在大中午发了通告。
正好秋招的各家中大厂都在陆续开奖,我就去翻了翻 vivo 今年的情况:相比其他几家互联网公司,刚刚开奖的 vivo 给得有些出乎意料的低。
看同学目前的反馈,今年 vivo 白菜档在 15k~17k,sp 在 20k +,目前看到最高的 ssp 是 28k * 15,加上每月 1k5 的房补。
某客上的投票可以看出,虽然白菜各有不同,但拿到白菜的同学还是大多数。即便一部分同学每月有 1k5 的房补,但整体薪资不算很高。
同是步步高集团旗下的手机品牌,今年 OPPO 给的要大方多了。OPPO 今年的普通 offer 年薪都有 30w,更别说 SSP 。因此不少同学在 vivo 开奖后选择了拒绝。
泡池子和拿白菜,实属秋招中最令人焦虑的两件事。
但要拿到更多的 offer ,面试中就需要顺利通过面试官的项目追问、八股文拷打。面试鸭现在已经有 200+ 面试题库,9000+ 道高频面试题,除了传统八股文之外,还有场景题、项目题、系统设计题、25 届秋招热题、企业真实面经、刷题路线等,帮助你学到真技术、360° 全方位无死角吊打面试官!
今天就来看这道题。
消息队列的模型有哪些?
回答重点
常见的消息队列模型主要有以下两种:
队列模型(也称点对点模型):
在队列模型中,消息从生产者发送到队列,并且每条消息只能被一个消费者消费一次。消费之后,消息在队列中被删除。 适用于任务处理类场景,如一个任务只需要一个处理者执行。
发布/订阅模型(Publish/Subscribe):
在发布/订阅模型中,生产者将消息发布到某个主题(Topic),所有订阅了该主题的消费者都会接收到该消息。 每个订阅者都会接收到相同的消息,适用于广播通知、实时推送等场景。
扩展知识
队列模型(点对点模型)
生产者往某个队列里面发送消息,一个队列可以存储多个生产者的消息,一个队列也可以有多个消费者,但是消费者之间是竞争关系,即每条消息只能被一个消费者消费。
发布/订阅模型
为了解决一条消息能被多个消费者消费的问题,发布/订阅模型就来了。该模型是将消息发往一个Topic 即主题中,所有订阅了这个 Topic 的订阅者都能消费这条消息。
其实可以这么理解,发布/订阅模型等于我们都加入了一个群聊中,我发一条消息,加入了这个群聊的人都能收到这条消息。
那么队列模型就是一对一聊天,我发给你的消息,只能在你的聊天窗口弹出,是不可能弹出到别人的聊天窗口中的。
讲到这有人说,那我一对一聊天对每个人都发同样的消息不就也实现了一条消息被多个人消费了嘛。
是的,通过多队列全量存储相同的消息,即数据的冗余可以实现一条消息被多个消费者消费。
RabbitMQ 就是采用队列模型,通过 Exchange 模块来将消息发送至多个队列,解决一条消息需要被多个消费者消费问题。
这里还能看到假设群聊里除我之外只有一个人,那么此时的发布/订阅模型和队列模型其实就一样了。
小结一下
队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以通过消息全量存储至多个队列来解决一条消息被多个消费者消费问题,但是会有数据的冗余。
发布/订阅模型兼容队列模型,即只有一个消费者的情况下和队列模型基本一致。
RabbitMQ 采用队列模型, RocketMQ 和 Kafka 采用发布/订阅模型。
RabbitMQ 的发布/订阅模式在本质上依然是基于队列模型的,只是通过引入多队列和交换机的绑定,同时将消息发给多个队列,模拟出消息发布/订阅的效果。
最后
再来推荐下我们的面试刷题网站和小程序:面试鸭!
咱们面试鸭立志成为一款题库全面、持续更新、题解优质的刷题神器,主要目的就是为了彻底解决所有你能想到的八股文学习痛点!
我们精选了近两年的高频面试真题,已经有 9000 多道面试题目啦,由大厂资深面试官手写答案,押题命中率超高!
不仅有传统八股文,场景题、项目题、系统设计题等等应有尽有,还在不断更新中!
现在邀请好友注册并成为会员,还可获得最高 50% 的分佣🧧!详情见面试鸭拉新邀请有赏规则(网页版面试鸭点击头像查看)
网页端网址:mianshiya.com
欢迎关注面试鸭,每日获取经典面试题和优质题解,我们下期见~