![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kafka学习笔记
囚牢-峰子
这个作者很懒,什么都没留下…
展开
-
Kafka学习笔记(十六) --- 关于高水位和Leader Epoch的讨论
高水位介绍你可能听说过高水位但不一定耳闻过Leader Epoch。前者是Kafka中重要概念,而后者是社区0.11版本新推出的,主要是为了弥补高水位机制的一些缺陷。首先来看一下基本定义,什么是高水位?或者说什么是水位?水位一词多用于流式处理领域,比如Spark Streaming或Flink框架中都有水位的概念。教科书中关于水位的的经典定义是:在时刻T,任意创建时间为T',且T' <...原创 2019-10-26 16:25:29 · 1886 阅读 · 0 评论 -
Kafka学习笔记(十五) --- Controller
控制器组件,是Apache Kafka的核心组件,它主要是在Apache Zookeeper的帮助下管理和协调整个Kafka集群。集群中的任意一台Broker都能充当控制器的角色,但是运行过程中只能有一台作为控制器,行使管里和协调的职责。官网有个activeController的JMX指标,可以帮助我们实时监控控制器的存活状态。Zookeeper简介Apache Zookeeper是一个提供...原创 2019-10-25 17:09:19 · 166 阅读 · 0 评论 -
Kafka学习笔记(十四) --- 消费者组重平衡的全流程解析
之前说过,消费者组的重平衡需要借助Kafka Broker端的Coordinator组件,在Coordinator的帮助下完成消费者组的分区重分配。下面详细说一说这个流程。触发和通知触发条件:组成员数量变化;订阅主题数量变化;订阅主题的分区数变化。在实际生产环境中,因命中第一个条件而引发的重平衡最常见。另外,消费者组中的消费者实例依次启动也属于第一种情况,也就是每次启动消费者组时,必然会...原创 2019-10-21 17:50:44 · 292 阅读 · 0 评论 -
Kafka学习笔记(十三) --- 请求是怎么处理的
Apache Kafka定义了一组请求协议,用于实现各种各样的交互操作。如:PRODUCE请求用生产消息的,FETCH请求用于消费消息的,METADATA请求用于请求Kafka集群元数据的。目前,截止2.3版本,Kafka定义了45种请求格式,并且所有的请求都是通过TCP网络以Socket的方式进行通讯的。今天主要讨论Kafka Broker端处理请求的全流程。怎样处理请求,很容易就想到两个:...原创 2019-10-17 11:53:03 · 188 阅读 · 0 评论 -
Kafka学习笔记(十二) --- 副本机制详解
所谓副本机制,也可以称为备份机制,通常指分布式系统在多台网络互联的机器上保存有相同的数据拷贝。副本机制的好处是什么:提供数据冗余,即部分组件失效,系统依然可以运行,增加整体可用性以及数据持久性。 提供高可靠性,支持横向扩展,能够通过增加机器的方式来提升读性能,提高读操作吞吐量。 改善数据局部性,允许将数据放入与用户地理位置相近的地方,降低系统延时。这些好处经常在分布式系统教科书中被提及,...原创 2019-10-16 12:22:57 · 620 阅读 · 0 评论 -
kafka学习笔记(十一) --- 消费者组重平衡能避免吗
在第八篇里,我们已经大概讲过重平衡的原理和用途,这里就直接进入主题。协调者( Coordinator)在Rebalance过程中,所有消费者实例共同参与,在协调者帮助下完成订阅分区的分配。这个协调者是什么?在Akafka中协调者对应的术语是Coordinator,专门Consumer Group服务,负责为Group执行Rebalance以及提供提供位移管理和组成员管理等。具体来讲,Co...原创 2019-10-15 12:14:52 · 267 阅读 · 0 评论 -
Kafka学习笔记(十) --- Consumer端多线程开发消费者实例
Kafka Java Consumer的设计原理Kafka Java Consumer采用的是单线程设计,为什么要采用单线程设计?其实严格来说,说单线程设计是不严谨的。因为,从0.10.1.0版本开始,KafkaConsumer就变成了双线程的设计,即用户主线程和心跳线程。所谓用户主线程,就是你启动Consumer应用程序main方法的那个线程,而心跳线程只负责定期给Broker机器发送心跳...原创 2019-10-14 10:49:39 · 840 阅读 · 1 评论 -
kafka学习笔记(九) --- Consumer 位移管理那些事儿
位移主题(Offset Topic)__consumer_offsets是kafka内部的主题,这里使用位移主题指代__consumer_offsets。在上一章中我们讲过,老版本Consumer的位移管理依托于Apache Zookeeper的,自动的或手动的将位移提交给Zookeeper中保存。这种设计使得Kafka Broker不需要保存位移数据,减少了Broker端需要持有的状态空间...原创 2019-10-12 16:54:47 · 598 阅读 · 0 评论 -
kafka学习笔记(八) --- 消费者组到底是什么?
消费者组,即Consumer Group,kafka比较有亮点的设计之一。先用一句话概括就是:Consumer Group是Kafka提供的可扩展的且具有容错行的消费者机制。既然是一个组,那么组内,必然有多个消费者或者消费者实例,共享一个公共的ID,即Group ID。组内所有消费者协调在一起消费订阅主题所有分区,但是每个分区只能由同一个消费者组内的一个consumer实例消费。Consume...原创 2019-10-11 12:21:48 · 351 阅读 · 0 评论 -
kafka学习笔记(七) --- 幂等生产者和事务生产者
问题引出这次分享的主题是关于:kafka消息交付可靠性保障和精确一次处理语义的实现。所谓的消息交付可靠性保障是指kafka对Producer 和 Consumer要处理的消息提供什么样的承诺。一般有以下三种承诺:最多一次,消息可能会丢失,但不会被重复发送; 至少一次,消息不会丢失,但有可能重复发送; 精确一次,消息不会丢失,也不会被重复发送;目前kafka默认提供的交付可靠性保障是...原创 2019-10-10 12:20:52 · 298 阅读 · 0 评论 -
kafka学习笔记(六) --- JAVA生产者或者消费者是如何管理TCP连接的
apache kafka的所有通信都是基于TCP的,而不是HTTP或者其他协议。为什么?最主要的原因在于TCP和HTTP之间的区别,从社区的角度,开发客户端时,人们能够利用TCP本身提供的一些高级功能,比如多路复用请求以及同时轮询多个连接的能力。多路复用,即将两个或多个数据流合并到一个底层的物理连接中的过程,其实严格来说,TCP并不能多路复用,只是提供可靠的消息交付语义保证,比如自动重传丢失的报文...原创 2019-10-09 14:18:03 · 508 阅读 · 0 评论 -
kafka学习笔记(五) --- 无消息丢失配置怎么做?
kafka在什么情况下才能保证消息不丢失?首先一句话概括为,kafka只对已提交消息做有限度的持久化保证。已提交消息:当kafka的若干个broker接收到消息并成功写入日志文件后,他们会告诉生产者程序已成功提交。为什么是若干个broker,就取决于你对“已提交”的定义。可以选择只要有一个broker成功保存消息就算已提交,也可以是所有broker都成功保存该消息就算已提交。有限度的持...原创 2019-09-29 19:28:30 · 191 阅读 · 0 评论 -
kafka学习笔记(四) --- 压缩算法面面观
kafka中,压缩,说白了就是,以较少的CPU开销去换更少的磁盘占用或更少的网络I/O传输。怎么压缩kafka的消息格式分为两种,社区分别成为V1版本和V2版本,V2版本是在0.11.0.0中正式引入。不论哪个版本,kafka消息层次都分为两层:消息集合(message set)以及消息(message)。一个消息集合包含若干日志项,而日志项才是真正封装消息的地方。kafka底层的消息日志由...原创 2019-09-29 16:03:23 · 753 阅读 · 0 评论 -
kafka学习笔记(三) --- 分区原理剖析
1. 分区的意义 我们在使用kafka进行生产和消费消息的时候,肯定是希望能够将数据均匀地分配到各个broker上。比如很多公司使用kafka收集应用服务器上日志数据,这种消息是很多的,特别是对于那些有大批量机器组成的集群环境,可能分分钟都是以GB计数的数据,怎么样的将数据均匀的分散到kafka的各个broker上成为关键。 kafka中的topic是真正承载数据...原创 2019-09-26 15:18:49 · 347 阅读 · 0 评论 -
kafka学习笔记(二) --- 基本使用
生产环境中的kafka集群应该怎么做? 下面从操作系统、磁盘、磁盘容量、带宽等方面讨论: 操作系统:不同的操作系统给kafka带来的影响是非常大的。目前常见的操作系统有三类:Windows、linux、MacOS。部署在linux应该是最常见的,因为linux比其他两个更适合kafka,主要体现在这三个方面:IO模型的使用、数据网络传输效率、社区支持度。 ...原创 2019-09-03 16:44:12 · 316 阅读 · 0 评论 -
kafka学习笔记(一) --- 入门
kafka作为一款开源的消息引擎系统,主要功能提供提供完备的消息发布和订阅的解决方案。它的消息传递属性,就像引擎,具备某种转化能量的能力。 根据维基百科的定义,kafka是一组消息规范,企业利用在这组规范在不同系统间,传递精确语义定义的消息,实现松耦合的异步式数据传递。 消息引擎最基础的功能:传递对象是消息;如何传递消息。 ...原创 2019-09-03 08:55:55 · 280 阅读 · 0 评论