kafka初探(一)

322 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。

  • 什么是消息队列?

    • A系统发消息给B系统,不会直接发送过去,而是直接发给消息队列,消息队列进行缓存。
    • 消息队列分为一对多推送订阅模式。也分为一对一,消费者主动拿去数据模式。
  • 为什么需要消息队列,优点是什么?

    • 解耦
    • 灵活性,和峰值处理能力。可以应对大量的并发请求
    • AB系统故障了,不会导致队列的消息丢失
    • 缓冲
    • 异步通讯,就是我A消息发出去,不想B马上处理,也就是放入队列中,消费者想什么时候消费就什么时候消费。
  • kafka基本架构就是

    生产者、kafka集群,消费者。 进一步看他的结构: kafka实例 broker,

  • topic是存数据的,可以认为是数据库中的一张表

  • 同一个topic的消息可分布在多个节点broker上

  • 一个topic包含一个或者多个partition

  • 每条消息都属于且仅属于一个topic

  • 下图我们可以看到几个点:

    • 同一个topic可以在多个broker中,这个是对的,集群嘛,就是这样
    • 但是多个broker中相同的topic的partition是不会一样的
    • 多个broker相同topic的partition是均匀分布的

在这里插入图片描述

  • Partition

    • 一个partition只分布在一个broker中
    • 一个partition物理是一个文件夹,理解为一个队列:实际的我们去看kafka的日志文件,就会发现有多少个partition就有多少个文件夹,名字是topic1-0......。
    • 一个partition包含多个segment
    • 一个segment对应一个文件,这个文件的名字就是offset
    • segment是从后追加记录(AOF也是)

    kafka的过期时间默认168小时,如果超过,就会删除segment文件。策略也有是按大小来删除。