
Kafka
雪落南城
这一场人间流浪,长随步履温柔相候
展开
-
kafka复习提纲
整理了一般kafka复习提纲,希望对大家能有所帮助原创 2021-03-23 11:19:40 · 227 阅读 · 0 评论 -
如何在项目中引入kafka,但是不使用kafka呢
通常情况下我们在项目中引用了kafka,尤其是本地自己的项目,并不想每次都启动kafka,但这时候启动项目的时候会一直连接kafka,一直连。那么这时候怎么办呢,so easy把kafka相关的内容放到一个新的moduel中,然后项目中想用的时候就在pom中引入这个moduel,不用就不引,这样启动时就不会一直连接kafka broker了demo-kafka中引kafka相关包...原创 2020-12-09 11:01:51 · 799 阅读 · 0 评论 -
kafka生产者怎么知道topic有几个partition且怎么计算出partition的?
学习rocketMQ时想到了一个问题,如果partition扩展了怎么办?旧partition的数据是否需要迁移?(这个问题后来想了想,并不需要,不是redis一致性哈希加节点需要迁移数据)这次问题是倒推的,也和大家分享一下我的倒推逻辑1、首先定位到生产者确定partition的代码KafkaProducer#doSend(ProducerRecord<K, V> record, Callback callback)定位到这个代码 只需通过kafkaTemplate.send一点点点进来原创 2020-11-27 20:20:32 · 2534 阅读 · 1 评论 -
Kafka如何处理大量积压消息
1、consumer故障导致kafka积压了大量消息场景:原来topicA 有3个partition思路:扩展机器数量,创建新的topicB ,设定10个partition,之前A的消费者逻辑改为获取到topicA的消息之后,发topicB的消息,然后新的10台机器来处理topicB的数据,这样效率是以前的3倍。2、消息过期失效也是因为数据大量堆积没有消费,参考场景1 扩展临时机器...原创 2020-03-08 00:18:53 · 12367 阅读 · 0 评论 -
Kafka如何保证消息的顺序性
乱序场景一因为一个topic可以有多个partition,kafka只能保证partition内部有序partition数量=同一个消费者组中消费者数量时,可能需要顺序的数据分布到了不同的partition,导致处理时乱序解决方案1、可以设置topic 有且只有一个partition2、根据业务需要,需要顺序的 指定为同一个partition3、根据业务需要,比如同一个订单,使用同一...原创 2020-03-08 00:04:32 · 9832 阅读 · 3 评论 -
消息队列如何应对消息丢失问题
从三个方面考虑1、生产者 出问题2、MQ 出问题3、消费者消费时 出问题以kafka为例,结合spring对于生产者发送时失败Spring提供了回调接口ProducerListener我们在使用kafkaTemplate时,可以关注这个onSuccess和onError方法,加入相关业务逻辑Kafka集群 丢失消息1、kafka副本冗余机制2、ack 设为 -1 或者ALL...原创 2020-03-07 18:17:01 · 3554 阅读 · 0 评论 -
消息队列MQ
消息队列的优点异步、解耦、削峰消息队列的缺点1、系统可用性降低,在保证服务可用的同时还需要保证MQ可用2、系统复杂度提高,消息堆积、丢失、重复消费等问题3、一致性问题,异步提前返回结果,但后续操作失败特性ActiveMQRabbitMQRocketMQKafka单机吞吐量万级,吞吐量比rocketMQ和kafka低了一个量级万级十万级十万级top...原创 2020-03-06 00:59:30 · 161 阅读 · 0 评论 -
kafka在zookeeper中的目录结构(元数据)
kafka通过向zookeeper注册节点来进行集群的管理,那么,kafka在zookeeper中的存放了哪些数据呢,存储结构又是什么样子的呢1、首先,进入kafka的config/server.properties有一个配置项:zookeeper.connect=localhost:2185/kafka这个配置项的结构为 zookeeper地址:端口号/路径即kafka在zk上的注册信...原创 2019-12-05 11:19:07 · 4889 阅读 · 0 评论 -
Kafka为什么快-顺序访问和零拷贝
目录1、页缓存 + 顺序写2、顺序读3、零拷贝传统读取文件并发送到网络的流程:使用零拷贝技术 读取文件并发送到网络的流程:1、页缓存 + 顺序写首先Kafka每次接收到数据都会往磁盘上去写,如下图所示:那么在这里我们不禁有一个疑问了,如果把数据基于磁盘来存储,频繁的往磁盘文件里写数据,这个性能会不会很差?大家肯定都觉得磁盘写性能是极差的。没错,要是真的...原创 2019-12-04 11:20:19 · 1639 阅读 · 0 评论 -
Kafka如何保证可靠的数据传递
1、复制系数Nreplication.factor每个主题的Partition都会有N个副本这样,在N-1个broker失效的情况下,仍然能从主题读取数据或向主题写入数据复制系数N需要至少N个broker,而且会有N个数据副本2、不完全的首领选举unclean.leader.election如果设为true,当分区首领不可用时,我们允许不同步的副本(不在ISR中)...原创 2019-12-02 11:43:59 · 342 阅读 · 0 评论 -
Kafka Consumer如何获取Topic每个分区的offset
每次rebalance之后,consumer获得了某个Topic新的分区,那么,如何获取到consumer所在组的这个分区的偏移量呢1.消费者往一个叫做_consumer_offset的特殊主题发送消息,消息里包含每个分区的偏移量2、通过消费者所在的消费者组(group.id)Kafka会使用下面公式计算该group位移保存在_consumer_offset的哪个分区上:...原创 2019-11-28 16:30:15 · 3534 阅读 · 0 评论 -
Kafka Consumer 参数
参数名称注释默认值group.id消费者组“”max.poll.record最大拉取消息数量500max.poll.interval.ms两次拉取的最大间隔时间,如果超过这个时间没有poll,则会触发rebalance.300000mssession.timeout.ms会话超时时间,超过这个时间没有收到心跳,则broker会移除当前消费者并触...原创 2019-11-28 15:05:31 · 797 阅读 · 0 评论 -
Kafka-consumer与Topic分区及consumer处理超时
概念:消费者组:Consumer Group ,一个Topic的消息能被多个消费者组消费,但每个消费者组内的消费者只会消费topic的一部分再均衡rebalance:分区的所有权从一个消费者转移到另一个消费者消费者通过被指派为群组协调器的broker(不同的群组可以有不同的协调器) 发送心跳来维持它们和群组的从属关系以及它们对分区的所有权关系。只要消费者以正常的时间间隔发送心跳,就...原创 2019-11-25 19:17:56 · 2346 阅读 · 0 评论 -
Kafka-构建数据管道,从MySQL到ElasticSearch
参考书籍 《Kafka权威指南》1、环境配置及程序安装2、从MySQL 到 Kafka3、从Kafka到ElasticSearch原创 2019-11-11 11:00:36 · 234 阅读 · 0 评论 -
Kafka Producer send原理及重试机制浅析(retries/acks如何被使用的)
我们在使用kafka时会在producer端定义这么两个变量的值:retries 和 ackack已经介绍过了retries是kafka producer针对可重试异常自动发起重试的次数我们在使用kafkaTemplate时发现:Spring 提供了一个producerListener接口,在发送成功/失败时会调用这个接口的onSend/onError方法,我们只需要实现这个接口就可以在发...原创 2019-11-08 11:48:32 · 10282 阅读 · 2 评论 -
Kafka-控制器
控制器其实就是一个broker,除了具有一般broker的功能外,还负责分区首领的选举。集群里第一个启动的broker通过在zookeeper中创建一个临时节点/controller让自己成为控制器。其他broker在启动时会尝试创建这个节点,不过他们会受到一个"节点已存在"的异常。其他broker在控制器节点上创建zookeeper watch 对象,这样可以收到这个节点的变更通知。当控制器...原创 2019-11-07 17:20:52 · 194 阅读 · 0 评论 -
SpringBoot中@KafkaListener原理
在我们的SpringBoot工程中,只需在方法中注解@KafkaListener(topics = {”demo_topic_01“})即可实现对该topic的监听我们知道,kafka的consumer端通过从broker poll消息,然后处理我们通过正向理解 + 结果反推 来分析代码最终肯定会调用KafkaConsumer的poll()方法,可以通过方法栈来确定调用来源查看poll...原创 2019-11-07 15:24:35 · 20905 阅读 · 5 评论 -
Kafka安装
QuickstartThis tutorial assumes you are starting fresh and have no existing Kafka or ZooKeeper data. Since Kafka console scripts are different for Unix-based and Windows platforms, on Windows platfo...原创 2019-11-06 16:12:55 · 209 阅读 · 0 评论 -
Kafka安装时提示Classpath is empty.
安装kafka时,提示Classpath is empty. Please build the project first e.g. by running './gradlew jar -PscalaVersion=2.12.8'发现从官网下的是源码。。。不要下载带src的文件正确文件名形如:http://mirrors.tuna.tsinghua.edu.cn/apache/kafk...原创 2019-11-06 16:09:09 · 13476 阅读 · 0 评论 -
Kafka生产者
我们从KafkaTemplate.send开始了解kafkaTemplate.send("TOPIC_DEMO", UUID.randomUUID().toString().replace("-", ""), JSONObject.toJSONString(paramMap));@Override publi...原创 2019-11-06 14:59:04 · 432 阅读 · 0 评论 -
Kafka server配置文件server.properties
1# Licensed to the Apache Software Foundation (ASF) under one or more 2 # contributor license agreements. See the NOTICE file distributed with 3 # this work for additional information regarding co...原创 2019-11-06 10:51:46 · 622 阅读 · 0 评论 -
Spring自动配置之---KafkaAutoConfiguration学习
1、是Spring提供的对Kafka进行的自动化配置@Configuration@ConditionalOnClass(KafkaTemplate.class)@EnableConfigurationProperties(KafkaProperties.class)@Import({ KafkaAnnotationDrivenConfiguration.class, Kaf...原创 2019-04-25 14:50:34 · 4242 阅读 · 0 评论 -
SpringBoot对kafka consumer参数的默认配置
SpringBoot对kafka consumer参数的默认配置首先上Consumer类 类变量即为需配置的consumer属性public static class Consumer { private final Ssl ssl = new Ssl(); /** * 自动提交间隔时间 设为自动提交时有效 * 默认 5000 ms * Frequenc...原创 2019-11-01 14:29:41 · 7612 阅读 · 3 评论 -
Kafka消费者可靠性配置
一、Kafka消费者可靠性配置1、group.id2、auto.offset.reset3、enable.auto.commit4、auto.commit.interval.ms示例配置:kafka: consumer: group-id: ${spring.application.name} enable-auto-commit: false ...原创 2019-11-01 13:54:26 · 800 阅读 · 0 评论 -
Kafka的ISR
众所周知,kafka中一个topic可以分为多个Partition,每个partition又有多个副本,对于每个topic的partition而言,有一个leader副本,其余的都是follower,leader负责读与写,follower同步leader的数据。当leader挂掉的时候,由controller主持在剩余follower中选举出一个leader但是这个剩余follo...原创 2019-11-01 11:29:34 · 4685 阅读 · 0 评论 -
Kafka知识汇总
原文:http://www.sohu.com/a/248241161_463994Apache Kafka 最早是由 LinkedIn 开源出来的分布式消息系统,现在是 Apache 旗下的一个子项目,并且已经成为开源领域应用最广泛的消息系统之一。Kafka 社区非常活跃,从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台"。K...原创 2019-10-18 11:32:02 · 265 阅读 · 0 评论 -
Kafka生产者对发送事件监听
业务中对Kafka发送的事件成功与否进行监听并做相应逻辑处理。这个是Spring对Kafka进行的封装当我们使用kafkaTemplate的时候kafka对调用发送支持回调,在回调函数中调用了producerListener的方法所以我们只需要实现producerListener接口,添加我们自己对发送成功/失败的业务逻辑即可源码如下:kafkaTemplate.se...原创 2019-02-26 14:07:25 · 4220 阅读 · 0 评论 -
Kafka使用-原理学习总结
目录kafka使用kafka事件监听kafka原理拓扑结构消费者结构参考链接http://www.jasongj.com/2015/03/10/KafkaColumn1/kafka使用pom引入kafka<dependency> <groupId>org.springframework.kafka</groupId>...原创 2019-02-19 10:15:22 · 1177 阅读 · 0 评论 -
Kafka的acks参数对消息持久化的影响
转自:石杉的架构笔记公众号目录(0)写在前面(1)如何保证宕机时数据不丢失?(2)多副本冗余的高可用机制(3)多副本之间数据如何同步?(4)ISR到底指的什么东西?(5)acks参数的含义?(6)最后的思考(0)写在前面面试大厂时,一旦简历上写了Kafka,几乎必然会被问到一个问题:说说acks参数对消息持久化的影响?...转载 2019-05-08 14:30:30 · 4110 阅读 · 0 评论 -
Kafka-选举
转自:石杉的架构笔记公众号Kafka中的选举大致可以分为三大类: 控制器的选举 分区leader的选举 消费者相关的选举 1、控制器的选举在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态等工作。比如当某个分区的leader副本出现故障时...转载 2019-05-08 14:33:36 · 496 阅读 · 0 评论 -
Kafka机制
Kafka的特性高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。 可扩展性:kafka集群支持热扩展 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)...原创 2019-05-07 11:24:41 · 667 阅读 · 0 评论 -
Kafka的ACK含义
ACK有三种0意味着producer不等待broker同步完成的确认,继续发送下一条(批)信息提供了最低的延迟。但是最弱的持久性,当服务器发生故障时,就很可能发生数据丢失。例如leader已经死亡,producer不知情,还会继续发送消息broker接收不到数据就会数据丢失1意味着producer要等待leader成功收到数据并得到确认,才发送下一条message。此选项提供...原创 2019-05-07 11:38:00 · 17449 阅读 · 0 评论 -
Kafka的ACK原理
SpringBoot yml 配置原文:https://blog.youkuaiyun.com/sheep8521/article/details/89511219spring: kafka: consumer: group-id: ${spring.application.name} enable-auto-commit: false auto-offset-res...原创 2019-05-07 11:56:15 · 9662 阅读 · 0 评论 -
Kafka-消费者参数解析
Spring为Kafka做了自动化配置KafkaAutoConfiguration其中yml配的参数被注入进KafkaProperties消费者的参数:public static class Consumer { private final Ssl ssl = new Ssl(); /** * Frequency with which the co...原创 2019-05-07 16:09:39 · 1261 阅读 · 0 评论 -
kafka-记一次线上收不到订阅的Topic的消息
有一个服务 ,订阅了6个topic 上次上线时间5.22 但是在6.2号的时候 开始接受不到其中的3个topic的消息其他消费者可以收到,只有这一个服务收不到1、使用了kafka的一个可视化工具:Kafka Tool正常情况用该工具可以看到 消费者订阅的topic以及 partition数发现少了3个topic2、查看线上日志:Container excepti...原创 2019-06-24 11:15:07 · 2682 阅读 · 0 评论 -
Kafka之broker丢数据原因
kafka丢数据的原因当ack =1 的时候,leader收到消息并把它写入到分区数据文件(不一定同步到磁盘上)时会返回成功,但此时follower还没有同步到最新消息,如果此时leader挂了,则消息丢失在Linux系统上,消息会被写到文件系统缓存里,并不保证他们何时会被刷新到磁盘上,kafka不会一直等待数据被写到磁盘上--它依赖复制功能来保证消息的持久性详解:一个 parti...原创 2019-07-15 12:51:49 · 2437 阅读 · 0 评论 -
记一次线上Kafka数据丢失-消息send成功,所有消费者没有拉取到该消息
前提:kafka send成功但是 消费者拉取的时候 并没有这条记录1、工具:kafka tool分析:1、去服务器查看日志,发现有send成功的记录 ,但是没有Listener的记录@Log4j2@Componentpublic class RepaySuccessListener { @Autowired private OrderServic...原创 2019-07-12 15:28:28 · 3420 阅读 · 2 评论 -
由Kafka事件监听回顾Java回调
Kafka触发监听原理及代码监听器public interface ProducerListener<K, V> { /** * Invoked after the successful send of a message (that is, after it has been acknowledged by the broker). * @param...原创 2019-02-27 12:47:33 · 4002 阅读 · 0 评论