Kafka简单入门01

news2024/9/23 1:32:14

目录

Kafka的核心组件

Kafka的分区有序

Kafka的多副本机制

Kafka的安装部署

Kafka的基本操作


Apache Kafka 是一个高吞吐量的分布式流数据平台,通常用于构建实时数据流处理应用程序。

Kafka的核心组件
  1. 主题(Topic):主题是 Kafka 中消息的类别或分类。生产者将消息发布到主题,而消费者订阅主题以接收消息。主题可以看作是一个消息通道,多个生产者可以将消息发布到同一个主题,而多个消费者可以从同一个主题订阅消息。

  2. 生产者(Producer):生产者是负责将消息发布到 Kafka 主题的组件。它们可以将消息批量发送到主题,允许实时或批处理应用程序将数据写入 Kafka 集群。

  3. 消费者(Consumer):消费者是订阅 Kafka 主题并接收消息的组件。它们可以订阅一个或多个主题,然后从这些主题接收消息,并将消息处理为应用程序的输出。消费者可以以不同的方式处理消息,例如实时流处理或离线批处理。

  4. 代理节点(Broker):代理节点是 Kafka 集群中的服务器节点,负责存储消息并处理生产者和消费者之间的消息传递。Kafka 集群由多个代理节点组成,每个节点都包含完整的主题数据副本。代理节点协调主题的分区分布,负责领导者选举,以及处理消息的存储和传递。

  5. 分区(Partition):主题可以被分为多个分区,每个分区是消息的逻辑容器。分区可以水平扩展和分布到不同的代理节点上。分区使得 Kafka 可以支持大规模数据,同时提供了并行性和容错性。

  6. ZooKeeper:Kafka 依赖于 ZooKeeper 作为协调服务,用于管理代理节点的状态、领导者选举和集群的元数据。

Kafka的分区有序

Kafka中的消息以主题为单位进行归类,生产者将消息发送到特定的主题(发送到Kafka集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。

主题可以分为很多个区,一个分区只属于单个主题。同一主题下的不同分区包含的信息是不同的,把分区类比为可追加的日志文件,消息在追加时会分配一个特定的偏移量(offset)。offset是消息在分区中的唯一标识,Kafka通过它保证消息在分区内的顺序性,但offset并不跨区,所以kafaka是分区有序的,不是主题有序。

Kafka的多副本机制

Kafka为分区引入了多副本机制,目的是通过副本的数量增加容灾能力。同一分区不同副本相同信息:副本之间一主多从,Leader副本负责读写,Follower副本只负责与Leader消息同步。Leader故障的情况下会重新选举:副本处在不同的broker中,这样也实现了故障自动转移。当某个broker失效时仍能保证服务可用。

以下是 Kafka 多副本机制的主要特点和工作原理:

  1. 数据冗余:每个分区可以配置多个副本,通常是 2 或更多。这些副本包含相同的消息数据,以提供冗余备份。如果一个代理节点出现故障,数据仍然可以从其他副本中获得。

  2. 领导者和跟随者:对于每个分区,其中一个副本被选为领导者(leader),其余的副本被称为跟随者(follower)。领导者负责处理生产者和消费者的请求,而跟随者只负责复制领导者的数据。这种模型提供了高可用性和数据一致性。

  3. 数据同步:领导者定期将消息发送给跟随者,以确保它们的数据保持同步。这意味着即使领导者节点出现故障,数据也不会丢失,因为跟随者拥有相同的数据。

  4. 故障恢复:如果领导者节点出现故障,Kafka 会自动从跟随者中选举出新的领导者。这确保了数据的可用性和系统的可靠性。

  5. 读取负载均衡:客户端可以从任何副本读取数据,不仅仅是从领导者。这允许 Kafka 在多个节点上分布读取请求,以提高读取性能。

  6. 数据保留策略:Kafka 允许配置数据的保存时间和大小限制,一旦数据达到保留策略的限制,它将被删除。

Kafka的安装部署

1.下载kafka https://kafka.apache.org/downloads

2.安装

把下载包进行解压就可以了

tar -zxvf  kafka_2.12-3.6.0.tgz

3.配置zookeeper

kafka依赖Zookeeper做master选举和集群控制,先启动kafka内置的Zookeeper服务

zookeeper-server-start.sh
zookeeper-server-stop.sh

4.通过config配置启动Zookeeper服务

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

5.启动和停止Kafka

  • 修改server.properties, 增加zookeeper的配置

    zookeeper.connect=localhost:2181
  • 启动Kafka

    sh kafka-server-start.sh -damoen config/server.properties
  • 停止Kafka

    sh kafka-server-stop.sh -daemon config/server.properties
Kafka的基本操作

1.创建topic

sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --
partitions 1 --topic test

2.查看topic

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

3.查看topic属性

sh kafka-topics.sh --describe --zookeeper localhost:2181 --topic first_topic

4.消费消息(192.168.13.106是Zookeeper节点)

sh kafka-console-consumer.sh --bootstrap-server 192.168.13.106:9092 --topic test
--from-beginning

5.发送消息(192.168.244.128是Zookeeper节点)

sh kafka-console-producer.sh --broker-list 192.168.244.128:9092 --topic
first_topic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR

目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …

为什么不建议使用Python自带的logging?

B站|公众号:啥都会一点的研究生 包括我在内的大多数人,当编写小型脚本时,习惯使用print来debug,肥肠方便,这没问题,但随着代码不断完善,日志功能一定是不可或缺的,极大程度方便问题…

【CSS】使用 CSS 实现一个宽高自适应的正方形

1. 利用 padding 或 vw <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><metaname"viewport"content"widthdevice-width, initial-scale1.0"><title>Document</title><st…

带你深入了解微信小程序【授权登录】

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《微信小程序 》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频

名称&#xff1a;斐波那契数列Fibonacci设计verilog 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 设计一个产生斐波那契数列&#xff08;也叫黄金分割数列&#xff09;的硬件电路: 斐波那契数列中每个数为其相邻前两个数的和:即FNFN1FN2,(数列…

Node学习笔记之包管理工具

一、概念介绍 1.1 包是什么 『包』英文单词是package &#xff0c;代表了一组特定功能的源码集合 1.2 包管理工具 管理『包』的应用软件&#xff0c;可以对「包」进行 下载安装 &#xff0c; 更新 &#xff0c; 删除 &#xff0c; 上传 等操作 借助包管理工具&#xff0c;可…

windows系统如何查看Linux文件系统中的图片缩略图

背景 使用autoDL云算力资源&#xff0c;没有GUI界面&#xff0c;实验结果都是图片为主&#xff0c;为了可视化查看图片&#xff0c;所以萌生了是否有软件可以查看Linux文件系统中的图片缩略图。 目前网上有几种方法可以支持在windows系统上查看Linux文件系统中的图片缩略图&a…

逻辑漏洞详解

原理&#xff1a; 没有固定的概念&#xff0c;一般都是不符合常识的情况。比如任意用户注册&#xff0c;短信炸弹&#xff0c;占用资源&#xff0c;交易支付、密码修改、密码找回、越权修改、越权查询、突破限制。 根据实际业务逻辑进行比对&#xff0c;购物的可以根据数量&a…

【Spring Boot 源码学习】HttpEncodingAutoConfiguration 详解

Spring Boot 源码学习系列 HttpEncodingAutoConfiguration 详解 引言往期内容主要内容1. CharacterEncodingFilter2. HttpEncodingAutoConfiguration2.1 加载自动配置组件2.2 过滤自动配置组件2.2.1 涉及注解2.2.2 characterEncodingFilter 方法2.2.3 localeCharsetMappingsCus…

商品规格项数据的遍历以及添加

简介 今天在处理规格项的数据时遇到了一些问题&#xff0c;接下来就给大家分享一下 规格项数据设计 "specifications": [{"goodsSpecificationId": 6,"goodsSpecificationName": "网络类型","goodsTypeId": 24,"goods…

【Acwing166】数独(dfs+剪枝+位运算)

本题思路来源于acwing算法提高课 题目描述 看本文需要准备的知识 1.dfs算法基本思想 2.位运算基础 3.对剪枝这个名词的大概了解 剪枝优化位运算优化 常见四种剪枝策略 首先考虑这道题的搜索顺序&#xff0c;很明显&#xff0c;可以随意选择一个空格子&#xff0c;分支为这…

《广西开放大学电大搜题微信公众号——探索学习的新途径》

随着社会的发展&#xff0c;教育无疑成为了人们的基本需求之一。然而&#xff0c;对于许多忙碌的职场人士来说&#xff0c;时间和地点的限制使得他们无法像传统学生那样参加常规的大学教育。好在有着广西开放大学这样的学府&#xff0c;为那些繁忙而渴望知识更新的人们提供了学…

好消息,终于可以获取到支付宝【支付交易投诉】的信息了。。。

大家好&#xff0c;我是小悟 若我拿出这个系统&#xff0c;阁下又该如何应对。 1、问题背景 之前以为从账单详情页中点击【投诉】 > 【举报中心】的投诉信息获取不到&#xff0c;经过不断尝试&#xff0c;终于能获取到了。 【支付宝支付交易投诉】&#xff0c;投诉入口是…

​​​​​​​2022年上半年 软件设计师 上午试卷(1-32)

以下关于冯诺依曼计算机的叙述中&#xff0c;不正确的是 &#xff08;1&#xff09; 。 &#xff08;1&#xff09; A. 程序指令和数据都采用二进制表示 B. 程序指令总是存储在主存中&#xff0c;而数据则存储在高速缓存中 C. 程序的功能都由中央处理器&#xff08;CPU&…

深入解析docker内核网桥

今天做虚拟桌面&#xff0c;朋友问我&#xff0c;为什么vnc 连接另一个docker 容器一直超时&#xff0c;原因是在docker 启动的时候没有组网&#xff0c;那么接下来我就要解析下docker的内核网络。 我们思考几个问题&#xff0c;带你了解linux 中docker 网络实现的基本原理。 文…

家庭燃气表微信抄表识别系统

1.背景需求 目前家里燃气度数的读数上报&#xff0c;每个月在社区微信群里面将手机拍摄的燃气表读数截图&#xff08;加住址信息水印&#xff09;&#xff0c;发到群里给抄表员。 2.总体设计 设计目标 功能一&#xff1a;手机上随时可以远程采集读数图片&#xff08;自动加住…

Jenkins环境部署与任务构建

一、CI/CD 1、CI/CD 概念&#xff1a; CI/CD 是一种软件开发和交付方法&#xff0c;旨在加速应用程序的开发、测试和部署过程&#xff0c;以提高软件交付的质量和效率。 (1) 持续集成 (CI Continuous Integration): 持续集成是开发团队频繁集成其代码更改的过程。开发者将其…

2023Jenkins连接k8s

首先配置k8s config文件 1.方式获取k8s密钥 cat .kube/config 2.导出方式或者密钥 kubectl config view --raw > k8s-config-admin pipeline {agent {kubernetes {yaml apiVersion: v1kind: Podmetadata:labels:some-label: devopsspec:containers:- name: dockerimage: d…

SpringBoot 第一个接口编写

RestController //表示该类为请求处理类public class HttpDeal {RequestMapping("/login")//这个方法处理哪一个地址过来的请求public String hello(){return "返回给浏览器";}}

【网络协议】聊聊网关 NAT机制

再宿舍的时候&#xff0c;其实只能通过局域网进行处理&#xff0c;但是如果接入互联网&#xff0c;一般是配置路由器当然还有网关。 MAC头和IP头的细节 一旦配置了IP地址和网关&#xff0c;就可以制定目标地址进行访问。 MAC头主要信息目标和源MAC地址&#xff0c;以及协议类…