面试八股-各种中间件

1.消息队列

1.1.应用场景

  • 异步处理 减少请求的等待时间,将请求放入队列待处理,提高总体性能
  • 应用解耦 将消息存入队列,下游服务订阅并消费
  • 流量削峰 在高峰期应对消息过多导致崩溃的情况,MQ积压请求,系统每次从MQ拉取能力范围内的数据

1.2.示例

  • 电商系统
  • 日志收集系统
  • JMS

1.3.消息模型

  • 队列模型:消费者之间是竞争关系,即每条消息只能被一个消费者消费

  • 发布订阅模型:将消息发送至一个topic中,所有订阅该topic的服务消费(同时也是kafka的原理)

1.4.消费方式

  • 同步 收到消息之前阻塞
  • 异步 消息到达之后,自动调用onMessage方法

1.5.各种消息队列实现的比较

Kafka 1.1.0 RabbitMQ 3.6.10 RocketMQ 4.2.0
优先队列 不支持 支持,优先级0-10之间 支持,维护不同的优先级队列,根据message的优先级发送到对应的队列中
延迟队列 不支持 支持 支持
死信队列 不支持 支持 支持
重试队列 不支持 支持 支持
消费模式 pull pull+push pull+长轮询
广播消费 支持,Kafka对于广播消息的支持更加正统 支持 支持
批量消息 支持,生产者异步发送 支持 支持,生产者同步发送
消息回溯 支持Kafka支持offset和timestamp两种维度进行消息回溯 不支持,一旦被确认消费就会被删除 支持
消息堆积 支持,海量消息堆积,堆积能力和磁盘大小挂钩 支持,但是内存达到阈值时,性能会受到影响 支持海量消息堆积
持久化方式 消息队列,segment方式 支持 消息队列
消息追踪 不支持。消息追踪可以通过外部系统来支持,但是支持粒度没有内置的细腻 支持 支持
消息过滤 客户端级别的支持,可用过kafka stream进行消息过滤 不支持,但是二次封装一下也比较简单 支持,可通过message tag、属性进行过滤
多租户 不支持 支持 不支持
多协议支持 只支持定义协议,目前几个主流版本间存在兼容性问题 AMQS JMS,OpenMessaging
跨语言支持 当前版本Java编写,支持多种语言客户端 采用Erlang编写,支持多种语言客户端 Java C++ Go
流量控制 支持client和user级别,通过主动设置可将流控作用于生产者或消费者 流量控制基于credit-base算法,是内部被动触发的保护机制,用于生产者层面 RocketMQ提供了针对不同维度的流量控制
消息顺序性 支持普通的顺序消息,即对于单个分区的消息发送和消费是有序的,但是不保证不重复 顺序性条件比较苛刻,需要单线程发送,单线程消费并且不采用延迟队列、优先级队列等一些高级功能,某种意义上来说不支持顺序性 支持普通的顺序消息和严格
面试官要求你回答一个关于 Python 的典型问题时,下面是一个可能的八股文回答模板: 首先,我会对问题进行理解和分析,确保我准确地理解了问题的要求和背景。 然后,我会按照以下结构来回答问题: 1. **问题背景和解决思路**:我会简要介绍问题的背景和解决思路。例如,如果问题是关于列表的操作,我可能会解释什么是列表以及如何使用它们来存储和操作数据。 2. **核心代码实现**:接下来,我会给出一个基本的代码实现,以展示我对问题的理解和能力。我会尽量保持代码简洁而清晰,并结合注释来解释代码的每一步。 3. **优化和扩展**:在展示基本实现之后,我还可以讨论如何优化代码以提高性能或满足更复杂的需求。我可以提出一些常见的优化策略,例如使用生成器、使用递归等。 4. **错误处理和异常处理**:此外,我还可以谈谈在代码中处理错误和异常的重要性。我会提到一些常见的错误和异常类型,并解释如何使用 try-except 语句来捕获和处理它们。 5. **应用场景和实际例子**:最后,我会给出一些实际的应用场景和示例,以展示我对 Python 的灵活运用能力。我可以谈论一些常见的 Python 库和框架,以及它们在实际项目中的使用案例。 通过以上结构,我可以清晰地展示我对 Python 的理解、能力和经验,并给面试官留下一个积极的印象。当然,在回答问题时,我也会根据具体问题的要求进行适当调整和补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值