自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 大厂面试|为什么要使用 Kafka?

1、缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,Kafka在中间可以起到一个缓冲的作用,把消息暂存在Kafka中,下游服务就可以按照自己的节奏进行慢慢处理2、解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力3、冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅Topic的服务消费到,供多个毫无关联的业务使用4、健壮性:消息队列可以堆积请求,所以消费端

2022-01-11 09:11:07 473

原创 Kafka的灵魂伴侣LogiKM(2)之kafka针对Topic粒度的配额管理(限流)

【温馨提示】: 如果感觉排版不适,可点击下文Kafka的灵魂伴侣Logi-KafkaManger(2)之kafka针对Topic粒度的配额管理(限流)项目地址: didi/Logi-KafkaManager: 一站式Apache Kafka集群指标监控与运维管控平台本文主要是讲解 针对Topic生产/消费 的限流配置; 如果不需要设置限流 则可忽略;申请配额(限流)不了解kafak配额管理机制的可以先了解一下 kafka中的配额管理(限速)机制默认创建完T

2022-01-11 09:10:41 800

原创 Kafka核心组件之Controller源码解析(6)

Controller核心源码解析下文基于Kafka 2.2对Controller进行分析,涉及内容较多,从Controller启动流程、选举流程、初始化工作、以及Controller的主要工作原理都有详细说明,还请大家耐心浏览1、Controller启动流程【主要看写的源码注释】/*** KafkaController#startup中为每一个server都会启动一个eventManager** 集群首次启动时,Controller 尚未被选举出来。* 于是,Broker

2022-01-10 09:18:56 1229

原创 Kafka数据压缩

背景数据压缩,是一种用时间换空间的思想,就是说通过cpu使用率的升高,来降低磁盘空间和网络IO,比如在hadoop中通过DEFLATE、LZ4、Snappy,都是用来做数据压缩的降低数大小,使hadoop整体集群存储能力能耗。在kafka中,数据压缩也是用来做相同事情的。数据的压缩方式Kafka 的消息分为两个层级:消息集合以及消息。一个消息集合中包含若干条日志项,而日志项才是真正封装消息的地方。Kafka 底层的消息日志由一系列消息集合日志项组成。Kafka 通常不会直接操作具体的一条条消

2022-01-07 09:24:22 5190 1

原创 【kafka原理】聊聊 Kafka Consumer 那点事

今天我们主要来聊聊 Kafka Consumer 即消费者的内部底层原理设计思想。1、Consumer之总体概述在 Kafka 中, 我们把消费消息的一方称为 Consumer 即 消费者, 它是 Kafka 的核心组件之一。它的主要功能是将 Producer 生产的消息进行消费处理,完成消费任务。那么这些 Producer 产生的消息是怎么被 Consumer 消费的呢?又是基于何种消费方式进行消费,分区分配策略都有哪些,消费者组以及重平衡机制是如何处理的,偏移量如何提交和存储,消费进度.

2022-01-06 09:13:35 1167

原创 kafka高性能之-顺序读写

前言Kafka是将消息记录持久化到本地磁盘中的来确保kafka能对海量数据进行处理,通常来看磁盘读写性能差,但是kafka确通过磁盘顺序读写来提升整体的IO性能。顺序读写性能对照表:这里明显能看出,顺序读写不论是内存还是磁盘都要远远高于随机读写。那么问题来了为什么顺序读写的性能要高于随机读写,这里抛开linux内核对顺序读写的优化,单从磁盘(机械硬盘和固态硬盘)原理来看顺序读写带来的性能提升,机械硬盘:机械硬盘的结构一个唱片机,它有一个旋转的盘片和一个能沿半径方向移动

2022-01-05 09:08:29 2559 1

原创 Kafka Producer对连接的管理

使用TCP连接Kafka中所有通信都是基于 TCP 的,而非 HTTP 或其他协议。那么kafka为什么不直接使用 HTTP 作为通信协议呢,或者使用性能更好的 UDP 作为通信协议。从kafka本身来看,数据要保证从生产者稳定到达消费者这一个要求就直接排除掉 UDP 和基于 UDP 的 HTTP3 ,那么在 HTTP 和 TCP 中间从性能考虑 HTTP 协议作为 TCP 的上层协议注定要低于 TCP。还有就是 TCP 协议本身的高级特性(比如多路复用)也是导致选择 TCP 的主要原因。如

2022-01-04 09:12:38 1291

原创 producer线程模型简介

producer线程模型producer的cpu消耗reocrdbatch组装和压缩 produce request组装和序列化 网络发送和数据接收 callback函数回调record batch组装1.从record accumulator 申请 record batch,大小为batch size,申请的recordbatch是可以复用的,2.将record陆续填充进record batch,record batch中record被存储到连续的内存空间,存储结构按照b.

2021-12-31 09:07:51 1326

原创 kafka 配置参数

一、Broker 端参数1:Broker是需要配置存储信息的,即Broker使用哪些磁盘,针对存储信息的参数如下:log.dirs:指定Broker需要使用的若干个文件目录,这个参数没有默认值,这个需要自己指定。log.dir:他是上一个参数的补充。所以只用设置log.dirs即可。2:一般线上的生产环境中都会给log.dirs指定多个路径,例如:/opt/kafka1,/opt/kafka2,/opt/kafka3,如果条件允许,最好保证这些目录都挂载到了不同的磁盘上。这样做有两个好处:

2021-12-30 09:01:14 2168

原创 资料分享|kafka学习视频

个人认为最好先跟随视频进行学习,总结一下收藏的视频资料:1.kafka官网:Apache Kafka2.尚硅谷kafka教程:尚硅谷Kafka教程(消息队列kafka快速入门)_哔哩哔哩_bilibili3.黑马kafka教程:黑马程序员Kafka深入浅出,快速玩转分布式发布订阅消息系统_哔哩哔哩_bilibili 黑马程序员大数据教程企业级消息队列Kafka_哔哩哔哩_bilibili4.github、码云上去搜索关键字kafka,会有好多不错的关于kafka的应用的开源小项目。5.面

2021-12-29 09:10:03 1375

原创 consumer线程简介

consumer有2个线程,其中一个是heartbeat线程用来跟broker中的group coordinator保持心跳状态。另一线程线程负责consumer的所有动作。我们主要分析fetch数据的流程。consumer的cpu消耗构造fetch请求对象和序列化 网络发送和接收数据 fetch response反序列化 record数据解压 用户的数据处理逻辑构造fetch请求对象和序列化1.根据订阅的分区生成fetch对象,需要去除正在发送的broker上的topic p

2021-12-28 09:34:24 701

原创 资料分享|kafka学习秘籍

【背景】 Kafka发展至今名家典籍层出不穷,借此机会通过Kafka中文社区平台,把印象最深的几本书及资料分享给大家,交作业不是目的,目的是与大家共同成长与进步!【资源】[1].[入门]:胡夕的《Kafka实战》详细的介绍了Kafka的部署、开发、运营、监控及优化等常规性操作等,帮助你快速上手及应用.[2].[进阶]:朱忠华的《深入理解Kafka:核心设计与实践原理》笔名朱小厮,系统的讲解了Kafka的各个组件的内部原理等,帮助你系统化的学习Kafka.[3].[高级]:郑奇煌的《Kafk.

2021-12-27 09:33:11 553

原创 实战问答:leader切换未发生原因探析

Q对一套kafka1.1.1三个topic实施副本重分布,目标为将图中replica副本中第一个选为leader,前提条件,这套环境的auto.leader.rebalance.enable这个参数等于true,以为是会自动优选,但似乎只有leader为1的那个topic发生了leader切换(原本三个topic leader都为3)。问题1:想了解其余两个topic未发生leader切换原因,根据controller日志,似乎这个配置策略不是kafka认为的优选策略?问题2:replica和i

2021-12-24 09:40:31 1288

原创 实战分享|Kafka集群扩容的具体步骤

Kafka集群扩容的具体步骤,自己实践过的步骤:提示:Kafka的Broker机器扩容以后,原有的topic分区不会重分区到新的Broker上,需要手动进行分区,以下为手动分区分区教程: 没弄过的建议先在测试环境弄一遍,没问题再去生产操作1:在当前kafka的config目录下新建一个json文件vim /app/servers/kafka/config/topic-to-move.json2:json文件格式如下:2.1 针对单个topic:{“topics”:[{"...

2021-12-23 09:52:37 1454

原创 consumer_offsets 位移主题

__consumer_offsets 在 Kafka 源码中有个更为正式的名字,叫位移主题,即 Offsets Topic。为了方便今天的讨论,我将统一使用位移主题来指代 __consumer_offsets。需要注意的是,它有两个下划线哦。好了,我们开始今天的内容吧。首先,我们有必要探究一下位移主题被引入的背景及原因,即位移主题的前世今生。在上一期中,我说过老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的,它会自动或手动地将位移数据提交到 ZooKeeper 中保

2021-12-22 09:37:12 287

原创 Kafka跨集群同步工具-MirrorMaker2.0详解

【背景】 最近发现不少文章提到log4j的远程代码执行漏洞会影响Kafka,在此向大家说明Kafka采用的版本是log4j 1.2.17且不受此事件影响。【详情】打开GitHub - apache/kafka: Mirror of Apache Kafka默认主分支,直接查看gradle目录下的dependencies.gradle文件搜索log4j就可以发现使用的是1.2.17版本而不是受影响版本log4j2.x版本。特别说明Kafka3.2.0之后社区将会使用log4j.

2021-12-17 10:23:52 8157

原创 实战问答:Kafka压测详解

Q:请教下 kafka的压测。 我想了解压测的过程方法是什么样的。 我应该使用什么压测方法,压测哪些指标、关注哪些压测结果指标,以及能得到什么样的kafka性能处理结论。A:压测是一个系统性问题,非常考验对Kafka的深度掌控能力,需要明确压测场景化目标,Case By Case的压测。实操层面,涉及仿真环境准备,压测工具的选取,压测过程观测,压测结果分析,压测报告呈现仿真环境准备,需要在Kafka的机型选择、部署架构、系统参数、配置参数、业务数据等多个维度与线上环境保持一致,最难.

2021-12-16 09:42:06 1723

原创 LogiKM如何增加上报监控系统指标

# LogiKM如何增加上报监控系统指标?[点我查看原文](LogiKM/如何增加上报监控系统指标.md at master · didi/LogiKM · GitHub)## 0、前言LogiKM是 **一站式`Apache Kafka`集群指标监控与运维管控平台** ,当前会将消费Lag,Topic流量等指标上报到监控系统中,从而方便用户在监控系统中对这些指标配置监控告警规则,进而达到监控自身客户端是否正常的目的。那么,如果我们想增加一个新的监控指标,应该如何做呢,比如我

2021-12-15 10:03:13 619

原创 Group Coordinator原理

什么是coordinator每个consumer group 都会选择一个broker作为自己的coordinator,他是负责监控整个消费组里的各个分区的心跳,以及判断是否宕机,和开启rebalance的。如何选择coordinator机器首先对group id 进行hash,接着对 __consumer_offsets 的分区数量进行取模,默认分区数量是50,__consumer_offsets 的分区数量可以通过offsets.topic.num.partitions来设置,找到分区以

2021-12-15 10:01:52 1009

原创 实战:第三方工具greys辅助实例

来源:Kafka知识星球https://z.didi.cn/5gSF9#实战问答#【背景】 虽然Kafka-0.9.0之后增加了权限认证体系,但是笔者发现依然有大部分用户没有启用权限认证,有时需要追溯客户端来源时无法快速定位,借助Kafka中文社区与大家分享一下笔者的经历。集群中的Topic以org.等前缀开头来代表不同的业务场景,在日常巡检时发现集群中存一个不符合规范的Topic且有写入流量,该Topic名称为log_waimai_test,由于集群没有启用权限认证机制,所以通过第三方...

2021-12-14 10:15:55 467

原创 深度剖析:Kafka 请求是如何处理的? 看完这篇文章彻底懂了

大家好,我是 华仔, 又跟大家见面了。最近工作比较忙,外加上在弄公众号迁移开通留言功能, 原创文章已经鸽了一个多月, 让大家久等了。上一篇作为专题系列的第一篇,我们深度剖析了关于 Kafka 存储架构设计的实现细节,今天开启第二篇,我们来深度剖析下「Kafka Broker 端网络架构和请求处理流程」是如何设计的? 相信使用...

2021-12-13 17:34:06 466

原创 Kafka往事——揭露Kafka推出Kafka Streams背后原因

按照官方的说法现在Kafka即是消息引擎系统,也是一个分布式流处理平台(Apache Kafka is an open-source distributed event streaming platform) 从2012年Kafka开源以来,短短3年间Kafka被越来越多的公司应用到他们企业内部的数据管道中,特别是在大数据工程领域,Kafka在承接上下游、串联数据流管道方面发挥了重要的作用所有的数据几乎都要从一个系统流入...

2021-12-13 15:02:29 447

原创 Kafka原理——Kafka为何如此之快?

我们都知道操作系统每次从磁盘读写数据的时候,需要先寻址找到数据在磁盘上的物理位置,然后再进行数据读写,如果是HDD硬盘,由于它要移动磁头,所以这个寻址需要较长时间,如果数据是按照顺序读写,它只要寻址一次,就可以连续读写下去,这样就会省去大部分寻址时间,因此性能会比随机读写提升几十倍,如果是SSD硬盘顺序读写的性能要比随机读写快几倍而Kafka充分利用磁盘的这个特性,它接收消息后,就按顺序地写入对应分区的log文件中,一个文...

2021-12-13 14:55:20 474

原创 Kafka往事——Kafka的诞生

初期LinkedIn采用了ActiveMQ来进行数据交换,但是 ActiveMQ有两个比较通用的缺陷:1、当消费者出现,无法及时消费的时候,数据就会丢掉2、可延展性问题,ActiveMQ很难很好地配合数据的波峰或波谷。经常会出现消息阻塞导致服务无法正常访问为了能够解决这个问题,LinkedIn决定研发自己的消息传递系统,当时LinkedIn的首席架构师Jay Kreps便开始组织团队研发了一套流数据处理平台,也就是...

2021-12-13 14:50:31 320

原创 Kafka中的数据采集和统计机制

温馨提示: 获得更好阅读体验请访问多图解Kafka中的数据采集和统计机制在讲解kafka限流机制之前我想先讲解一下Kafka中的数据采集和统计机制 你会不会好奇,kafka监控中,那些数据都是怎么计算出来的 比如下图这些指标LogiKM监控图这些数据都是通过Jmx获取的kafka监控指标, 那么我们今天老探讨一下,这些指标都是怎么被计算出来的在开始分析之前,我们可以 自己思...

2021-12-09 09:14:06 1940

原创 提示- kafka线上部署需要注意这些

操作系统目前常见的操作系统有三种:Linux、WindowsServer,相比之下Linux系统要更适合,当然部署在Linux上的生产环境是最多的。Linux系统的优势主要集中在下面的三个方面上:I/O模型的使用 数据网络传输效率 社区支持度I/O模型的使用主流的I/O模型通常有五种:阻塞式I/O、非阻塞式I/O、I/O多路复用、信号驱动I/O和异步I/O。每种 I/O 模型都有各自典型的使用场景,J...

2021-12-09 09:08:44 244

原创 Kafka的灵魂伴侣LogiKM 之运维管控–集群运维

温馨提示:如觉排版不好可点击下面链接阅读Kafka的灵魂伴侣LogiKM(4)之运维管控--集群列表运维管控运维管控这个菜单栏目下面主要是供运维人员来管理所有集群的;集群列表Kafka的灵魂伴侣Logi-KafkaManger三之运维管控--集群列表集群运维迁移任务kafka的迁移场景, 一般有同集群数据迁移、跨集群数据迁移; 我们这里主要讲 同集群数据迁移; 同集群之间...

2021-12-09 09:06:15 479

原创 如何看懂2021 Gartner 新兴技术和趋势影响雷达

每年Gartner都会对当前热点趋势进行追踪,并且探究其背后所依赖的技术,并通过将未来发展趋势与新兴技术作结合,将新兴技术划分成了三个雷达象限:界面和体验:从根本上改变我们与世界互动方式的技术。 业务推动因素:通过改变实践、流程、方法、模型或功能来影响企业的技术。 生产力革命:多种技术和趋势的融合,可帮助组织快速、准确、大量地分类、预测和解决人类无法解决的问题。环代表范围,它估计技术或趋势从早期采用者过渡到...

2021-12-08 09:15:37 997

原创 案例分享——巧用方法排查Broker启动失败原因

【背景】 业务同学通过公司内部的Kafka管控平台进行Topic创建完成之后,发现Topic命令不规范,再次通过Kafka管控平台进行Topic删除操作,恰好这时负责Kafka集群运维的同学对某台Broker进行了重启操作,这是很常规的运维操作理论上没有问题,但Broker启动失败了并抛出java.lang.StringIndexOutOfBoundsException: String index out of ra...

2021-12-08 09:14:47 2131

原创 浅谈数据中台和DataFabric的差异

随着应用的不断增多,数据日益孤岛化,访问困难,各种上云等更加剧了这种隔离。数据团队一直面临着在日益分散的环境中对各类数据进行实时快捷访问的持续压力。面对这样的问题,有两个概念非常火,国内是数据中台,国外则是Data Fabric(数据编织/数据经纬),要说数据中台大家肯定非常熟悉,其实Data Fabric在国外火热的程度远超国内的数据中台,给大家看一下国外头部公司怎么评价Data Fabric来感受下:Gart...

2021-12-08 09:05:22 1851

原创 Kafka的灵魂伴侣LogiKM(1)之集群的接入及相关概念讲解

温馨提示: 如有排版问题可访问 :Kafka的灵魂伴侣LogiKM(1)之集群的接入及相关概念讲解前言今天新开了专栏 :【Kafka的灵魂伴侣LogiKM】前言 正文 接入集群 基本信息展示 创建Region和逻辑集群 创建一个普通用户 普通用户申请应用 普通用户申请Topic 运维人员审核Topic 文章列表在阅读此文前,您可以先按照文档 Logi-KafkaManager...

2021-12-08 09:03:59 1543

原创 Kafka核心组件之Controller可观测性(5)

Controller如何实现可观测性?在整个集群运行过程中,只能有一个Broker成为Controller。所以要监控Controller的数量以及Controller的变更历史。可以用Kafka的JMXTool,进行轻量级的监控。监控效果:通过JMXTool,还可以拉取Kafka的其他指标进行监控。例如:under_replicated_partitions有非同步副本监...

2021-12-08 09:02:24 122

原创 Kafka核心组件之Controller各版本差异(4)

Controller在版本上的改进(一)在Kafka2.2之前网络处理模型:Kafka Server在启动时会初始化SocketServer、KafkaApis和KafkaRequestHandlerPool对象,这也是Server网络处理模型的主要组成部分。Kafka Server的网络处理模型也是基于Java NIO机制实现的,实现模式与Reactor模式类似。如上图,所有请求共享一个requestQue...

2021-12-07 14:57:15 349

原创 Kafka核心组件之Controller选举机制(3)

Broker如何成为Controller和解决脑裂问题?(一)Broker如何成为Controller最先在Zookeeper上创建临时节点/controller成功的Broker就是Controller。源码路径(Kafka2.2):Kafka#main->KafkaServerStartable#startup()->KafkaServer#startup()->KafkaCon...

2021-12-07 14:55:30 381

原创 Kafka核心组件之Controller功能及故障转移(2)

Controller的职责是什么?我们经常说,控制器是起协调作用的组件,那么,这里的协调作用到底是指什么呢?总体来说控制器的职责大致可以分为 5 种:主题管理,分区重分配,Preferred leader选举,集群成员管理(Broker上下线),数据服务(向其他Broker提供数据服务)。它们分别是:UpdateMetadataRequest:更新元数据请求。topic分区状态经常会发生变更(比如leader重...

2021-12-07 14:53:44 839

原创 Kafka核心组件之Controller概念介绍(1)

Controller是什么?Controller,是Apache Kafka的核心组件。它的主要作用是在Apache Zookeeper的帮助下管理和协调控制整个Kafka集群。集群中的任意一台Broker都能充当Controller的角色,但是,在整个集群运行过程中,只能有一个Broker成为Controller。也就是说,每个正常运行的Kafka集群,在任何时刻都有且只有一个Controller。Co...

2021-12-07 14:51:48 350

原创 关于Kafka分区leader迁移的感想

kafka的Topic的Configs:leader.replication.throttled.replicas 与follower.replication.throttled.replicas不为空是什么原因造成的,应该如何进行解决?如果在zk中进行操作如何进行设置呢?1. 这个动态配置的意思是 leader副本和follower副本直接的限流关系 比如图片展示的这种 2. 出现这个配置一般原因是 你在

2021-12-07 14:50:03 643

原创 Gartner技术成熟曲线详解

今天发了一篇浅读Gartner关于新兴技术曲线中Data Fabric的解读(https://t.zsxq.com/rbeeq7m),有些同学在问如何看懂这个曲线图,跟大家解释下这个问题一、Gartner发布技术成熟曲线是什么?首先Gartner对于关注的行业,有着多种研究办法。其中,魔力象限和技术成熟曲线是其中两个非常重要的专有方法,也是业内最推崇的2个研究方法。而技术成熟曲线就是经常看到的”Hype.

2021-12-06 09:51:01 5901 1

原创 数据编织趋势探秘

今天跟大家聊聊数据编织(Data Fabric)的概念Gartner在2022年重要战略技术趋势中重点提到数据编织(Data Fabric)这个概念,本质上是在谈怎么实现“数据找人而不是人找数据”的愿景 为什么Data Fabric将会成为一种趋势,为什么越来越多的企业将在未来采用这样的方式进行部署?1、在传统IT时代,无论是早年的“数据仓库”还是近几年的“数据湖”和“大数据”时代,其实数据利用都是集中式..

2021-12-06 09:47:58 1772

原创 分区副本重分配、数据迁移、副本扩缩容

温馨提示: (如果觉得排版不是很方便看,可以点击下面链接访问 )【kafka运维】kafka-reassign-partitions.sh分区副本重分配、数据迁移、副本扩缩容1. 脚本的使用介绍>该脚本是kafka提供用来重新分配分区的脚本工具;1.1 生成推荐配置脚本关键参数--generate在进行分区副本重分配之前,最好是用下面方式获取一个合理的分配文件;.

2021-12-06 09:42:03 379

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除