10.什么是 Kafka 中的模式以及为什么它对于分布式系统很重要?
在 Kafka 中,模式定义了数据的结构和格式,例如 CustomerID(整数)、CustomerName(字符串)和 Designation(字符串)字段。
在像Kafka这样的分布式系统中,生产者和消费者必须就数据的格式达成一致,以避免交换数据时出现错误。 Kafka 模式注册表管理和执行这些模式,确保生产者和消费者都使用兼容的版本。
Schema 注册表存储 schema(通常采用 Avro、Protobuf 或 JSON Schema 等格式)并 土耳其电话数据 支持 schema 演化,。随着模式的发展,这可以确保数据交换的顺利进行和系统的可靠性。
模式注册如何与生产者/消费者一起工作
模式注册如何与生产者/消费者一起工作(图片由作者提供)
高级卡夫卡面试问题
对于更高级的 Kafka 用户,面试问题可能更具技术性。
11、Kafka如何保证消息防丢失?
Kafka 采用多种机制来防止消息丢失并确保可靠的消息传递:
手动补偿:消费者可以禁用自动补偿确认,并在成功处理消息后手动确认,以避免消费者崩溃时丢失未处理的消息。
生产者确认 (acks=all ):设置acks=all生产者可确保消息在被视为成功写入之前得到所有同步副本的确认,从而降低代理故障时消息丢失的风险。
复制(min.insync.replicas和replication.factor):Kafka将每个分区的数据复制到多个broker。大于 1 的复制因子可确保容错能力,即使中介发生故障,也允许数据保持可用。该设置min.insync.replicas可确保在写入消息之前有最少数量的副本确认收到消息,从而确保更高的数据持久性。例如,复制因子为 3 时,如果一个代理发生故障,其他两个代理上的数据仍然可用。
生产者重试:将重试设置为较高的值可确保生产者在发生暂时性故障时重试发送消息。结合仔细的配置,例如max.in.flight.requests.per.connection=1,这可以减少消息重新排序的可能性,并确保消息最终被传递而不会丢失。
12.Kafka与RabbitMq有何不同?
Kafka 和 RabbitMQ 是两种流行且在架构和使用方面不同的消息系统。您可以看到它们在关键领域的比较: