首页 > 其他分享 >kafka基础

kafka基础

时间:2023-06-25 15:11:18浏览次数:42  
标签:zookeeper partition 基础 kafka 消息 docker consumer

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启动报警
  • 链接

标签:zookeeper,partition,基础,kafka,消息,docker,consumer
From: https://www.cnblogs.com/blackamon/p/17502956.html

相关文章

  • Selenium基础:鼠标操作 05
    *需要导入ActionChains类fromselenium.webdriver.common.action_chainsimportActionChains1、鼠标右击context_click(element)方法fromseleniumimportwebdriver#导入actionchainsfromselenium.webdriver.common.action_chainsimportActionChainsimporttime......
  • kafka02 kafka术语和架构简介
    1Kafka中的术语解释概述在深入理解Kafka之前,先介绍一下Kafka中的术语。 1.1图示上图中一个topic配置了3个partition。Partition1有两个offset:0和1。Partition2有4个offset。Partition3有1个offset。副本的id和副本所在的机器的id恰好相同。如果一个topi......
  • JAVA SE基础《二》---- JAVA语法
    目录JAVA基础语法注释字面量变量变量使用注意事项关键字、标识符 一.注释详解什么是注释?注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。注释有哪些单行注释 多行注释 文档注释:文档注释的内容是可以提取到一个程序说......
  • kafka01 kafka及消息队列简介
     1Kafka是什么Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统)。 2消息系统简介一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和......
  • Python全栈工程师(11:网络基础_网络协议篇)
    操作系统基础 操作系统:(OperatingSystem,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。注:计算机(硬件)->os->应用软件二.网络通信原理2.1互联网的本质就是一系列的网络协议......
  • SRV6基础(二)
    目录SRV6基础(二)SR的起源SDN初了解SR与SDNSDN与CNFSR的设计初探SR-MPLS、SRV6报文“前浪”们的问题SR的初设计SR的设计(改进)SRV6基础(二)SR的起源SDN初了解一切要从SDN开始谈起,最早的时候软件定义网络的概念掀起浪潮,那什么是软件定义网络?我们怎么去理解软件定义网络?这里的软件不......
  • go:(一)编程基础3:反射,并发
    引用:第13课:反射reflection?|课程列表|《Go编程基础(视频)》|Go技术论坛(learnku.com)1.反射:基本使用方法: 取匿名字段的信息: 通过反射修改对象操作:  2.并发: ......
  • go:(一)编程基础2:函数,结构,方法,接口
    引用:第9课:函数function?|课程列表|《Go编程基础(视频)》|Go技术论坛(learnku.com)1.函数: 闭包: defer匿名函数调用:如下例就是引用变量地址的情况,只有作为参数传入时才是值拷贝 recover使用: 2.结构: struct定义及变量初始化: 匿名结构及指针:嵌套匿......
  • linux运维基础
    1、时间同步方案1:ntpdateasia.pool.ntp.org时间校准、时间同步  方案2:#!/bin/bash#安装chrony:yuminstall-ychrony#注释默认ntp服务器sed-i's/^server/#&/'/etc/chrony.conf#指定上游公共ntp服务器,并容许其余节点同步时间cat>>/etc/chrony.conf<<......
  • 【webpack系列】从基础配置到掌握进阶用法
    前言本篇文章将介绍一些webpack的进阶用法,演示内容继承自上一篇文章的内容,所以没看过上一篇文章的建议先学习上一篇内容再阅读此篇内容,会更有利于此篇的学习~文件指纹文件指纹指的是打包输出的文件名后缀,一般用来做版本管理、缓存等webpack的指纹策略有三种:hash、chunkhash......