• Kafka原理详解


    一、Kafka概述

    Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
    Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
    无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。能够很好地进行离线和在线应用。

    分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式

    1.1 点对点消息传递模式

    在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。

    Peer-to-Peer模式工作原理:

    1.消息生产者Producer1生产消息到Queue,然后Consumer1从Queue中取出并且消费消息。
    2.消息被消费后,Queue将不再存储消息,其它所有Consumer不可能消费到已经被其它Consumer消费过的消息。
    3.Queue支持存在多个Producer,但是对一条消息而言,只会有一个Consumer可以消费,其它Consumer则不能再次消费。
    4.但Consumer不存在时,消息则由Queue一直保存,直到有Consumer把它消费。

     1.2 发布-订阅消息传递模式

    在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。

    Publish/Subscribe模式工作原理:

    1.消息发布者Publisher将消息发布到主题Topic中,同时有多个消息消费者 Subscriber消费该消息。
    2.和PTP方式不同,发布到Topic的消息会被所有订阅者消费。
    3.当发布者发布消息,不管是否有订阅者,都不会报错信息。
    4.一定要先有消息发布者,后有消息订阅者。

     二、queue与topic的区别

    JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。主要区别就是是否能重复消费。

    2.1 点对点:Queue,不可重复消费

    消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
    消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
    Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。
    当消费者不存在时,消息会一直保存,直到有消费消费。

    2.2 发布/订阅:Topic,可以重复消费

    消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
    和点对点方式不同,发布到topic的消息会被所有订阅者消费。
    当生产者发布消息,不管是否有消费者。都不会保存消息。

     三、



      

  • 相关阅读:
    开源 Serverless 里程碑:Knative 1.0 来了
    以一致的体验交付和管理云原生多集群应用
    iLogtail使用入门K8S环境日志采集到SLS
    如何在golang代码里面解析容器镜像
    mac vmware 无法复制粘贴
    使用vi编辑时上下左右方向键被转化为A、B、C、D
    left join 和 left outer join 的区别
    设计模式之 适配器模式
    设计模式之 命令模式
    设计模式学习之 策略模式
  • 原文地址:https://www.cnblogs.com/Steven5007/p/14062682.html
Copyright © 2020-2023  润新知