一:模式介绍

  • 传统模式
    • 生产者直接将消息传递给指定消费者
    • 耦合性特别高,当生产者与消费者发生变化时要从写业务逻辑
  • kafka的生产者与消费者模式
    • 通过一个容器来解决生成者与消费者强耦合问题,消费者与生产者之间通过阻塞队列来通信
    • image.png
  • 数据传输流程

    • 生成者消费者模式即N个线程进行生产,同时N个线程进行消费,两种角色都通过内存缓冲区进行通信
    • 生成者负责向缓存区写入数据单元
    • 消费者负责从缓冲区取出数据单元
    • 遵循规则为先进先出原则

      二:缓冲区

  • 解耦

    • 解设生产者与消费者分别是两个类。如果让生产者直接调用消费者的某刚刚方法呢么消费者对生产者就会产生依赖
  • 支持并发
    • 生产者直接调用消费者某个方法过程中函数用的是同步
    • 万一消费者处理数据很慢,生产者就会浪费大量时间
  • 支持忙闲不均
    • 缓冲区还有另一个好处,如果制造商的速度时慢时快那么缓冲区的好处就体现出来了
    • 当数据制造的快时,消费者来不及处理,未处理的消息就可以放在缓冲区
    • 等生产者速度慢下来后,消费者还会按步处理消息

      三:数据单元