kafka入门实战教程看这篇就够了
Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
消息队列的应用场景无外乎是:削峰填谷、应用解耦、异步处理等等,具体使用案例我们在之前讲 rabbitmq基础篇已经详述过,这里不在做讲述,这里说一下消息队列的两种模型:
在 Kafka 中,发布订阅的对象是主题(Topic),你可以为每个业务、每个应用甚至是每类数据都创建专属的主题。
生产者(Producer):消息生产者,就是向 kafka broker 发消息的客户端,生产者程序通常持续不断地向一个或多个主题发送消息。
消费者(Consumer):消息消费者,向 kafka broker 取消息的客户端,消费者就是订阅这些主题消息的客户端应用程序。
和生产者类似,消费者也能够同时订阅多个主题的消息。我们把生产者和消费者统称为客户端(Clients)。你可以同时运行多个生产者和消费者实例,这些实例会不断地向 Kafka 集群中的多个主题生产和消费消息。
消费者组Consumer Group (CG):由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
主题(topic) :可以理解为一个队列,生产者和消费者面向的都是一个 topic;
分区(Partition):为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上, 一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列;
副本(Replica):副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本, 一个 leader 和若干个 follower。
leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。
follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower
副本的工作机制也很简单:生产者总是向领导者副本写消息;而消费者总是从领导者副本读消息。至于追随者副本,它只做一件事:向领导者副本发送请求,请求领导者把最新生产的消息发给它,这样它能保持与领导者的同步。
Kafka 使用消息日志(Log)来保存数据,一个日志就是磁盘上一个只能追加写(Append-only)消息的物理文件。因为只能追加写入,故避免了缓慢的随机 I/O 操作,改为性能较好的顺序 I/O 写操作,这也是实现 Kafka 高吞吐量特性的一个重要手段。不过如果你不停地向一个日志写入消息,最终也会耗尽所有的磁盘空间,因此 Kafka 必然要定期地删除消息以回收磁盘。怎么删除呢?简单来说就是通过日志段(Log Segment)机制。在 Kafka 底层,一个日志又近一步细分成多个日志段,消息被追加写到当前最新的日志段中,当写满了一个日志段后,Kafka 会自动切分出一个新的日志段,并将老的日志段封存起来。Kafka 在后台还有定时任务会定期地检查老的日志段是否能够被删除,从而实现回收磁盘空间的目的
Kafka 运行需要 Java 环境,确保安装了 JDK。从官方 Apache Kafka 网站下载 Kafka: kafka.apache.org/downlo...
下载安装包解压:
Kafka 依赖 ZooKeeper 来管理集群。关于对zookeeper的总结,请看 zookeeper铲屎官在一众中间件中的应用 。启动ZooKeeper:
在另一个终端窗口中启动 Kafka 服务器:
在我们部署好kafka环境之后,我可以查看kafka的bin目录的文件,提供许多操作执行脚本,包括服务端、生产者、消费者、主题等等。
主题命令操作
对应参数如下:
示例:
上面包含了对生产者、消费者的命令操作,所以这里不在做单独陈述
springboot项目整合kafka相当简单,引入依赖:
生产者:发送消息
通过上面代码我们可知消息发送往主题的哪个分区,有不同策略。同时我也必须知道kafka的消息只有在同一分区才能保证消费严格有序的,所以有时候我们必须吧某一批消息发往同一个分区,这时候我们可以自定义分区策略,只需要实现Partitioner接口即可
然后再创建生产者的参数配置添加下面参数就可以啦
消费者:消费消息
当然以上操作都是自己手写实现kafka生产者、消费者客户端,我们大可不别这样,因为spring给我们封装好了,我们只需要简单配置,再结合注解便可优雅使用kafka
配置如下:
生产者:
消费者:
kafka入门实战教程看这篇就够了
Kafka传统定义:Kafka是一个分布式的基于发布\/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。发布\/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Pla...
一文带你十分钟入门kafka分布式消息中间件
启动kafka服务,创建主题,发送与消费消息,搭建集群的步骤如下:下载解压kafka,确保zookeeper运行,使用bin目录下文件启动kafka,使用kafka-topics.sh命令创建或自动创建主题,使用kafka-console-producer.sh和kafka-console-consumer.sh命令进行消息的发送与消费,集群搭建通过复制多个代理配置文件,分别启动并创建...
Kafka入门(适合完全不懂的新手)
生产者生产出来的数据从Kafka服务写入内存后,消费者想要去Kafka里消费数据,会先去读os cache,发现os cache没有,那么就去读磁盘,把数据从磁盘读到os cache里;再将os cache里的数据拷贝到应用程序缓存里,再将应用程序缓存里的数据拷贝到socket cache里,再发送至网卡再送给消费者消费,大概如图:能...
Kafaka入门(1)-Kafka简介和安装与启动(mac)
启动Kafka后,可以检查Kafka的启动状态,并查看已存在的Topic列表。在另一个终端,可以作为Producer发送消息,每行消息被视为一条消息,发送到Kafka服务器。再开一个终端作为Consumer接收消息。关闭服务时,应先关闭Kafka,然后关闭Zookeeper。经过半小时的学习,你将能够理解Kafka的基本工作原理。Kafka的架构原...
我需要 Kafka并不难学!入门、进阶、商业实战,这个教材网盘链接求一下...
https:\/\/pan.baidu.com\/s\/1uvxxaGTTyvD4RcyL2UID2w 提取码:1234 本书基于Kafka 0.10.2.0以上版本,采用“理论+实践”的形式编写。全书共68个实例。全书共分为4篇:第1篇,介绍了消息队列和Kafka、安装与配置Kafka环境;第2篇,介绍了Kafka的基础操作、生产者和消费者、存储及管理数据; [1]...
kafka极简入门(三)--创建topic
回顾 kafka极简入门(二)--安装 topic是kafka的生产者和消费者最小交互的单位,我们先从topic入手,创建第一个topic.或 所以执行上面命令将会创建一个名为mytest的topic,该topic下面有1个分区,并且该分区只有1个副本。PS:除了手动创建主题外,还可以将代理配置为在发布不存在的主题时自动创建主题 Partiti...
《深入浅出》Apache Kafka实战
第1章:认识Apache Kafka Kafka快速入门 消息引擎系统 Kafka概要设计 Kafka基本概念与术语 Kafka使用场景.本章小结 第二章:Kafka发展历史 Kafka的历史 Kafka版本变迁 如何选择Kafka版本 Kafka与Confluent 本章小结 第3章:Kafka线上环境部署 集群环境规划 伪分布式环境安装 多节点环境安装 验证部署 参数设置 ...
SpringBoot从入门到精通(十二)SpringBoot集成Kafka
SpringBoot集成Kafka:入门到实践指南欢迎关注,获取最新SpringBoot和Java编程知识。此篇文章将引导刚毕业或新入门的朋友学习如何在SpringBoot项目中集成Kafka。首先,你需要在pom.xml文件中添加spring-kafka依赖。完成引入后,可能会出现提示,点击导入更改。接下来,修改application.yaml配置,配置Kafka的相关参数...
微服务想搞好,消息中间件不能少,Kafka基础入门介绍
Kafka 中消息是以 Topic 进行分类的,生产者生产消息,消费者消费消息,读取和消费的都是同一个 Topic。但是Topic 是逻辑上的概念, Partition 是物理上的概念,每个 Partition 对应一个 log 文件,该 log 文件中存储的就是 Producer 生产的数据。 Producer 生产的数据会不断顺序追加到该 log 文件末尾...
kafka入门:一个开源的、轻量级、高吞吐、高可用的分布式消息系统_百度...
针对这个需求,当前业界已有很多开源的消息系统应运而生,kafka就是一款当然非常流行的消息系统。 Kafka是一款开源的、轻量级的、分布式、可分区和具有复制备份的(Replicated)、基于ZooKeeper协调管理的分布式流平台的功能强大的消息系统。作为一个流式处理平台,必须具备以下3个关键特性:1) 能够允许发布和订阅流数据。 2) ...