美文网首页
kafka手记

kafka手记

作者: 不存在的里皮 | 来源:发表于2020-06-06 18:33 被阅读0次

参考

  • Kafka文件存储机制那些事

  • kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    1. zookeeper在kafka的作用是什么?
    2. kafka中几乎不允许对消息进行“随机读写”的原因是什么?
    3. kafka集群consumer和producer状态信息是如何保存的?
    4. partitions设计的目的的根本原因是什么?
  • kafka中的topic为什么要进行分区? 同时可阅读文中的参考文章

    • 分区对producer和consumer都是透明的
    • 只有一个分区,则数据都在一个broker上,读写性能有瓶颈。多个分区分布在多个broker上,可并行读写,提升性能
    • consume消费数据并不需要等到segment写满,只要有一条数据被commit,就可以立马被消费
    • 为什么有了partition还需要segment。如果不引入segment,一个partition直接对应一个文件(应该说两个文件,一个数据文件,一个索引文件),那这个文件会一直增大。同时,在做data purge时,需要把文件的前面部分给删除,不符合kafka对文件的顺序写优化设计方案。引入segment后,每次做data purge,只需要把旧的segment整个文件删除即可,保证了每个segment的顺序写

总结: kafka入门介绍

参考自Kafka 入门介绍,建议看该文的“小结”部分

  • partition的作用是提高并发性。replication是为了增加副本,容灾。
  • Kafka 只会保证在 Partition 内消息是有序的,而不保证全局有序。
  • 无论消息是否被消费,除非消息到期 Partition 从不删除消息。到期后消息被删除。
  • Partition 会为每个 Consumer Group 保存一个偏移量,记录 Group 消费到的位置。
  • 一个 Partition只会被一个Consumer Group消费一次。而每个Consumer Group可能有多个Consumer,所以换句话说,同一个 Consumer Group 内,一个 Partition 只能被一个 Consumer 消费。
    • 推论1:如果 Consumer 的数量大于 Partition 数量,则会有 Consumer 是空闲的。
    • 推论2:如果 Consumer 的数量小于 Partition 数量,则一个 Consumer 可能消费多个 Partition。


  • 同一个 Partition 有多个副本,并分布在不同的 Broker 上,那么 Producer 应该写入到哪一个副本上呢?Consumer 又应该从哪个副本上读取呢?
  • Kafka 的各个 Broker 需要与 Zookeeper 进行通信,每个 Partition 的多个副本之间通过 Zookeeper 的 Leader 选举机制选出主副本。所有该 Partition 上的读写都通过这个主副本进行。
    其它的冗余副本会从主副本上同步新的消息。就像其它的 Consumer 一样。
  • kafka partition和group 提到了__consumer_offsert
  • YHYR_YCY Partition Replication
  • jewes

kafka教程

  • lizhitao kafka教程 kafka设计、优化、运维、异常分析、源码等
  • qiankunli kafka 架构 图片众多,从各个角度讲述了kafka server端的架构
  • wangzzu kafka源码分析
    内含多篇源码文章,十分齐全
  • kafka-in-a-nutshell 评论区里cs94njw提出了由于__consumer_offset只有一个副本,当对应节点宕机时,无法消费的问题。
    • 一个topic可以有多个partition
    • 每个partition可视为一个log
    • each partition can be placed on a separate machine to allow for multiple consumers to read from a topic in parallel. 一个partition只存在于一台机器上


      Log的写入和读取
    • producer根据负载均衡写往topic的各个partition,consumer则以类似方式消费每个partition
    • Consistency and Availability 比较了集群崩溃时有副本和无副本的区别。
    • 客户端Consistency 生产者、消费者各有三种级别的处理方式:
      • 生产者:ack=0、1、all。收到足够ack时答复生产者。(注意,客户端只接收sync到所有副本的消息)
      • 消费者:每条信息消费至多1次/至少一次/刚好一次。一般选择至少一次的方式,可能导致重复消费,由下游处理
  • Understanding Kafka Topics and Partitions
    In one consumer group, each partition will be processed by one consumer only. 一个group内,每个partition只会由一个consumer顺序消费
  • AGuideToTheKafkaProtocol-Network kafka官方介绍文

生产者相关

kafka教程

相关文章

  • kafka手记

    参考 Kafka文件存储机制那些事 kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)zookee...

  • 【Kafka】Kafka入门手记

    1. 前言 本文为 Kafka 入门笔记,主要包括 Kafka 单节点部署、生产消费消息,以及新手踩坑记录。 Ka...

  • Kafka相关内容总结(Kafka集群搭建手记)

    简介 Kafka is a distributed,partitioned,replicated commit l...

  • Kafka详细的设计和生态系统

    Kafka详细的设计和生态系统 Kafka生态系统 - Kafka核心,Kafka流,Kafka连接,Kafka ...

  • kafka全面认知

    什么是Kafka[#---kafka] Kafka的应用场景[#kafka-----] Kafka的架构[#kaf...

  • Kafka & NSQ

    Kafka & NSQ Kafka kafka struct kafka & consumer group 2ka...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • Kafka Producer源码

    Kafka Producer Kafka Producer 是 kafka 提供的与 Kafka Broker 连...

  • Kafka 详解一 简介

    目录 Kafka 是什么 Kafka 核心组 Kafka 整体架构以及解析 Kafka数据处理步骤 Kafka名词...

  • kafka详解

    目录 Kafka 是什么 Kafka 核心组 Kafka 整体架构以及解析 Kafka数据处理步骤 Kafka名词...

网友评论

      本文标题:kafka手记

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