美文网首页kafka
Kafka常见问题

Kafka常见问题

作者: 小小少年Boy | 来源:发表于2018-04-14 14:47 被阅读17次

    Kafka的设计目标是高吞吐量

    顺序写 不保存消息的状态 支持点对点的批量消息传递 使用内存映射和零拷贝

    顺序写入:
    一般硬盘:寻址 — 写入,太耗时了,kafka:顺序写入---partition(文件),插入末尾
    导致文件不可删除,删除策略,定时,partition已满时

    Kafka数据不是实时写入硬盘,采用内存映射文件(分页存储)来利用内存提高I/O效率,利用操作系统的页来实现物理内存映射,映射完后物理内存上的操作会被同步到硬盘上,(顺序写磁盘效率比随机写内存要高)

    如果Kafka写入到mmap之后就立即flush然后再返回Producer叫同步(sync);写入mmap之后立即返回Producer不调用flush叫异步(async)。

    Kafka使用了zero copy:零拷贝
    一般硬盘的读写:先复制到内核空间---复制到用户空间---再从用户空间复制到内核空间---发送给网卡
    而zero copy:直接从内核空间到内核空间---发送给网卡

    将消息变成文件,读取数据的时候配合sendfile直接暴力输出,push pull,默认是 pull。

    用户会自己保持这个offset,每次请求都会发送这个offset。Zookeeper中存有offerset。

    Kafka的高可用:
    基于zookeeper实现Leader election
    Data replication策略(ISR:副本同步列表,是由leader维护,因为follower从leader复制数据有延迟,超过阈值被提出ISR列表,只有ISR中的才会被选举为leader)

    说明Kafka相对传统技术有什么优势?
    高吞吐率 可伸缩 数据持久化 可靠性 容错性高

    Broker:服务器,构建kafka集群

    Zookeeper作用:

    保持集群中节点的通信;保存提交的偏移量,保证出错可恢复;leader选举、分布式同步、监控集群

    解释Kafka的用户如何消费信息?

    Consumer每次消费partition消息时,Consumer会自己记录offset物理偏移量。
    在Kafka中传递消息是通过使用sendfile API完成的。它支持将字节从套接口转移到磁盘,通过内核空间保存副本,并在内核用户之间调用内核。

    相关文章

      网友评论

        本文标题:Kafka常见问题

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