• kafka入门与实践-读书笔记


    1.主题
    Kafka将一组消息抽象归纳为一个主题(Topic),也就是说,一个主题就是对消息的一个分类。
    生产者将消息发送到特定主题,消费者订阅主题或主题的某些分区进行消费。
    2.消息
    消息是Kafka通信的基本单位,由一个固定长度的消息头和一个可变长度的消息体构成。
    在老版本中,每一条消息称为Message;在由Java重新实现的客户端中,每一条消息称为Record。
    3.分区和副本
    Kafka将一组消息归纳为一个主题,而每个主题又被分成一个或多个分区(Partition)
    每个分区在物理上对应为一个文件夹,分区的命名规则为主题名称后接“—”连接符
    之后再接分区编号,分区编号从0开始,编号最大值为分区的总数减1
    每个分区又有一至多个副本(Replica)
    分区的副本分布在集群的不同代理上,以提高可用性
    Kafka只能保证一个分区之内消息的有序性,并不能保证跨分区消息的有序性
    Kafka提供两种删除老数据的策略,一是基于消息已存储的时间长度,二是基于分区的大小
    4.Leader副本和Follower副本
    Leader副本只有一个,Follower副本有多个
    只有Leader副本才负责处理客户端读/写请求,Follower副本从Leader副本同步数据
    实际上使用的只有Leader副本,Follower副本只是作为备份使用
    如果Leader失效,通过相应的选举算法将从其他Follower副本中选出新的Leader副本
    5.偏移量
    每条消息在日志文件中的位置都会对应一个按序递增的偏移量
    因此Kafka并没有提供额外索引机制到存储偏移量,也就是说并不会给偏移量再提供索引。
    消费者可以通过控制消息偏移量来对消息进行消费,如消费者可以指定消费的起始偏移量。
    为了保证消息被顺序消费,消费者已消费的消息对应的偏移量也需要保存
    旧版消费者将消费偏移量保存到ZooKeeper当中,而新版消费者是将消费偏移量保存到Kafka内部一个主题当中



    Kafka在数据写入及数据同步采用了零拷贝(zero-copy)技术,采用sendFile()函数调用,
    sendFile()函数是在两个文件描述符之间直接传递数据,完全在内核中操作,
    从而避免了内核缓冲区与用户缓冲区之间数据的拷贝,操作效率极高。


    生产者向kafka发送消息


    创建主题过程

    订阅主题流程

    拉取消息流程

  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/Baronboy/p/15102697.html
Copyright © 2020-2023  润新知