• [DB] Kafka


    介绍

    • 一种高吞吐量的分布式发布订阅消息系统
    • 消息类型:主体Topic(广播)、队列Queue(一对一)
    • 消息系统类型:同步消息系统、异步消息系统
    • 常见消息产品:Redis、Kafka、JMS

    术语

    • Producer:生产者,向 Kafka Broker 上的 Topic 发布消息的应用程序
    • Broker:缓存代理服务进程,一个Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化
    • Message:消息,通信的基本单位,每个 Producer 可以向一个 Topic 发布消息
    • Topic:承载消息的逻辑容器,在实际使用中多用来区分具体的业务
    • Partition:Topic物理上的分组,一个Topic可以分为多个Partition,每个Partition是一个有序的队列。Partition中的每条消息都会被分配一个有序的id(Offset),一个分区对应一个消费者
    • Consumer:消费者,订阅 Topics 并从上面拉取消息的应用程序
    • Group:消费组,多个消费者组成一个消费组
    • Offset:表示分区中每条消息的位置信息,是一个单调递增且不变的值,消费者在消费的过程中使用 Offset 记录自己消费了多少数据
    • Coordinator:协调者,为 Consumer Group 服务,负责为 Group 执行 Rebalance 以及提供位移管理和组成员管理等,所有 Broker 都有各自的 Coordinator 组件

    流程

    • Producer将消息推送到Broker,Consumer从Broker拉取消息
    • 每条消息被顺序写入到Partition中
    • 同一Topic的一条消息只能被同一个Consumer Group内的一个Consumer消费,多个Consumer Group可同时消费这一消息
    • 将 Consumer 的位移数据作为一 条条普通的 Kafka 消息,提交到位移主题 __consumer_offsets 中
    • Kafka 集群中的第一个 Consumer 程序启动时,Kafka 会自动创建位移主题

    设计要点

    • 内存访问:使用Linux文件系统的cache,高效缓存数据
    • 磁盘持久化:不再内存中cache,直接顺序写入磁盘
    • zero-copy:减少IO操作
    • 消息处理:支持数据批量发送压缩
    • 主题分区:Topic 划分为多个 Partition,提高消息处理并行度
    • 负载均衡:Producer 根据用户指定算法,将消息发送到指定的 Partition
    • 消息拉取:简化kafka设计,Consumer根据消费能力自主控制消息拉取速度,自主选择消费模式
    • 可扩展性:需要增加 Broker结点时,新增 Broker向 ZK 注册,Procucer 和 Consumer根据 ZK 上的 Watcher 调整

    应用场景

    • 消息队列
    • 行为跟踪
    • 元信息监控
    • 日志收集
    • 流处理

    命令

    • Broker配置文件:config/server.properties
      • id:0
      • 端口:9092
      • zookeeper:localhost:2181
    • 启动:bin/kafka-server-start.sh config/server.properties &
    • 创建主题:bin/kafka-topics.sh --create --zookeeper localhost:2181 -replication-factor 1 --partitions 3 --topic mydemo1
    • 列出主题:bin/kafka-topics.sh --zookeeper bigdata111:2181 --list
    • 删除主题:bin/kafka-topics.sh --zookeeper bigdata111:2181 --delete --topic mydemo1
    • 生产者(发送消息):bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mydemo1
    • 消费者(接收消息)
      • bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic mydemo1(老版本)
      • bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mydemo1(新版本)

    参考

    Kafka 教程

    https://blog.csdn.net/hmsiwtv/article/details/46960053

    https://www.orchome.com/kafka/index

    https://www.cnblogs.com/wq3435/p/8001094.html

    Kafka 中 bootstrap-server broker-list 和 zookeeper的区别

    https://www.cnblogs.com/tonglin0325/p/8810313.html

    Kafka offset

    https://www.cnblogs.com/wq3435/p/8001094.html

  • 相关阅读:
    HDU-2896 病毒侵袭 字符串问题 AC自动机
    HDU-2222 Keywords Search 字符串问题 AC自动机
    pyhton3 logging模块
    pyhton3 sys模块
    pyhton3 hashlib模块
    pyhton3 os模块
    pyhton3 time模块
    pyhton3 random模块
    变种XSS:持久控制
    富文本存储型XSS的模糊测试之道
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12702398.html
Copyright © 2020-2023  润新知