Kafka入门介绍+集群部署+简单使用

Kafka入门介绍+集群部署+简单使用

  • 简介
    • 核心概念
      • Broker(服务节点/实例)
      • Producer(生产者)
      • Topic(主题)
      • Partition(分区)
      • Consumer(消费者)和Consumer Group(消费者组)
  • 安装部署
    • 下载安装
    • 集群部署
    • 启动
  • 简单使用
    • 创建Topic主题
    • 发送消息
    • 消费消息

简介

官网:https://kafka.apache.org/
中文文档:https://kafka1x.apachecn.org/intro.html
Kafka是一个开源的分布式流处理平台
主要有三个关键功能

  1. 发布订阅事件流(可以用作消息队列)
  2. 分布式持久化存储事件流(可以用作数据处理系统)
  3. 可以在事件发生时处理或回顾性的处理

整体架构图如下:
在这里插入图片描述

核心概念

Broker(服务节点/实例)

一个Broker 可以看作一个独立的Kafka服务节点。
多个Broker组成一个Kafka集群。

Producer(生产者)

消息的生产者,将数据发送到Topic中。

Topic(主题)

Topic是Kafka实现发布订阅的核心。类比其他MQ,可以把Topic看作 交换机和队列 的组合。
相同类型的消息发到同一个Topic。
生产者将消息发送给 Topic,Topic接收消息并持久化。
Topic 内部持久化存储了所有消息。所以Kafka也常被当做一个存储系统。
在这里插入图片描述

思考一个问题:Kafka为什么持久化存储所有消息?

Kafka作为消息队列,一般要提供给多个消费者消费,即广播。
而传统MQ,在消费者消费完一个消息后,会将消息删除。传统MQ想实现广播,需要复制一份给新的消费者消费。
在这里插入图片描述
这个复制的过程无疑加大了性能开销,这与Kafka高性能处理海量数据的设计理念相违背。

所以Kafka在设计时,在Topic下持久化存储所有消息。将消费选择权交给消费者,由消费者提供offset偏移量 来实 现同一消息不同消费者进行消费,进而实现广播。

Partition(分区)

partition 是 消息实际存储的位置,属于Topic的一部分。
生产者向Topic丢数据,最终会落到Partition中。
消费者消费Topic中的数据,也是消费的Partition中的数据。
在这里插入图片描述
Kafka是为大数据而生,需要经常处理海量数据。单机的存储容量和读写性能肯定不能满足需求。需要对数据进行分片存储,Partition就是Kafka分片的数据子集。
也就是说,Partition是Kafka分布式的核心组件。
并且 Partition 是Kafka高性能,高可用,高并发的关键所在。

Consumer(消费者)和Consumer Group(消费者组)

消费者:即消费消息的。
Kakfa设计了消费者组的概念。
同一个消费者组中的消费者共同消费一个Topic中的消息
同时做了如下限制:
一个分区只可以被消费组中的一个消费者所消费
在这里插入图片描述
消费者组的特性:

  1. 一个消费组中的一个消费者可以消费多个分区
  2. 一个消费组中的不同消费者消费的分区一定不会重复
  3. 一个消费组中的所有消费者共同完成整个Topic中所有Partition的消费

思考一下,消费者组这种设计的好处是什么?

  1. 分摊消费压力,多个消费者并行无冲突的消费一组消息
  2. 消费模式更灵活,不同组合可以实现不同消费
    例如:所有消费者一个组,实现单播
    一个消费者一个组,实现广播
  3. 高可用,提高容错率,多个消费者一个组,有一个消费者挂了,自己的分区会分配给其他消费者。

安装部署

下载安装

https://kafka.apache.org/downloads
在这里插入图片描述
官网下载并传到服务器进行解压安装

tar -zxvf kafka_2.13-3.1.2.tgz

安装完成后,查看目录结构
在这里插入图片描述
config目录
在这里插入图片描述
bin目录在这里插入图片描述
分别使用ZK和Kafka的启动命令,即完成了Kafka单机模式的启动。(Kafka默认端口9092)

集群部署

接下来介绍下集群模式如何部署:
下面使用单机进行伪集群搭建,多台机器搭建方式类似。

# 创建一个集群配置目录
mkdir -p cluster/config
# 将zk 和 Broker的配置文件复制过去,三台Broker搭建集群,所以部署三份
cp config/zookeeper.properties cluster/config/
cp config/server.properties  cluster/config/server-0.properties
cp config/server.properties  cluster/config/server-1.properties
cp config/server.properties  cluster/config/server-2.properties

修改 zookeeper配置
在这里插入图片描述
修改 三个Broker 配置
注意:broker.id 必须保证每个serve不同

如果是单机搭建的伪集群,注意listeners 端口也要不同,
同时还要修改log.dirs 日志目录,保证日志目录也不相同,
因为Broker在启动时会检查日志目录下的meta.properties中的broker.id,相同日志目录会导致冲突

在这里插入图片描述

启动

进入bin目录下启动zk和broker
启动Zookeeper

./zookeeper-server-start.sh ../cluster/config/zookeeper.properties
# 后台启动nohup ./zookeeper-server-start.sh ../cluster/config/zookeeper.properties > /dev/null 2>&1 &

启动broker集群

./kafka-server-start.sh ../cluster/config/server-0.properties
./kafka-server-start.sh ../cluster/config/server-1.properties
./kafka-server-start.sh ../cluster/config/server-2.properties# 后台启动nohup ./kafka-server-start.sh ../cluster/config/server-0.properties > /dev/null 2>&1 &nohup ./kafka-server-start.sh ../cluster/config/server-1.properties > /dev/null 2>&1 &nohup ./kafka-server-start.sh ../cluster/config/server-2.properties > /dev/null 2>&1 &

简单使用

进入bin目录下
bin下面的kafka相关命令,都可以使用 --help 查看帮助文档,介绍的很全面

例如:./kafka-topics.sh --help

下面是我根据帮助文档做的简单使用

创建Topic主题

# 直接使用./kafka-topics.sh命令 会给出help文档
./kafka-topics.sh
# 创建一个名为 topci_test 的主题,Partition为3个,副本为2个
./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic topic-test --partitions 3 --replication-factor 2
# 查看topic列表
./kafka-topics.sh  --bootstrap-server localhost:9092 --list
# 查看 topic-test 的详细信息
./kafka-topics.sh  --bootstrap-server localhost:9092 --describe --topic topic-test

在这里插入图片描述
ISR:副本同步正常的BrokerId
Replicas:副本所在的BrokerId
Leader:leader所在的BrokerId
Partition:partition的编号

发送消息

./kafka-console-producer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic topic-test

在这里插入图片描述

消费消息

消费者发送的offset在 0.9版本之前 存放在zookeeper,因为zookeeper 不适合大量频繁的读写,0.9版本之后,放在kafka默认的Topic(__consumer_offsets)里保存
低于0.9的老版本可能需指定Zookeeper地址
我这里使用3.1.2,所以不需要指定 zookeeper

# 如果需要从头消费 可以加上--from-beginning 或者 指定 --offset进行消费,默认是消费最新的./kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic topic-test

在这里插入图片描述

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

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

相关文章

对组合模式的理解

目录 一、场景1、题目描述 【[案例来源](https://kamacoder.com/problempage.php?pid1090)】2、输入描述3、输出描述4、输入示例5、输出示例 二、实现(假的组合模式)1、代码2、为什么上面的写法是假的组合模式? 三、实现(真的组合…

文本生成任务的评价方法BLEU 和 ROUGE

BLEU 是 2002 年提出的,而 ROUGE 是 2003 年提出的。这两种指标虽然存在着一些问题,但是仍然是比较主流的评价指标。 BLUE BLEU 的全称是 Bilingual evaluation understudy,BLEU 的分数取值范围是 0~1,分数越接近1&a…

YOLOv9改进策略 | 细节创新篇 | 迭代注意力特征融合AFF机制创新RepNCSPELAN4

一、本文介绍 本文给大家带来的改进机制是AFF(迭代注意力特征融合),其主要思想是通过改善特征融合过程来提高检测精度。传统的特征融合方法如加法或串联简单,未考虑到特定对象的融合适用性。iAFF通过引入多尺度通道注意力模块(我…

算法打卡day52|单调栈篇03| 84.柱状图中最大的矩形

算法题 Leetcode 84.柱状图中最大的矩形 题目链接:84.柱状图中最大的矩形 大佬视频讲解:84.柱状图中最大的矩形视频讲解 个人思路 这题和接雨水是相似的题目,原理上基本相同,也是可以用双指针和单调栈解决,只是有些细节不同。…

锦瑟香也MYLOVE:音质与颜值俱佳,入坑HiFi的热门好物!

当下尽管无线耳机大行其道,但有线耳机依旧保有其独特的魅力,特别是在音质表现上,它们拥有无线耳机难以企及的优势。如果对音质要求很高的话,口袋里还是少不了一副有线耳机。国产品牌中就有许多性价比高的有线耳机,它们…

Django admin后台添加自定义菜单和功能页面

django admin是根据注册的模型来动态生成菜单,从这个思路出发,如果想添加自定义菜单,那就创建一个空模型并且注册。步骤如下: 1、创建空模型: class ResetSVNAuthFileModel(models.Model):"""仅用来显…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制伊甸火山3D网格曲面图

11.4.2小节我们使用3D曲面图可视化分析伊甸火山数据,本小节我们采用3D网格曲面图可视化分析伊甸火山数据,以展示其地形,具体示例代码如下。 购书地址:https://item.jd.com/14102657.html

Django数据导出与导入问题

执行: python manage.py loaddata data.json 的常见错误: * 1. UnicodeDecodeError: utf-8 codec cant decode byte 0xff in position 0: invalid start byte* 2. raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",...django.core.serializer…

css animation 动画详细学习

学习 CSS 动画是一个深入且富有创造性的过程,它允许开发者创建出引人入胜且交互性强的网页效果。以下是对 CSS 动画学习的一些总结和要点: 1. 关键帧动画(keyframes) 使用 keyframes 规则定义动画的整个过程。在 keyframes 中&a…

聚道云软件连接器助力企业实现滴滴出差报销自动化

一、客户介绍 某机械有限公司是一家在机械设备制造领域拥有深厚底蕴和卓越实力的企业。自公司成立以来,该公司始终秉承创新、务实、高效的发展理念,专注于机械设备的研发、生产和销售。经过多年的发展,公司已成为国内机械行业的佼佼者&#…

RocketMQ异步消息发送失败重试DEMO

producer.setRetryTimesWhenSendAsyncFailed(3); 都知道通过设置,尝试是在MQClientAPIImpl 中完成 其重试是通过MQClientAPIImpl的onExceptionImpl方法来实现,它会先判断重试次数,然后重新调用sendMessageAsync方法进行重试,调用…

新手必看!嵌入式STM32-PID

本文目录 一、知识点1. 位置式pid(1)公式(2)代码 2. 串级PID简易代码 一、知识点 1. 位置式pid (1)公式 (2)代码 pid.c typedef struct PID {float Kp; // Proportion…

高效编程工具 JetBrains CLion 2024 中文激活 mac/win

在追求编程高效与精准的道路上,JetBrains CLion 2024 for Mac无疑是您的最佳伙伴。这款专为Mac用户打造的C/C集成开发环境,凭借其强大的功能和出色的性能,赢得了广大开发者的青睐。 CLion 2024拥有智能的代码编辑器和强大的代码分析工具&…

pycharm已有项目增加pipenv

pycharm已有项目增加pipenv 第一步 第一步 python base 需要安装pipenv pip install pipenv在设置,project 之后 会自动查找项目下的pipfile 和pipfile.lock 进行pip配置 如果网络较慢,可以修复pipfile下的url 为国内的pip源 [[source]] name "…

Linux入门学习 之 基础操作指令讲解(小白必看)

股票的规律找到了,不是涨就是跌 一、Linux下基本指令 1.ls 指令 2.pwd 命令 3.cd 指令 4.touch 指令 5.mkdir 指令 6.rmdir指令 && rm 指令 7.man 指令 8.cp 指令 9.mv指令 10.cat 11.more 指令 12.less 指令 13.head 指令 14.tail 指令 15…

新兴存内计算芯片架构、大型语言模型、多位存内计算架构——存内计算架构的性能仿真与对比分析探讨

CSDN存内社区招募:https://bbs.csdn.net/forums/computinginmemory? 首个存内计算开发者社区,现0门槛新人加入,发文享积分兑超值礼品; 存内计算先锋/大使在社区投稿,可获得双倍积分,以及社区精选流量推送…

Redis进阶——点赞和点赞排行

目录 发布达人探店笔记实现步骤 查看探店笔记点赞功能问题分析:功能完善具体实现 点赞排行榜实现需求实现步骤 发布达人探店笔记 实现类似于大众点评的发布个人笔记的效果 实现步骤 准备数据表如下: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;…

与助听器相关的职业主要有哪些?

助听装置是目前解决听觉障碍的几乎唯一科学的方法。然而助听装置改变的不是听力,而是外界的声音信息。也就是助听装置只能将外界的声音信息改变成能够适应听觉障碍患者听觉动态范围的声音。显然助听器并不知道听觉障碍患者的听觉动态范围是多少?也不知道…

分布式系统——全站监控

文章目录 全站监控要点**监控范围与对象****监控指标与数据****监控工具与技术****监控策略与实践****全站监控的价值** 实例展示 全站监控要点 全站监控是针对分布式架构中所有组件和服务进行全方位、多层次、实时的性能监控、状态检测和故障告警的系统化方法。在分布式环境下…

PMP每年考几次,费用如何?

今年的的考试分别分布在3月、6月、8月、11月,一般来说PMP的考试时间是3、6、9、12月,如果有特殊情况PMI也会及时进行调整,具体看他们官网的通知了。 PMP的考试费用全球是统一的,在国内考试报名费用是3900元,如果考试没…