MQ~kafka
文章平均质量分 89
介绍kafka的基础应用及高级应用
敲代码的小小酥
上天,请赐予我平静,去接受我无法改变的;给予我勇气,去改变我能改变的;赐我智慧,分辨两者的区别
展开
-
kafka基础篇(一)——kafka服务端原理及工作机制详解
前言kafka作为一个MQ,我们将kafka分为服务端和客户端来讲解。服务端指kafka服务,即接收并存储消息的服务。客户端指我们在自己项目里调用kafka提供的JAVA API实现消息生产者和消费者的功能。本文我们介绍kafka服务端的工作机制和原理,只有了解和熟悉了kafka服务端的原理,才可以更好的在客户端实现生产者和消费者的功能。一、消息主题与分区的概念主题:在MQ中,主题的概念我们并不陌生。主题是对消息的分类,它类似于数据库中表的概念。(甜点:主题的创建方式–两种:服务端创建和生产者创原创 2021-05-07 13:49:06 · 2371 阅读 · 3 评论 -
kafka基础篇(二)——kafka集群的原理及工作机制详解
前言在实际生产中,都会用到集群,来解决单点故障问题,实现kafka的高可用。kafka的集群中每个节点称作一个broker。每个broker下,都应该有同样分区日志文件,这样,才能保证高可用。下面我们讲解kafka集群的原理和工作机制。一、副本在第一节中我们讲到,在创建主题时,我们会指定主题的副本。在单机版kafka中,我们只能指定为1。但是在集群中,我们可以指定多个副本。指定几个副本,就会在几个broker中创建几个主题和相应的分区,以此来实现集群的高可用。所以,副本的数量,不能大于broker的总原创 2021-05-07 14:04:01 · 3006 阅读 · 0 评论 -
kafka基础篇(三)——kafka生产者客户端
前言在第一节中我们讲到,在kafka服务端我们可以通过命令创建生产者并发送消息。但是在实际开发中,我们都是以java形式在项目中进行生产者的创建和消息的发送。本节我们基于JAVA API的基础讲解kafka生产者。一、JAVA API调用kafka生产者入门先上代码,看java如何创建生产者并发送消息。首先,在maven工程的pom中引入kafka客户端jar包,如下图:我们这里讲解的是2.30版本,所以jar包也选2.3版本。然后创建生产者类,给kafka服务发送消息,代码如下:publi原创 2021-05-07 14:56:19 · 2499 阅读 · 0 评论 -
kafka基础篇(四)——kafka消费者客户端
一、入门程序先上代码,从代码入手,讲解kafka消费者客户端的细节。public class HelloKafkaConsumer { public static void main(String[] args) { //设置消费者属性 Properties properties = new Properties(); properties.put("bootstrap.servers","127.0.0.1:9092"); //原创 2021-05-07 14:58:07 · 2036 阅读 · 2 评论 -
kafka基础篇(五)——kafka总结
前言前面我们介绍了kafka的服务端,集群,生产者客户端和消费者客户端。由此我们看到,我们主要是以MQ的方式,对kafka进行的讲解和分析。除了MQ的功能外,kafka还可以用作流式处理等作用。下面我们就总结一下kafka的特点,优点以及适用场景。一、优点多生产者和多消费者基于磁盘的数据存储,换句话说,Kafka 的数据天生就是持久化的。高伸缩性,Kafka 一开始就被设计成一个具有灵活伸缩性的系统,对在线集群的伸缩丝毫不影响整体系统的可用性。高性能,结合横向扩展生产者、消费者和原创 2021-05-10 10:59:35 · 199 阅读 · 0 评论 -
SpringBoot集成kafka之AckMode介绍
一、AckMode介绍。kafka消费端在读取数据后,会向kafka服务端提交偏移量,来记录消费端读取数据的位置。提交偏移量分为手动提交和自动提交,为了保证数据读取的安全性,我们一般设置成手动提交偏移量。在SpringBoot集成kafka后,SpringBoot为我们提供了AckMode枚举,供我们选择。AckMode有以下几种模式:(AckMode在ContainerProperties类的内部定义) public static enum AckMode { RECORD,原创 2021-05-19 09:02:39 · 3342 阅读 · 0 评论 -
浅谈@KafkaListener工作流程
前述在kafka提供的原生java客户端中,消费者采用while(true){…}的方式进行消息拉取。这一点理解起来还是比较容易的。而用SpringBoot集成Kafka后,我们使用了SpringBoot提供的@KafkaListener注解,去监听消息。这让我不禁产生疑惑:消息是怎么监听过来的呢?怎么实现监听的呢?带着疑问,花费了我一天的时间,去探索其中的原理。由于水平有限,只是探索到了重要的几个步骤,没有探索出来其来龙去脉。下面记录一下这一整天的探索流程。一、探索过程首先,对于Spring项目而言原创 2021-05-19 22:59:01 · 3077 阅读 · 2 评论 -
Kafka手动提交偏移量的作用到底是什么???
Kafka手动提交1.一条一条处理并提交偏移量,某一条偏移量不提交,后面的偏移量提交后会覆盖掉前面的偏移量2.批量处理数据,不提交,会整体的偏移量都不提交。但是当新的数据进入kafka后,消费者也能接收新消息。但是偏移量没有提交到服务端,当发生分区再均衡时,其他消费者分到了这个分区,就会重复消费。没有发生分区再均衡的情况下,消费者本地存着一个分区的偏移量,所以在拉取的时候,会根据本地的偏移量去往后拉取数据,并一直更新本地的偏移量。但是发生分区再均衡的时候,新的消费者去获取分区偏移量时,就是老的偏移量了原创 2021-05-20 20:42:52 · 1691 阅读 · 9 评论 -
Kafka中的分区分配机制
“请你简述一下Kafka中的分区分配”,当面试官问你这个问题的时候,你会怎么回答?其实,这道题目里面就暗藏汹涌,因为Kafka中的分区分配在多处出现,而这个问题的表述方式是在潜意识里暗示你回答一种,这样在你自认为很完美的回答完这个问题之后,面试官会冷不丁的来一句:还有呢?当你回答完一个点的时候,面试官来一句还有呢,当你再补上一个的时候,他还是会来一句还有呢,就算你又补上第三个的时候,他还是会来一句还有呢?这个时候你会不会一脸懵逼?今天就针对这个问题来告诉大家怎么样回答才能严丝合缝地抢得先机。在Kafk转载 2021-05-21 09:17:17 · 508 阅读 · 0 评论 -
《Kafka权威指南》摘抄
1.根据特定的硬件及其性能特征,单个 broker 可以轻松处理数千个分区以及每秒百万级的消息量。2.在某些情况下,生产者会把消息直接写到指定的分区。这通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上。3.Kafka 也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。4.Kafka 有很多配置选项,涉及安装和调优的方方面面。不过大多数调优选项可以使用默认配置,原创 2021-06-04 07:18:53 · 265 阅读 · 0 评论