Kafka学习分享

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱 阅读详情

hi all

 

kafka学习简单分享

 

1、kafka内名词简介

 

什么是主题?什么是分区?

Kafka的消息通过 主题 (Topic)进行分类,一个主题被分为多个分区(Partitions)。消息以追加的方式写入分区,然后按照先进先出的方式进行读取。

主题的分区可以分布在不同服务器上,也就意味着主题是可以横跨多个服务器的。

 

生产者和消费者

生产者:创建消息的,消息的发布者和写入者,生产者将消息发布在特定的主题上,但是并不在乎消息被分配到那个分区上。

消费者:读取消息的。

消费者群组:可能或有一个或者多个消费者共同读取一个主题,群组保证每一个分区只能被一个消费者使用。

 

 

什么是broker

一个独立的Kafka服务器被称为一个broker(接收生产者信息,设置消息偏移量,提供消费者读取信息)

 

2、Kafka配置

 

Broker配置(Config文件夹下server.properties)

1)broker.id

    每一个 broker 都有一个标识符,使用 broker.id 来标记,默认值为0,可以被设置成任意整数,但是这个值在整个Kafka集群中必须是唯一。    

    

2)port(在配置文件中没有这个配置,但可以直接加入port=7777,重启生效)

    broker服务启动端口,也是负责监听消息的端口。

3)zookeeper.connect

    用于保存broker元数据的zookeeper地址,

    默认设置 localhost:2181

        hostname是zookeeper服务器的IP地址

        2181是Zookeeper的客户端端口

 

4)log.dirs

    kafka数据的存放地址,多个地址的话用逗号分割,多个目录分布在不同磁盘上可以提高读写性能。

 

关于主题配置(Config文件夹下server.properties)

1)num.partitions

    每个topic的分区个数,若是在topic创建时候没有指定的话会被topic创建时的指定参数覆盖。(分区数要大于消费者数)

2)log.retention.ms

    决定数据保存多久

3)log.retention.bytes

    通过判断消息大小来,来决定消息是否过期,例如一个主题报刊8个分区,log.retention.bytes设置为1GB,则该主题最多可以保存8GB数据。

4)log.segment.bytes

    topic的分区是以一堆segment文件存储的,这个控制每个segment的大小,会被topic创建时的指定参数覆盖

5)message.max.bytes

    限制单个消息大小,默认1MB。

 

 

简单的案例

 

生产者

生产者配置

 

1、acks

acks参数指定了必须要多少个副本收到消息,生产者才会认为消息写入是成功的,这个参数对消息丢失的可能性有重要影响。

如果acks=0,生产者在写入消息之前不会等待任何来自服务器的响应。

如果acks=1,只要集群首领节点收到消息,生产者就会收到一个来自服务器的成功响应。

如过acks=all,只有当所有参与复制的节点全部收到消息时,生产者才会收到来自服务器的成功响应

 

2、buffer.memory

该参数用来设置生产者内存缓存区的大小,生产者内存缓存区

 

3、compression.type

该参数指定消息被发送给broker之前使用那一种压缩算法进行压缩。三种压缩方法:snappy、gzip 或 lz4。

snappy:占用比较少的CPU,却能提供较好的性能和相当可观的压缩比。

gzip:占用较多的CPU,但会提供更高的压缩比,所以如果带宽比较有限,可以采用这种算法。

 

4、retries

生产者重发消息的次数,

 

5、batch.size

该参数指定了一个批次可以使用的内存大小(一个批次最大使用内存大小)。

 

6、linger.ms

该参数指定了生产者在发送批次之前等待更多消息加入批次时间。(把批次填满或者达到linger.ms达到上限时把批次发送出去)。

 

生产者发送消息流程

消费者代码案例

public class ProducerDemo {

    public static void main(String[] arg){
        Properties properties = new Properties();
        properties.put("bootstrap.servers", "127.0.0.1:7777");   //指定broker地址,最好指定一个集群中两个broker,一个冗机也可以连接到集群上。
        properties.put("acks", "all");
        properties.put("retries", 0);
        properties.put("batch.size", 163);
        properties.put("linger.ms", 1);
        properties.put("buffer.memory", 33554432);
        properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        Producer<String, String> producer = null;
        try {
            producer = new KafkaProducer<String, String>(properties);
            for (int i = 0; i < 1000; i++) {
                String msg = "Message " + i;
                producer.send(new ProducerRecord<String, String>("HelloWorld", msg));   //指定主题(Topic),和发送的消息。
                System.out.println("Sent:" + msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            producer.close();
        }

    }
}
控制台输出:

消费者
消费者消费消息机制
1)Topic有多个分区一个消费者
描述:消费者会接受到这个Topic下所有分区的消息。

2)Topic协议有多个分区,多个消费者,消费者数小于分区数
描述:每个分区只能被一个消费者读取,但是broker群组协调器,会指定消费者和分区的所有权信息。将分区均衡的分配给可用的消费者。
3)Topic协议有多个分区,多个消费者,消费者数大于分区数
描述:会有消费者被闲置,不会接到任何消息
4)Topic有多个分区,有多个消费者群组,每个消费者群组有多个消费者
描述::每个分区可以被多个消费者读取(但多个消费者必须在不同的消费者群组),但是broker群组协调器,
会指定消费者群组内消费者和分区的所有权信息。将分区均衡的分配给消费者群组内可用的消费者。
生产者代码案例:
public class ConsumerDemo {
    public static void main(String[] args){
        Properties properties = new Properties();
        properties.put("bootstrap.servers", "127.0.0.1:9092");
        properties.put("group.id", "group-1");
        properties.put("enable.auto.commit", "true");
        properties.put("auto.commit.interval.ms", "1000");
        properties.put("auto.offset.reset", "earliest");
        properties.put("session.timeout.ms", "30000");
        properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

        KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
        kafkaConsumer.subscribe(Arrays.asList("HelloWorld"));
        while (true) {
            ConsumerRecords<String, String> records = kafkaConsumer.poll(100);
            for (ConsumerRecord<String, String> record : records) {
                System.out.printf("offset = %d, value = %s", record.offset(), record.value());
                System.out.println();
            }
        }

    }
}

控制台输出:

Thanks

Mark

8.26华为OD机试真题 新系统【仓库查询】 华为OD机试真题 新系统【仓库查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓库查询】多语言题解。 阅读详情

相关推荐

避开生产计划大坑:不懂MPS和MRP的区别,你的SAP PP模块白学了

本文深入解析SAP PP模块中MPS(主生产计划)与MRP(物料需求计划)的核心区别,揭示如何通过正确配置避免生产计划中的常见陷阱。文章详细探讨了MPS的三大缓冲特性和动态平衡算法,帮助企业提升生产计划稳定性,优化资源配置,避免生产线波动。

weixin_29268267的博客 403

kafka日志清理配置

主要用于控制 Kafka 日志分区的最大存储空间,当分区日志的大小达到该限制时,Kafka 会清理最旧的消息来保持分区大小。与时间保留策略()配合使用,可以精细控制数据的存储和清理策略,避免过多的磁盘占用。

青春不流名 890

LightningChart使用教程:创建 JS 散点图

这是对 LightningChart JS XY 图表一些有趣功能的快速技术研究,以及如何使用 LightningChart JS 创建嵌入式散点聊天和添加自定义交互。 此图表将可视化一个 XY 坐标列表以及一个额外的自定义属性,它只是一段文本。这些自定义属性将与 UI 文本元素一起显示,这些元素将与用户的鼠标移动交互。 我们将介绍的突出功能是: 什么是散点图? 如何创建散点图? 如何将自定义属性附加到数据点。 如何创建交互式 UI 文本元素。 最终结果 什么是散点图? 散点图或散点图是..

Augenstern__zyx的博客 1371

Kafka-配置&命令

《Kafka权威指南》学习笔记 kafka安装配置 broker配置 broker.id:每个broker都需要有一个标识符,使用broker.id来表示。它的默认值是0,也可以被设置成其他任意整数。这个值在整个Kafka集群里必须是唯一的。 potr:默认9092,可以指定任意端口号。(如果需要1024以下端口号,需要root权限) broker.rack:机架信息。broker所在机架。...

dark 1787

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2772

第12篇: COZE 实操【自动生成每日英语短视频】详细制作流程

通过以上详细流程,你可以利用 Coze 智能体高效生成每日英语短视频。在实际操作中,若遇到问题或有新的创意需求,欢迎随时与我交流,进一步优化视频制作流程。从左侧节点库中拖拽 “开始” 节点到画布中央,设置主题输入框(如输入 “日常购物英语”),方便后续根据不同主题生成视频。2. 选题策划节点​。3. 内容生成节点​。4. 画面生成节点​。5. 配音生成节点​。6. 音频匹配节点​。7. 视频合成节点​。

AI实操部署-深耕AI领域老菜鸟! 2073

Kafka日志索引详解

本文将介绍Kafka的Log日志以及索引文件结构

qq_32139981的博客 1460

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

腾讯技术官倾力打造,Kafka部署实战宝典,开源分享,不容错过

Kafka的探讨就在这里,只能展示部分内容,实际上笔记内详细记载了Kafka的实践内容,包括大量的代码实现形式。如果你对自己的职业生涯有清晰的规划路线,想要往更长远的方向去发展,那么学习Kafka,想必刻不容缓。获取方式:需要这份Kafka笔记的朋友添加下方名片联系方式免费获取。

资料免费分享,点击名片 879

道路场景分割:车道线、可行驶区域与路沿检测

道路场景分割:车道线、可行驶区域与路沿检测​ ,人工智能,计算机视觉,大模型,AI,文章围绕道路场景分割展开,涵盖车道线、可行驶区域与路沿检测。介绍了基本概念、重要性,各部分检测的类型、方法、难点及解决思路,还涉及技术融合、数据集、评价指标、发展趋势、应用案例、代码示例、不同天气处理、实际问题与方案、实现流程、相关技术工具、教育研究应用、产业前景、伦理安全问题及学习资源等,全面阐述了道路场景分割的多方面内容,为相关学习和研究提供了丰富信息。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

13、Java 中 MQTT 异步通知与回调的使用及传感器命令处理

本文详细介绍了在 Java 中使用 MQTT 的异步通知与回调机制,并展示了如何通过 Paho Java 客户端处理与传感器交互的命令。文章包含代码示例,讲解了 MQTT 客户端的连接、订阅、消息处理以及模拟传感器数据发布的过程,适用于希望在 Java 应用中实现 MQTT 通信与设备控制的开发者。

eee77的博客 160

kafka分享

Zookeeper节点如果频繁发生Full GC(Stop The World),此时与客户端的会话将超时,无法响应客户端的心跳请求,与会话相关联的临时节点将被删除,注意,此时是所有的临时节点被删除,Zookeeper依赖的事件通知机制将失效,整个集群的选举服务将失效。Kafka中的消费者需要进行负载均衡来实现多个消费者合理地从对应的Broker服务器上接收消息,每个消费者分组包含若干消费者,每条消息都只会发送给分组中的一个消费者,不同的消费者分组消费自己特定的Topic下面的消息,互不干扰。

helllwang的博客 802

极智芯 | 解读国产CPU之海光

大家好,我是极智视界,本文分享一下 解读国产CPU之海光。希望我的分享能对你的学习有一点帮助。

极智视界 3319

Kafka-学习笔记分享

文章目录前言1.定义2.Kafka基本架构3.Kafka命令行操作4.Kafka工作流程5.topic的存储架构6.index文件和log文件详解7.分区8.数据的可靠性(副本)9.ISR10.ack应答机制11.故障处理12.实现Exactly Once13.Kafka消费者方式14.offset的维护15.Kafka高速读写数据16.Zookeeper在Kafka中的作用17.选举流程18.KafkaProducerApi原理19.Producer API20.Consumer API21.数据漏消费和

LeiKe_的博客 978

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

资料分享|kafka学习秘籍

【背景】 Kafka发展至今名家典籍层出不穷,借此机会通过Kafka中文社区平台,把印象最深的几本书及资料分享给大家,交作业不是目的,目的是与大家共同成长与进步! 【资源】 [1].[入门]:胡夕的《Kafka实战》详细的介绍了Kafka的部署、开发、运营、监控及优化等常规性操作等,帮助你快速上手及应用. [2].[进阶]:朱忠华的《深入理解Kafka:核心设计与实践原理》笔名朱小厮,系统的讲解了Kafka的各个组件的内部原理等,帮助你系统化的学习Kafka. [3].[高级]:郑奇煌的《Kafk.

kafka_zsxq的博客 636

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

kafka学习笔记 & 面经分享

本文结合尚硅谷kafka教学课程学习,总结kafka常见面试题及答案

qq_45796208的博客 2804

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Kafka学习分享系列

  ConsumerRebalanceListener  再均衡监听器用来设定发生再均衡动作前后的一些准备或者收尾动作。ConsumerRebalanceListener是一个接口,包含两个方法:  void onPartitionsRevoked(Collectionpartitions)  这个方法会在在均衡开始之前和消费者停止读取消息之后被调用。可以通过这个方法来处理消费位  移的提交,以避...

weixin_33943836的博客 394

kafka学习分享(浅尝版)

kafka学习分享(浅尝版) 初识kafka推荐:https://www.cnblogs.com/bainianminguo/p/12247158.html 目录: 1、消费和生产一些常用参数和情况 2、rebalance机制 3、高性能的原因 4、消息丢失场景及方案 5、注意 一、KafkaConsumer KafkaProducer demo Properties props = new Properties(); //逗号分隔,可以不指定全 props.put("bootstrap.servers",

qq_37337660的博客 3731

资料分享|kafka学习视频

个人认为最好先跟随视频进行学习,总结一下收藏的视频资料: 1.kafka官网:Apache Kafka 2.尚硅谷kafka教程:尚硅谷Kafka教程(消息队列kafka快速入门)_哔哩哔哩_bilibili 3.黑马kafka教程:黑马程序员Kafka深入浅出,快速玩转分布式发布订阅消息系统_哔哩哔哩_bilibili 黑马程序员大数据教程企业级消息队列Kafka_哔哩哔哩_bilibili 4.github、码云上去搜索关键字kafka,会有好多不错的关于kafka的应用的开源小项目。 5.面

kafka_zsxq的博客 1540

【博学谷学习记录】超强总结,用心分享 | Kafka

kafka的使用

weixin_43712621的博客 242

kafka学习_尚学堂|百战卓越班学员学习经验分享:KaFKa学习和总结

什么是KaFka:kafka是一个高吞吐的分部式消息系统消息列队常见场景:系统之间解耦合峰值压力缓冲异步通信消息列队的特点:生产者消费者模式可靠性保证– 自己不丢数据– 消费者不丢数据:“至少一次,严格一次”kafka的架构:producer:消息生存者consumer:消息消费者broker:kafka集群的server,负责处理消息读、写请求,存储消息topic:消息队列/分类kafka的消息...

weixin_39700397的博客 160

【博学谷学习记录】超强总结,用心分享 | 狂野大数据-kafka学习分享

1. 消息队列的基本介绍消息: 数据 只不过这个数据具有流动的状态队列: 存储数据的容器, 只不过这个容器具有FIFO(先进先出)特性消息队列: 数据在队列中, 从队列的一端传递到另一端的过程, 数据在整个队列中产生了一种流动状态2. 消息队列的作用同步操作装换为异步操作应用的解耦合流量削峰消息驱动系统3. 消息队列的两种消费模式。

qq_41151516的博客 297

kafka 的pom文件_百战卓越班学员学习经验分享:Flink + kafka 使用

Flink + kafka 整合使用1. 在 pom.xml 中添加 Flink Kafka 连接器的依赖,如果添加了不要重复添加<!-- Flink Kafka 连接器的依赖--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-k...

weixin_36285931的博客 443

kafka教程分享,附带学习经验

三面头条 面试岗位是后台研发工程师,地点选择了上海,通过大佬内推,跳过死亡笔试,加上疫情期间,所以直接视频面,从3点开始,断断续续到晚上8点结束。 一共三轮技术面试,每一轮都要写代码,也喜欢问一些底层知识,让我有点懵逼。 一面: 写一个题,找一个无序数组的中位数 写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少。 操作系统了解么,Linux和windows 说说L

m0_57624876的博客 162

kafka学习_尚学堂|百战卓越班学员学习经验分享:Flink + kafka 使用

Flink + kafka 整合使用1. 在 pom.xml 中添加 Flink Kafka 连接器的依赖,如果添加了不要重复添加<!-- Flink Kafka 连接器的依赖--><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-kafk...

weixin_39989973的博客 228

【博学谷学习记录】超强总结,用心分享|Kafka的Java API 与Kafka的分片、副本机制

- 代码库 -- >< / build>分片: 逻辑概念相当于将一个Topic(大容器) 拆分为N多个小容器 , 多个小的容器构建为一个Topic目的:1- 提高读写的效率: 分片可以分布在不同节点上 , 在进行读写的时候 , 可以让多个节点一起参与(提高并行度) 2- 分布式存储: 解决了单台节点存储容量有限的问题分片的数量:分片是可以创建N多个 , 理论上没有任何的限制副本: 物理的概念。

Sweet~~~ 382
上一篇: 邮件发送方法
下一篇: Kafka操作命令
Mark_XC
博客等级 码龄9年 16粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值