Apache Kafka学习 (一)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
MSE Nacos 企业版免费试用,1600元额度,限量50份
简介: 前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka。 市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习。 ^_^   1. 开始 - 基本概念 学习一样东西,我们首先要知道它是什么。

前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka。

市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习。 ^_^

 

1. 开始 - 基本概念

学习一样东西,我们首先要知道它是什么。

那么kafka是什么呢?

照官网的解释: 

Apache Kafka™ is a distributed streaming platform

(Kafka是一个分布式的流式数据平台。)

照着官网的解释,kafka拥有以下3项主要能力:

1) 能够在流记录上进行发布和订阅,类似于消息队列了。

2) 能够容错存储流记录。

3) 能够处理流记录。

 

那么,接下来又要问了,我们用kafka的好处是什么呢?

主要有以下2点好处:

1) 在系统或者应用之间可以构建可依赖的实时的流数据管道。

2)  可以构建实时的处理流数据的系统。

 

2. 核心概念

* kafka以集群的方式运行在一台或多态服务器上。

* kafka集群根据topic(主题)对存储的流记录进行分类。

* 每条流记录包含一个键值对和一个时间戳。

 

3. 核心API

* Producer(生产者) API 允许应用程序发布流记录到一个或多个kafka主题。

* Consumer(消费者) API允许应用程序订阅一个或多个kafka主题,从而对这些主题下的流数据进行处理。

* Streams(流) API则负责高效地处理各个主题下的流记录。

* Connector(连接器) API允许构建可重用的生产者或消费者,并且让他们和现有的系统进行对接。

  (举个例子:一个连接到关系型数据库的连接器可以捕捉表格的每次改变)

 

 

4. 主题和日志

一个主题可以被多个消费者订阅。

 kafka的每个主题是以分区日志的形式维护的。

日志中的每个分区分布在集群中的各个服务器上。

有一台服务器扮演leader(头领)的角色,而其余的服务器则是followers(跟随者)。

 

5. 生产者(Producer)和消费者(Consumer)

 

上图是2台服务器的kafka集群带了4个分区(P0 - P3), 2组Consumer订阅Producer发布的主题消息。

 

6. 安装和启动

1)下载kafka源码

https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz

> tar -xzf kafka_2.11-0.10.2.0.tgz
> cd kafka_2.11-0.10.2.0

 

2) 启动服务器

由于kafka使用zookeeper来管理集群,所以你先需要启动zookeeper。

如果你没有安装zookeeper,你可以是用户kafka的内置脚本启动一个单节点的zookeeper实例。
  2-1) 启动单节点zookeeper实例:

  > bin/zookeeper-server-start.sh config/zookeeper.properties

  2-2) 启动kafka server:

  > bin/kafka-server-start.sh config/server.properties

   2-3) 创建topic(主题)

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

   2-4) 使用list命令查看所有主题

   > bin/kafka-topics.sh --list --zookeeper localhost:2181

     显示结果:  test

 

7. 发送消息

# 运行生产者脚本,并向刚刚创建的test主题发送一些消息

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

你可以打一些字,如下:

哈哈哈

嘿嘿,你好啊

 

8. 接收消息

# 运行消费者脚本,从test主题订阅消息

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

  收到消息:

  哈哈哈

  嘿嘿,你好啊

 

我们以上演示需要开启4个控制台,效果如下:

 

 

好了,第一次笔记到此结束,后续会继续阅读学习。 ^_^

 

 

 




目录
打赏
0
0
0
0
2
分享
相关文章
Apache Kafka安全加固指南:保护你的消息传递系统
【10月更文挑战第24天】在现代企业环境中,数据的安全性和隐私保护至关重要。Apache Kafka作为一款广泛使用的分布式流处理平台,其安全性直接影响着业务的稳定性和用户数据的安全。作为一名资深的Kafka使用者,我深知加强Kafka安全性的重要性。本文将从个人角度出发,分享我在实践中积累的经验,帮助读者了解如何有效地保护Kafka消息传递系统的安全性。
395 7
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
404 5
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
177 1
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
134 0
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
320 1
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
199 1
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
632 9
"Kafka核心机制揭秘:深入探索Producer的高效数据发布策略与Java实战应用"
【8月更文挑战第10天】Apache Kafka作为顶级分布式流处理平台,其Producer组件是数据高效发布的引擎。Producer遵循高吞吐、低延迟等设计原则,采用分批发送、异步处理及数据压缩等技术提升性能。它支持按消息键值分区,确保数据有序并实现负载均衡;提供多种确认机制保证可靠性;具备失败重试功能确保消息最终送达。Java示例展示了基本配置与消息发送流程,体现了Producer的强大与灵活性。
138 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等