美文网首页
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手记

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