• Kafka的基础架构



    前言

    1、kafka是什么呢?

    kafka传统定义:kafka是一个分布式的基于 发布/订阅模式 的 消息队列(Message Queue),主要应用于大数据实时处理领域。

    Kafka最新定义:Kafka是一个开源的分布式事件流平台,用于高性能数据管道、流分析、数据集成和关键任务应用。

    2、消息队列是什么呢?

    消息队列是作为一个单独的中间件产品存在的,独立部署,当有大量数据集中访问服务器时,服务器无法同时受理,此时消息队列作为一个中间产品,进行一个负载,给这些消息排队,然后服务器再获取能够处理的消息进行处理,大大减轻了服务器的压力。

    3、消息队列的应用场景

    传统的消息队列的主要应用场景包括:缓存/消峰解耦异步通信

    缓冲/消峰:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况,就是服务器处理速度不够,通过中间的消息队列来降低服务器的压力。

    解耦:允许独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。降低了代码的耦合性。

    异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。就是执行过程不按照标准顺序来进行,而是类似于工厂,一个工人做完一部分后交给下面的工人,下面的工人不一定立刻对该产品进行再加工。


    一、消息队列的两种模式

    1、点对点模式

    生产者生产消息,生产消息后传递到消息队列中。

    消费者主动从消息队列中拉取消息,收到消息后主动删除消息队列中的消息。

    点对点模式结构图

    producer:消息生产者,就是向消息队列发送消息的客户端。

    consumer:消息消费者,向消息队列取消息的客户端。

    Message Queue:消息队列,将生产者产生的消息进行排队,供给消费者取。


    2、发布/订阅模式

    发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类型,订阅者只接收感兴趣的消息。

    1)消息队列不再局限于只有一个队列,而是可以有多个主题,每个主题对应了一个队列,消费者可以通过获取不同的主题的消息。

    2)消费者消费数据后,不删除数据。

    3)每个消费者相互独立,都可以消费到数据。

    发布/订阅模式结构图
    Topic:消息队列中的主题,就是一个队列,生产者和消费者面向的都是一个Topic。在发布/订阅模式中,我们将消息队列划分为了多个主题,每个主题也是一个队列,每个主题可以负责处理不同的数据,例如:点赞、收藏、打赏,每个对应了一个独立的主题,即独立的队列。


    二、kafka的架构

    Kafka是基于 发布/订阅模式 的消息队列,他在原本的发布/订阅模式的基础上新增了很多模型,让其结构更为健壮。所以我们在理解时要基于 发布/订阅模式 进行理解。

    Kafka基本架构
    通过观察Kafka的基本架构图我们发现其本质结构是符合 发布/订阅模式 的结构的,在其原有的基础上进行了整合。

    1、新增了broker的概念,每个broker就是一个Kafka的服务器。一个集群由多个broker组成。一个broker可以容纳多个topic。

    2、为了方便扩展,并提高吞吐量,每个topic可以分为多个partition,每个partition可以放在不同的服务器上。

    3、为了配合分区的设计,Kafka提出了消费者组的概念,组内每个消费者并行消费。

    4、为了提高可用性,为每个partition增加了若干副本(follower),将副本放在其他的服务器中,当某个服务器宕机后不会导致其分区的不可用,此时启用其副本内容。

    Kafka的分区实际上是存在于系统的不同存储位置,在应用时需要通过设置来进行分区调配。


    总结

    Kafka是作为中间件的存在,主要作用就是为服务器分担压力,在使用时通常考虑是否需要相应的分担,如果需要消息队列作为中间件分摊压力,都包含哪些类型,为其分配哪些主题,哪些分区,设置多少副本,要分别存储于哪些服务器中,服务器连接位置是否需要设置等等。

  • 相关阅读:
    【C语言数据结构】队列-顺序存储(顺序队列)
    汽车级低压差稳压器LDO LM317BD2TR4G原理、参数及应用
    实时跟踪企业订单执行情况,采购系统助力汽车服务企业缩短采购订单周期
    【Java八股文总结】之读写分离&分库分表
    阿里春招JAVA后端面试总结
    【MySql】MySQL中InnoDB支持的四种事务隔离级别名称,以及区别和能解决的问题。
    五个编程原则:Rob Pike‘s 5 Rules of Programming
    105份墨天轮“国产化迁移”精品文档汇总(含TiDB、openGauss、上云等)
    SNMP报文与MIB Browser软件讲解
    前端需要了解的linux命令
  • 原文地址:https://blog.csdn.net/qq_45722267/article/details/125581075