![](https://img-blog.csdnimg.cn/222d65bc20464cf587a302fc2afb575a.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kafka
文章平均质量分 69
Kafka
BasicLab基础架构实验室
本人深耕基础架构领域,曾在国内500强大厂研发企业级百亿量级吞吐中间件,擅长Java语言、Go语言、Python语言、C语言、NodeJS、Web、Linux、深度学习、大数据、云原生等
展开
-
Kafka 的 replica 同步机制(ISR与OSR列表数据相互转换)
Apache Kafka的流行归功于它设计和操作简单、存储系统高效、充分利用磁盘顺序读写等特性、非常适合在线日志收集等高吞吐场景。Apache Kafka特性之一是它的复制协议。对于单个集群中每个Broker不同工作负载情况下,如何自动调优Kafka副本的工作方式是比较有挑战的。它的挑战之一是要知道如何避免follower进入和退出同步副本列表(即ISR)。从用户的角度来看,如果生产者发送一大批海量消息,可能会引起Kafka Broker很多警告。这些警报表明一些topi...原创 2021-07-27 22:12:38 · 1574 阅读 · 0 评论 -
Kafka ISR机制
kafka的ISR机制被成为“不丢消息”机制。在说ISR机制前,先讲一下kafka的副本(replica)。kafka的Replica1.kafka的topic可以设置有N个副本(replica),副本数最好要小于broker的数量,也就是要保证一个broker上的replica最多有一个,所以可以用broker id指定Partition replica。2.创建副本的单位是topic的分区,每个分区有1个leader和0到多个follower,我们把多个replica分为Lerder rep原创 2021-07-27 21:52:45 · 1141 阅读 · 0 评论 -
Kafka 中 Zookeeper 的作用
Kafka主要使用ZooKeeper来保存它的元数据、监控Broker和分区的存活状态,并利用ZooKeeper来进行选举一、Kafka在ZooKeeper中保存了哪些信息?上图中圆角的矩形是临时节点,直角矩形是持久化节点左侧这棵树保存的是Kafka的Broker信息,/brokers/ids/[0...N],每个临时节点对应着一个在线的Broker,Broker启动后会创建一个临时节点,代表Broker已经加入集群可以提供服务了,节点名称就是BrokerID,节点内保存了包括Broker.原创 2021-07-27 21:39:16 · 992 阅读 · 0 评论 -
Kafka 控制器的作用(Controller)
在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。当使用kafka-topics.sh脚本为某个topic增加分区数量时,同样还是由控制器负责分区的重新分配。Kafka中的控制器选举的工作依赖于Zookeeper,成原创 2021-07-27 21:31:09 · 1290 阅读 · 0 评论 -
Zookeeper 中的 ZXID
致使ZooKeeper节点状态改变的每一个操作都将使节点接收到一个Zxid格式的时间戳,并且这个时间戳全局有序。也就是说,每个对节点的改变都将产生一个唯一的Zxid。如果Zxid1的值小于Zxid2的值,那么Zxid1所对应的事件发生在Zxid2所对应的事件之前。实际上,ZooKeeper的每个节点维护者两个Zxid值,为别为:cZxid、mZxid。(1)cZxid: 是节点的创建时间所对应的Zxid格式时间戳。(2)mZxid:是节点的修改时间所对应的Zxid格式时间戳。实现中Zxid是一个原创 2021-07-27 21:15:14 · 1473 阅读 · 0 评论 -
Kafka 和 Zookeeper 的 Leader 和 Follower 区别(选举&数据同步)
一、zookeeper 与kafka保持数据一致性的不同点:(1)zookeeper使用了ZAB(ZookeeperAtomicBroadcast)协议,保证了leader,follower的一致性,leader 负责数据的读写,而follower只负责数据的读,如果follower遇到写操作,会提交到leader;当leader宕机的话,使用Fast Leader Election快速选举出新的leader,节点在一开始都处于选举阶段,只要有一个节点得到超半数节点的票数,它就可以当选准 l...原创 2021-07-27 21:13:24 · 2718 阅读 · 2 评论 -
Kafka 的简介与架构
一、简介1.1 概述Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非原创 2021-07-27 20:58:24 · 1475 阅读 · 15 评论 -
SpringBoot 重置 kafka 偏移量offset(kafka-0.10.1.0)
如果使用的自动提交偏移量的模式,偏移量会给到kafka或者zk进行管理,其中kafka的偏移量重置给了重新消费kafka内未过期的数据提供了机会,当消费者出错,比如消费了数据,但是中途处理失败,导致数据丢失,这时候重置偏移量就是一剂后悔药,让消费者能够重新来过,当然后悔药也是有保质期的,还得取决于数据的保留策略。这里讨论一下kafka_2.11.0.10.1.0版本重置偏移量的方案该版本kafka不像其他版本一样,通过执行一句方便的命令就可以重置到指定的偏移量,本文给出了一种通过Java代码来重置偏原创 2021-07-27 20:25:00 · 2644 阅读 · 0 评论 -
Springboot 整合Kafka 实现手动提交 offset
前言大名鼎鼎的消息中间件Kafka大家一定不陌生吧,使用消息中间件的时候最怕的就是消息丢失了,如何解决这个问题呢?或许大家都知道,消费者端手动提交offset嘛。那么具体代码该怎么写呢?本文就基于springboot来进行消费者手动提交offset的试验。配置application.ymlspring: kafka: # 指定 kafka 地址可以多个 bootstrap-servers: - 192.168.130.128:9092 - 192原创 2021-07-27 20:13:06 · 6823 阅读 · 2 评论 -
Kafka 如何保证数据不丢失?不重复?
一般我们在用到这种消息中件的时候,肯定会考虑要怎样才能保证数据不丢失,在面试中也会问到相关的问题。但凡遇到这种问题,是指3个方面的数据不丢失,即:producer consumer端数据不丢失 broker端数据不丢失下面我们分别从这三个方面来学习,kafka是如何保证数据不丢失的一、producer生产端是如何保证数据不丢失的1、ack的配置策略acks = 0 生产者发送消息之后 不需要等待服务端的任何响应,它不管消息有没有发送成功,如果发送过程中遇到了异常,导...原创 2021-07-27 20:05:44 · 4507 阅读 · 0 评论 -
Kafka 中 AR、ISR、OSR 是什么?ISR 的伸缩性什么?
相信大家已经对kafka的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念。一、ISR and AR简单来说,分区中的所有副本统称为AR(Assigned Replicas)。所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In Sync Replicas)。 ISR 集合是 AR 集合的一个子集。消息会先发送到leader副本,然后follower副本才能从leader中拉取消息进行同步。同步期间,follow副本相对于lea...原创 2021-07-27 19:39:07 · 3558 阅读 · 0 评论 -
logstash-6.2.3从kafka读取日志输出到elasticsearch-6.2.3中
原文地址:https://my.oschina.net/ytqvip/blog/1795122下载 $ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz解压 $ tar -zxvf logstash-6.2.3.tar.gz配置从kafka读取数据输出到ela...转载 2019-06-16 17:22:36 · 1436 阅读 · 5 评论 -
Kafka系列之-Kafka监控工具KafkaOffsetMonitor配置及使用
KafkaOffsetMonitor是一个可以用于监控Kafka的Topic及Consumer消费状况的工具,其配置和使用特别的方便。源项目Github地址为:https://github.com/quantifind/KafkaOffsetMonitor。 最简单的使用方式是从Github上下载一个最新的KafkaOffsetMonitor-assembly-0.2.1.jar,上传到某服...转载 2018-07-22 19:08:41 · 588 阅读 · 0 评论 -
kafka的一些常用命令
启动zookeeperbin/zookeeper-server-start.sh config/zookeeper.properties &启动kafkabin/kafka-server-start.sh config/server.properties &停止kafkabin/kafka-server-stop.sh停止zookeeperbin/zookeeper-...转载 2018-08-31 00:10:07 · 239 阅读 · 0 评论 -
kafka对消费者分配分区规则(Java源码)
在上一篇 kafka topic消息分配partition规则(Java源码) 我们对生产者产生的消息分配partition规则进行了分析,那么本章我们来看看消费者是怎么样分配partition的。 kafka 为了保证同一类型的消息顺序性(FIFO),一个partition只能被同一组的一个consumer绑定消费,不同组的consumer可以绑定同一个partition进行重复消费。但是...转载 2018-08-31 07:54:13 · 1421 阅读 · 0 评论 -
SpringBoot通过kafka实现消息发送与接收(包括不能发送和消费kafka消息的采坑记录)
kafka采坑记录: 1、kafka服务端server.properties中的broker.id集群内需要唯一。 2、kafka config文件中listeners和advertised.listeners需要配置本机ip:9092地址,不然消费不到数据。(如:192.168.217.128:9092) 3、java代码客户端版本号需要与服务端版本号一一对应,不然...原创 2018-08-31 08:12:10 · 8536 阅读 · 0 评论 -
记一次线上kafka一直rebalance故障
原文地址:https://www.jianshu.com/p/271f88f06eb3今天我司线上kafka消息代理出现错误日志,异常rebalance,而且平均间隔2到3分钟就会rebalance一次,分析日志发现比较严重。错误日志如下08-09 11:01:11 131 pool-7-thread-3 ERROR [] - commit failed org.apache.kaf...转载 2019-04-08 10:38:29 · 2795 阅读 · 0 评论 -
kafka9重复消费问题解决
原文地址:https://blog.csdn.net/u011637069/article/details/72899915背景:之前用的kafka客户端版本是0.8,近期升级了kafka客户端的版本,写了新的消费者和生产者的代码,在本地测试没有问题,可以正常消费与生产。但最近的项目中使用了新版的代码,当数据量较大时会出现重复消费的问题。现将问题的排除与解决过程记录下来,避免再次踩坑。问题...转载 2019-04-08 10:48:16 · 1057 阅读 · 0 评论 -
kafka重复消费问题
原文地址:https://blog.csdn.net/zwx19921215/article/details/83269392开篇提示:kafka重复消费的根本原因就是“数据消费了,但是offset没更新”!而我们要探究一般什么情况下会导致offset没更新?今天查看Elasticsearch索引的时候发现有一个索引莫名的多了20w+的数据,顿时心里一阵惊讶,然后赶紧打开订阅服务的日志(消...转载 2019-04-08 10:58:36 · 1132 阅读 · 0 评论 -
SpringBoot Kafka工具类封装
bootstrap需要自己配置一下,其他的直接用就可以。package com.oal.microservice.util;import com.alibaba.fastjson.JSONObject;import com.oal.microservice.config.Bootstrap;import org.apache.kafka.clients.producer.Kafka...原创 2019-06-18 20:34:17 · 7741 阅读 · 8 评论 -
Kafka搭建(单机+集群)
This 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 platforms use bin\...转载 2018-07-22 17:16:03 · 616 阅读 · 2 评论