Kafka

Data really powers everything that we do

生产者使用

img 架构介绍

Kafka最初是由Linkedin公司开发的,是一个分布式的、可扩展的、容错的、支持分区的(Partition)、多副本的(replica)、基于Zookeeper ( 也可以基于Kraft) 框架的发布-订阅消息系统,Kafka适合离线和在线消息消费。它是分布式应用系统中的重要组件之一,也被广泛应用于大数据处理。Kafka是用Scala语言开发,它的Java版本称为Jafka。Linkedin于2010年将该系统贡献给了Apache基金会并成为顶级开源项目之一。

kafka-event-system

发布/订阅消息

发布/订阅消息是一种模式: 数据的发送者不会直接指定给接收者,发布者对消息进行某种分类,接受者订阅接收某些类别的消息,发布订阅系统通常有一个代理,即消息发布的中心点

image-20240709184805972

死信队列

死信队列(DLQ)是一种特殊类型的消息队列,用于临时存储软件系统由于错误而无法处理的消息。消息队列是支持分布式系统中的异步通信的软件组件。借助它们,您可以在软件服务之间发送任何数量的消息,且不需要消息接收器始终处于可用。死信队列特别用于存储没有目的地或无法由预期接收器处理的错误的消息。

贴一个创建再驱动策略: 尝试发送失败后发送到死信队列里,在根据重试次数以及策略重新投递或者抛出错误

img

幂等生产者

避免在网络超时 (生产者没收到Leader的响应消息但是Leader写入了其他的follow然后重发到新生成的Leader的情况)等其他情况下导致的消息重复的策略

对于幂等生产者,每条消息将包含一个唯一标识的生产者ID(PID)和一个序列号。这些与目标主题和分区一起,唯一地标识每条消息

原子操作 事务

image-20240809182555941