• kafka


    Apache kafka

    kafka 是一个分布式的基于发布订阅的消息队列,主要应用于大数据实时处理领域。

    什么是消息系统

    消息系统负责将数据从一个应用程序传输到另一个应用程序,分布式消息传递基于可靠消息队列的概念。有两种类型的消息模式可用,一种是点对点,

    另一种是 发布-订阅(pub-sub)消息系统,大多数是遵循 pub-sub

    点对点系统,消息被保存在队列中,一个或者多个消费者可以消耗队列中的消息,但是特定消息只能由某个消费者消费。一旦消费者读取队列中的消息,它

    就从队列中消失。

    发布-订阅消息系统,在发布-订阅系统中,消息被保留在主题中,消费者可以订阅一个或者多个主题并使用主题中的消息。在 pub-sub 系统中,消息生产者成为发布者,消息使用者称为订阅者。

     什么是 Kafka 

    Apache Kafka 是一个分布式发布-订阅消息系统和一个强大的队列,可以处理大量的数据,并使消息从一个端点传递到另一个端点。Kafka 消息保留在磁盘上,并在集群内复制以防止数据丢失。

    Kafka 的特带:

    • 可靠性 kafka 是分布式的,分区,复制,容错
    • 可扩展性 
    • 耐用性
    • 性能

    Kafka 工作流程

    订阅具有相同 group id 的主题的消费者被认为是单个组,并且消息在他们之间共享。

    pub -sub 工作流程

    1. 生产者定期向主题发送消息
    2. kafka 代理存储该特定主题配置分区中的所有消息,如果生产者发送2个消息并且有2个分区,kafka 将在第一分区中存储第一个消息,第二个分区中存储第二个消息。
    3. 消费者订阅特定主题
    4. 一旦消费者订阅主题,kafka 将向消费者提供主题当前偏移,并且还将偏移保存在 zookeeper 中
    5. 消费者定期请求 kafka 新消息
    6. 一旦 kafk 收到再次系统的新消息,将消息转发给消费者
    7. 消费者收到消息并进行处理
    8. 一旦消息被处理,消费者将向 kafka 代理发送确认
    9. 一旦 kafka 收到确认,它将偏移更改为新值,并在 zookeeper 中更新。(0.9版本之后 不再保存在 zk中)
    10. 以上流程重复,直到消费者停止请求
    11. 消费者可以随时回退/跳到所需的主题偏移量,并订阅后续的消息

    Zookeeper 的作用

    Apache Kakfa 的一个关键依赖是 Apache Zookeeper ,它是一个分布式配置和同步服务。Zookeeper 是 Kafka 代理和消费者之间的协调接口,Kafka 服务器通过 zookeeper 集群共享信息。

    Kafka 在 zookeeper 中存储基本元数据,例如主题、代理、消费者偏移等信息。

    由于关键信息存储在 zookeeper 中,并且它通常此整体上复制此数据,因此 kafka 代理 /Zookeeper 的故障不会影响 kafka 集群的状态。一旦 zookeeper 重启,kafka代理之间的领导者选举

    也通过使用Zookeeper 在领导者失败的情况下完成。

    Kafka 基本操作

    启动 zk

    bin/zookeeper-server-start.sh config/zookeeper.properties

    启动kafka

    bin/kafka-server-start.sh config/server.properties

    注:JPS 查询进程, QuorumPeerMail 是 Zookeeper 守护进程

    创建主题(replication-factor:主题复制因子,数量=broker 数量)

    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 
    --partitions 1 --topic topic-name

    获取主题列表

    bin/kafka-topics.sh --list --zookeeper localhost:2181

    查询主题详情

    bin/kafka-topics.sh --zookeeper localhost:2181 --topic test --descrobe

    启动生产者发送消息

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

    注:Config / server.properties文件包含代理端口ID,因为我们知道我们的代理正在侦听端口9092,因此您可以直接指定它。

    消费者接受消息

    bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name 
    --from-beginning

    删除主题

    bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name

    kafka  --describe 解释

    创建 Topic (已经启动3个zk 集群 + 3个 kafka )

     bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 2 --topic factory

    查询 factory 主题详情

    bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic factory

     Topic : 主题的名称

    PartitionsCount : 分区数量(分区编号是从0开始)

    ReplicationFactor: 副本数量

    leader : 当前分区的读写节点

    replicas 显示给定partiton所有副本所存储节点的节点列表

    isr 副本都已同步的的节点集合

    参考:https://www.w3cschool.cn/apache_kafka/

  • 相关阅读:
    210
    209
    208
    207
    定时任务crontab
    Python的zip与*zip函数的应用
    Python的reduce函数与map函数
    解析:cpu与io密集在何场景适合使用多进程,多线程,协程
    Python上下文(转载)
    C10K与C10M的问题
  • 原文地址:https://www.cnblogs.com/bytecodebuffer/p/11751230.html
Copyright © 2020-2023  润新知