kafka

作者: 侧耳倾听y | 来源:发表于2021-06-19 15:44 被阅读0次

kafka的概念

什么是kafka

kafka是一个消息系统,由linkedin于2011年设计开发,用作linkedin的活动流(activity stream)和运营数据处理管道(pipeline)的基础。

kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:

  1. 以时间复杂度O(1)的方式提供消息持久化能力,即使对TB以上的数据也能保证常熟时间复杂度的访问性能:
  2. 高吞吐率。即使在非常廉价的商业机器上也能做到单机支持每秒100k条以上消息的传输
  3. 支持kafka server间的消息分区,及分布式消费,同时保证每个分区内的消息顺序传输
  4. 同时支持离线数据处理和实时数据处理
  5. scale out:支持在线水平扩展

kafka的基本概念

1.broker

kafka集群包含一个或多个服务器,这种服务器被称为broker

  1. topic:每条发送到kafka集群的消息都有一个类别,这个类别被称为topic。物理上,不同topic的消息分开存储;逻辑上同一个topic的消息虽然保存于一个或多个broker上,但用户只需指定消息的topic即可生产或消费数据,不必关系数据存于何处
  2. partition:partition是物理上的概念,每个topic包含一个或多个partition,每个分区在物理上对应一个文件夹,该文件夹里面存储了这个分区的所有消息和索引文件。在创建topic时可指定parition数量,生产者将消息发送到topic时,消息会根据 分区策略 追加到分区文件的末尾,属于顺序写磁盘,因此效率非常高

分区策略


多Partition支持水平扩展和并行处理, 顺序写入提升吞吐性能
  1. producer:负责发布消息到kafka broker
  2. consumer:消息消费者,向kafka broker读取消息的客户端
  3. consumer group:每个consumer属于一个特定的consumer group。可为每个consumer指定group name,如不指定group name属于默认的group

partition和replica

4节点3副本2确认

topic特性

通过partition增加可扩展性
通过顺序写入达到高吞吐
多副本增加容错

kafka的集群配置

ISR
rebalance
hot partition

kafka的高级特性

客户端实现序列化/分区/压缩操作

生产者-确认模式

  • ack = 0:只发送不管有没有写入broker
  • ack = 1:写到leader就认为成功
  • ack = -1/all:写入到最小副本数成功

生产者特性

  • 同步发送
  • 异步发送

生产者特性-顺序保证

生产者特性-消息可靠性传递

消费者组

相关文章

网友评论

      本文标题:kafka

      本文链接:https://www.haomeiwen.com/subject/gdfflltx.html