kafka听课笔记(随更)

kafka

  • 消息队列

  • 解耦、异步、流量削峰(服务器高峰期不直连)

  • 把可有可无的消息处理放在消息队列,先异步响应,再调用消息处理

  1. 解耦

    允许独立修改扩展处理过程,遵循接口约束。

  2. 可恢复性

    系统部分组件失效,消息队列降低耦合,允许在挂掉某个处理进程,在系统恢复以后继续进行。

  3. 缓冲

    控制优化数据流经过系统速度,解决生产消息和消费信息处理速度不一致情况。

  4. 灵活,峰值处理

    突发流量处理,访问量剧增,不需要投入资源,关键组件负责顶住并发量,防止超负荷。

  5. 异步

    信息优先级较低,不立刻处理,进入消息队列等待。

  • 消息队列模式

  • 点对点模式

一对一,消费者主动pull数据,消息收到立即清除

  • 发布/订阅模式(kafka)

一对多,消费者消费完不清除消息

​ 消息发布到topic中,同时多个消费者消费(订阅)该消息,发布到topic的消息被所有订阅者消费。

  • 分类:
  1. 消费者主动拉取
    • 缺点: 长轮询,多次访问队列,资源浪费。
  2. 消息队列推送
  • kafka基本架构

    发布/订阅模式(消费者主动拉取)
    • 生产者生产消息
      • producer 提交消息进入集群。
      • 通过topic主题分类进入不同的Broker,消息交给leader(kafka进程服务器)。
    • kafka集群管理消息
      • Broker 有一个leader,很多follower(备份,随时准备上位篡权leader)。
      • 分区Partition提高并发,横向扩展,提高负载能力。
    • 消费者消费消息
      • 同一个分区的数据只能被同一个消费者组的某一个消费者所消费。
      • 一个分区的一个数据只能被消费者组的一个用户消费,同组用户不能使用同一分区数据。
      • 当消费者个数>集群分部数,就会造成消费者资源浪费,当相等时,资源利用率最高
    • zookeeper 注册消息
      • 帮助kafka管理集群,存储信息,帮消费者存储位置信息,高版本存放到系统topic中。
      • 使用同一套zookeeper集群,kafka就可以保证同一套集群。
      • zookeeper缺点:影响效率,消费者拉取要经过zookeeper。

    kafka数据存放在磁盘中,而不是内存

原文地址:https://www.cnblogs.com/husiyu/p/15049102.html