[Kafka] Kafka学习笔记--基本知识

  • Kafka作用:

    1. 解决系统间的耦合
    2. 异步通信
    3. 削峰填谷
    4. kafa的stream简单,入门要求低,方便部署
  • Kafka学习的重点

    1. 消息队列Message Queue
    2. Kafka Streaming 流处理
  • 消息队列:

    1. 至多一次:一个消息只能被一个消费者消费一次,消费完queue就删除。
    2. 没有限制:一个消息可以被多个消费者同时消费,消费者主要就是记住消费到queue的位置。kafka属于这一种。
  • kafka基本架构:
    kafka集群中通过topic对于生产者发来多record进行分类。每个topic会被分区管理。例如topic1被分成三份partition0, partition1, partition2。每一个partation都会有一个分区(Broker)来作为leader,负责读写。剩下用来同步备份,作为follower。当一个broker坏掉,它作为leader负责的那个partation的部分,会被其他的follower中的一个所取代。检测broker的运作的是zookeeper。

  • kafka日志

    1. 每组日志分区是一个有序的不可变的的日志序列。第一个为offset 0,并依次往下。队列中的record存续的时间可以用configration设置,默认为168小时。log.retention.hours=168
    2. 同一个topic相同的partation之内的顺序可以保证,但是不同的partation之间的顺序无法保证。因此如果希望完全保证record的顺序,就必须是一个topic一个partation下进行。但partation数量和kafka可以影响kafka的同步处理消息的量。
  • 生产者和消费者

    1. 生产者是用来产生消息,而consumer是来订阅消息的。
    2. consumer group是有若干个consumer组成的。每一个consumer group都是一个“逻辑的订阅者”, 一个record在一个consumer group中只会被消费一次。相同topic的record在一个consumer group中是被平均消费的。一般情况下一个consumer group下的consumer数量小于等于partation的数量。
    3. consumer消费的时候会记录自己的offset,然后返回给kafka集群。
  • Kafka的日志读写

    1. kafka的写入采取顺序IO和MMF(Memorial Mapped Files)方式提高速度。顺序IO避免了寻址。而MMF则是利用内存映射,把file写进内核的pageCache,然后又操作系统进行磁盘写入。
    2. 读取的时候,kafka用的是zero copy。
      • 普通copy: 磁盘 -> 内核缓存 -> 用户缓存 -> socket缓存 -> 由通讯协议发出去
      • zerocopy:磁盘 -> 内核缓存 -> socket缓存 -> 由通讯协议发出去

*图示:

posted on 2020-06-22 09:42  codingEskimo  阅读(179)  评论(0)    收藏  举报

导航