什么是kafka

本文深入解析了Kafka作为消息引擎系统和分布式流处理平台的特点,对比了其与传统消息队列的区别,如rabbitMQ和activemq。阐述了Kafka在高吞吐量、消息顺序处理及削峰填谷方面的优势,以及其在高可用性和扩展性上的出色表现。同时,文章还详细介绍了Kafka的术语,包括Broker、Record、Topic、Partition、Offset、Producer、Consumer、Consumergroup、Replica和Rebalance等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kafka是一款消息引擎系统,也是分布式流处理平台。

顺便说下,作为消息引擎系统Kafka的对手有Pulsar,分布式流处理平台有Flink,略强于kafka。

很多人说kafka和传统mq到底有什么区别?太具体的请自行度娘,这里讲几点:

1. 从宏观角度讲,传统mq是消息队列,kafka是消息引擎系统和流处理平台,前者小而全,后者大,有些方面考虑的没那么全,比如支持协议,rabbitMQ支持的很多(有AMQP,MQTT),比如支持复杂的consumer routing,kafka在这些方面就没有mq好。

2. kafka消费者读取消息是可以重演的,消息基于日志结构的,消费者仅读取数据,不会删除消息数据。而rabbitmq和activemq,一旦消息被成功处理,就会从broker上删除。

3. 如果你系统需要较高的吞吐量,消息处理时间很短,并且关心消息的顺序,就考虑用kafka;

而如果消息处理逻辑非常复杂,处理代价很高,同时不关心消息之间的顺序,建议用传统的MQ。

4. 既然是消息引擎系统,kafka在高可用,高性能,扩展性方面就非常的出色,从下文中“kafka术语”就可以略知一二。

 

一、kafka种类
 包含Apache Kafka,Confluent Kafka,CDH/HDP Kafka。
 一般建议是选择社区版 Kafka,即Apache Kafka,优势是迭代速度快,社区丰富,缺点是高级组件较少,你可以结合其他组件一起使用,比如:kafka streams,connect,manager。

二、kafka作为消息引擎系统,最重要的作用是削峰填谷。

三、kafka消息传输格式是二进制的字节序列;传输模式有点对点模型和发布/订阅模型,点对点一般说的就是传统的消息队列;通信协议都是基于TCP的,可能主要原因是:可保障消息的可靠性传输,自动重传丢失的报文。

四:kafka术语:
      Broker:kafka服务实例,一个kafka集群包含多个broker,一般一台机器部署一个broker。

      Record:消息,kafka处理的对象

      Topic: 主题,具体的业务,某业务类型的Record集合

      Partition: 分区,一个topic可以有很多partition,在磁盘上以log体现,采用顺序追加log的方式添加record 。

     Offset:消息位移,分区中消息的位置信息,是个单调递增的值。

     Producer:生产者,往topic发布消息的应用程序(客户端)

     Consumer:消费者,从topic订阅消息的应用程序(客户端)

     Consumer group:消费者组,包含多个消费者,同时消费多个partition提高吞吐量

     每个consumer属于一个特定的consumer group。同一topic的一条消息只能被同一个consumer group内的一个consumer消费,                    

     但多个consumer group可同时消费这一消息。

   Replica:副本,kafka中同一消息被copy到多个地方以提供数据冗余,实现高可用。replica分leader replica和follower replica,

    leader replica负责读写请求,follower replica只是同步leader replica消息,通过replica选举机制实现故障转移。

  Rebalance:重平衡,consumer group内某个consumer 实例挂掉后,其它consumer实例会自动重新分配订阅topic partition,实现consumer端高可用。

Coordinator:协调者,Rebalance重平衡就依赖此组件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值