📂运维
🔖Kafka
2023-06-25 15:00阅读: 16评论: 0推荐: 0

kafka基础

kafka基础知识

  • kafka简介
    • kafka是一个高性能、分布式的流数据平台,是一个分布式的发布-订阅系统和一个强大的队列
    • 特点:
      • 高性能
        • 使用顺序读写磁盘的方式来存储和读取消息
      • 可扩展
        • 采取分布式设计(支持Server间的消息分区和分布式消费,同时保证每个partition内的消息顺序传输)
      • 灵活性
        • 支持多种编程语言和客户端库,方便与不同的应用程序集成
      • 消费消息采取pull模式(由consumer保存offset)
      • 支持online和offline场景
  • kafka的组件概念
    img
    img
    • Broker:
      • kafka集群的中的服务器节点,处理消息的读写请求
    • Topic:
      • 消息的主题
        img
      • 同一个topic的消息可以分布在不同的节点上(broker)
      • 一个topic包含一个或多个分区(partition)
      • 每条消息都属于且一个topic
      • producer发布数据时,必须指定将消息发送到哪个topic
      • consumer消费数据时,也要指定订阅哪个topic的消息
    • Partition:
      • 每个Topic可以分为多个partition,每个partition可以看作一个有序的消息队列
        img
      • 一个partition只分布于一个broker(没有备份的情况下)
      • 一个partition物理上只对应一个文件夹
      • 一个partition包含多个segment
      • 一个segment对应一个文件
      • segment由一个个不可变记录组成
      • 记录只会被append到segment,不会被删除或修改
      • 清除过期日志时,直接删除一个或多个segment
    • Segment:
      • 包含消息内容的指定大小的文件
        • 由index文件和log文件组成
        • 一个partition由多个segment文件组成
    • Offset:
      • segment文件中消息的索引值,从0开始计数
    • Replica(N)
      • 消息的冗余备份
      • 每个partition都会有n个完全相同的冗余备份,这些备份会尽量分散存储在不同的机器上
    • Producer:
      • 消息和数据的生产者,可以理解为往kafka发消息的客户端
    • Consumer:
      • 消息和数据的消费者,可以理解为从kafka集群中获取消息的客户端。可以同时监控消息的发送
    • Consumers:
      • 由于kafka brokers是无状态的,因此需要Consumers来维护根据parition offset已经消费的消息数量信息
      • 如果consumer确认了一个指定消息的offset,那就意味着consumer已经消费了该offset之前的所有消息
      • consumer消费消息的offset值是保存在zookeeper中
      • consumer可以向broker异步发起一个拉取消息的请求来缓存待消费的消息,consumers也可以通过提供一个指定的offset值来回溯或跳过partition中的消息
    • Consumer Group:
      • 每个consumer属于一个特定的consumer group,可为每个consumer指定group name(这是kafka用来实现topic消息的广播(发送给所有的consumer)和单播(发送给任意一个consumer的方式))
  • kafka的安装和部署
    • 单机部署
      • docker 安装
        • 镜像拉取不下来,添加国内源 "https://nrbewqda.mirror.aliyuncs.com"
          img
        • 拉取zookeeper和kafka
          • docker pull wurstmeister/zookeeper
          • docker pull wurstmeister/kafka
        • 创建网络
          • docker network create kdfka-net
          • 查看网络详细信息(注意这个后面会用到的)
            docker network inspect kdfka-net
            img
        • 创建zookeeper容器
          • docker run --net=kdfka-net --name dev_zookeeper -p 21810:2181 -d docker.io/zookeeper
          • 查看容器详情
            • docker inspect dev_zookeeper
              img
        • 创建kafka容器
          • 安装 docker run --net=kdfka-net --name dev_kafka -p 9093:9092 --link dev_zookeeper -e KAFKA_LISTENERS=PLAINTEXT://dev_kafka:9092 -e KAFKA_ZOOKEEPER_CONNECT=dev_zookeeper:2181 -e KAFKA_ADVERTISED_PORT=9092 -d wurstmeister/kafka
          • 注意配置参数
            • KAFKA_ADVERTISED_HOST_NAME 宿主主机
            • KAFKA_ZOOKEEPER_CONNECT zookeeper容器内部地址
        • 验证两个是否都加入网络
          • docker network inspect kdfka-net
            img
        • kafka启动报警
  • 链接

本文作者:乐天--

本文链接:https://www.cnblogs.com/blackamon/p/17502956.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   乐天--  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起