![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息中心组件 - kafka
文章平均质量分 93
消息中心组件 - kafka
文晓武
专注搜索推荐问答推荐工程领域,涉及到的技术有:Java、ElasticSearch、SpringBoot、SpringCloud、Dubbo、Linux、Docker、Sql、Kafka、RabbitMQ、RocketMQ、MyBatis、XXl-Job、Zookeeper、Nginx、Redis、Tomcat、Git、SVN、Maven、K8S等,每周不定期更新精华文章!
展开
-
Kafka体系架构详细分解
Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群。在 Kafka 中还有两个特别重要的概念—主题(Topic)与分区(Partition)。Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到 Kafka 集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partit转载 2022-06-13 17:34:30 · 2216 阅读 · 0 评论 -
Kafka经典100问
全面介绍Kafka基础理论、用法、基础原理、架构设计以及集群部署方案。原创 2022-03-18 13:26:17 · 551 阅读 · 0 评论 -
一文理解如何解决Kafka消息积压问题
通常情况下,企业中会采取轮询或者随机的方式,通过Kafka的producer向Kafka集群生产数据,来尽可能保证Kafk分区之间的数据是均匀分布的。如果对Kafka不了解的话,可以先看这篇博客《一文快速了解Kafka》。消息积压的解决方法加强监控报警以及完善重新拉起任务机制,这里就不赘述了。1.实时/消费任务挂掉导致的消费积压的解决方法在积压数据不多和影响较小的情况下,重新启动消费任务,排查宕机原因。如果消费任务宕机时间过长导致积压数据量很大,除了重新启动消费任务、排查问题原因,还转载 2022-03-18 12:33:29 · 5680 阅读 · 0 评论 -
Zookeeper 在 Kafka 中的作用
leader 选举 和 follower 信息同步如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。黄色的分区为 leader,白色的为 follower。leader 处理 partition 的所有读写请求,与此同时,f转载 2022-03-18 07:12:34 · 2613 阅读 · 0 评论 -
kafka消费者与 topic 的分区分配策略有哪些?
1.RangeAssignor 分配策略该分配策略是按照消费者总数和分区总数进行整除运算来获得一个跨度,然后分区按照跨度来进行平均分配,尽可能保证分区均匀的分配给所有的消费者。对于每个 topic,该策略会讲消费者组内所有订阅这个主题的消费者按照名称的字典顺序排序,然后为每个消费者划分固定过的区域,如果不够平均分配,那么字典排序考前的就会多分配一个分区。比如 2 个消费者属于一个消费者组,有 2 个 topic t1,t2,每个 topic 都有 3 个分区,p1,p2,p3,那么分配的情况..转载 2022-03-17 23:32:06 · 737 阅读 · 0 评论 -
Kafka 原理以及分区分配策略剖析
一、简介Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列【Message Queue】)。流处理平台有以下3个特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式记录产生时就进行处理。 1.1 消息队列的两种模式1.1.1 点对点模式生产者将消息发送到queue中,然后消费者从queue中取出并且消费消息。消息被消费以后,queue中不再存储.转载 2022-03-05 23:15:38 · 1792 阅读 · 0 评论 -
真的,搞懂 Kafka 看这一篇就够了
大家好,我是云祁。有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。发展到现在,Apache Kafka 无疑是很成功的,Confluent 公司曾表示世界五百强中有三分之一的企业在使用 Kafka。今天便和大家分享一下 Kafka 相关知识点,高性能、持久化、多副本备份、横向扩展......万字长文,做好准备,建议先收藏再看!1、为什么有消息系统1. 解耦合2. 异步处理 例如电商平台,秒杀活动。一般流程会分为:1:风险控制、2:库存锁定、3:生成订单、4:短信通知、5:.转载 2022-03-05 18:42:46 · 3906 阅读 · 1 评论 -
Kafka如何基于Reactor设计模式高并发处理请求? (深度好文)
阅读本文大约需要 30 分钟。开篇三问:Kafka Broker 端网络架构和请求处理到底是使用了哪些高大上的技术?它到底解决了什么问题?究竟是怎么解决的?只有了解了这些, 我们才能深刻掌握 Kafka 服务端设计精髓所在,更加深刻理解一个高并发、高性能服务端架构该如何设计。相信使用过 Kafka 的朋友都知道其吞吐量可以高达百万,但很少人理解其中的设计原理。认真读完这篇文章,你会对Kafka Broker请求处理流程和网络架构设计实现细节,有更加深刻的理解。这篇文章干货很多,希望大家..转载 2022-03-05 17:51:29 · 1029 阅读 · 0 评论 -
Kafka如何通过层级时间轮实现延时消息队列?
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 时等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka 没有使用 JDK 自带的 Timer 和 DelayQueue 实现。因为时间复杂度上这两者插入和删除操作都是 O(logn),不能满足 Kafka 的高性能要求。冷知识:JDK Timer 和 DelayQueue 底层都是个优先队列,即采用了 minHeap 的数据结构,最快需转载 2022-03-05 15:20:37 · 4309 阅读 · 2 评论 -
Kafka集群新增节点后数据如何重分配
此重分配是采用往指定节点上添加分区,均分压力的方案执行的,该方案的详细说明请参考连接:避坑指南:Kafka集群快速扩容的方案总结_Java理论与实践-CSDN博客新增节点的步骤将其他节点的server.properties配置文件拷贝后修改以下参数broker.idlog.dirszookeeper.connect数据迁移原理 只有新增的Topic才会将数据分布在新节点上,如果要将现有数据也分配到新节点,需要将Topic中的数据迁移到新节点上。 数据迁移过程是手动启动转载 2022-03-05 14:52:43 · 1309 阅读 · 0 评论 -
避坑指南:Kafka集群快速扩容的方案总结
导语熟悉Apache Kafka的同学都知道,当Kafka集群负载到达瓶颈或者出现突发流量需要紧急扩容时,新加入集群的节点需要经过数据迁移才能均分集群压力。而数据迁移会因为数据堆积量,节点负载等因素的影响,导致迁移时间较长,甚至出现迁移不动的情况。同时数据迁移也会增大当前节点的压力,可能导致集群进一步崩溃。本文将探讨应对需要紧急扩容的技术方案。什么是数据迁移Apache Kafka 对于数据迁移的官方说法是分区重分配。即重新分配分区在集群的分布情况。官方提供了kafka-reassign-par转载 2022-03-05 14:38:15 · 1683 阅读 · 0 评论 -
Kafka 基本原理
简介Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。Kafka架构它的架构包括以下组件 话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。 生产者(Producer):是能够发布消息到话题的任何对象。 服务代理(Broker):已发布的消息保存转载 2022-03-02 22:54:13 · 1580 阅读 · 0 评论 -
刨根问底,Kafka消息中间件到底会不会丢消息
大型互联网公司一般都会要求消息传递最大限度的不丢失,比如用户服务给代金券服务发送一个消息,如果消息丢失会造成用户未收到应得的代金券,最终用户会投诉。为避免上面类似情况的发生,除了做好补偿措施,更应该在系设计的时候充分考虑各种异常,设计一个稳定、高可用的消息系统。认识 Kafka看一下维基百科的定义Kafka 是分布式发布-订阅消息系统。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。Kafka是一个分布式的、可划分的、冗余备份的持久性的日志服务。它主要用于处理活跃转载 2022-03-02 22:35:24 · 186 阅读 · 0 评论 -
Kafka 如何解决消息不丢失?
Kafka 消息框架,大家一定不陌生,很多人工作中都有接触。它的核心思路,通过一个高性能的MQ服务来连接生产和消费两个系统,达到系统间的解耦,有很强的扩展性。你可能会有疑问,如果中间某一个环节断掉了,那怎么办?这种情况,我们称之为消息丢失,会造成系统间的数据不一致。那如何解决这个问题?需要从生产端、MQ服务端、消费端,三个维度来处理1、生产端生产端的职责就是,确保生产的消息能到达MQ服务端,这里我们需要有一个响应来判断本次的操作是否成功。Future<RecordMe转载 2022-03-02 22:39:00 · 202 阅读 · 0 评论 -
梳理消息队列 MQ/JMS/Kafka
是不是平常听到说消息队列啊,JMS啊,MQ啊 、kafka啊巴啦啦的一堆术语,听不懂?关系混乱?今天就让我们来一起来看看他们都是什么吧。1消息队列介绍首先举个收快递的栗子,传统的收快递,快递小哥把我们的快递送到我们的手里。他需要什么条件嗯? 快递小哥有时间送, 我们有时间取, 快递小哥和我们约定一个时间地点。 但是嗯。快递小哥有那么多的快递需要送,可能送我快递的时候,我不在家,可能我在家的时候,快递小哥送其他的地方的快递。所以嗯,这个时候,要么就是坐在家里等快递,要么就转载 2022-03-02 23:09:35 · 224 阅读 · 0 评论 -
图解 Kafka 中值得学习的优秀设计
前言应大部分的小伙伴的要求,在Yarn之前先来一个kafka的小插曲,轻松愉快。一、Kafka基础消息系统的作用应该大部份小伙伴都清楚,用机油装箱举个例子所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。引入一个场景,我们知道中国移动,中国联通,中国电信的日志处理,是交给外包去做大数据分析的,假设现在它们的日志都交给了你做的系统去做用户画像分析。按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的.转载 2022-03-02 23:33:04 · 172 阅读 · 0 评论 -
Kafka原理篇:图解kakfa架构原理
今天我们来深入讲解 Kafka 的架构和实现原理。[码哥]将从架构和细节入手,以生动的图深入讲解 Kafka 的实现原理。我想很多同学之前可能已经看过很多 Kafka 原理相关的文章,但往往看时"牛逼"声连连,激情满满,总觉得自己又学习到了各种“吊炸天”的技术。但很多同学往往是不觉明厉,把文章结合面试题背一背还能应付一下半吊子面试官。可以遇到老司机面试官,或是进入实战,却对很多概念和实现摸棱两可。所以,[码哥]决定图解 Kakfa,却让很多半懂不懂的同学可以加深对 Kafka 实现原理的理解。同转载 2022-03-03 19:25:49 · 151 阅读 · 0 评论 -
Kafka 面试大全(37 张图,28 个知识点)
周末用了整整两天时间,整理了一下Kafka面试的连环问题,保证你看完后,对 Kafka 有了更深层次的了解。全文总结的Kafka题目之间的 关联性 很强,本文将通过问答 + 图解的形式 由浅入深 帮助大家进一步学习和理解 Kafka 分布式流式处理平台。全文总计1.2 万字、28 个知识点。35 张原理、流程图。提纲如下:此文已经制作成带目录的 PDF,获取本文PDF 版本,请扫下方二维码加我微信,备注:Kafka正文⭐ 1、 什么是 kafka ?...转载 2022-03-03 19:28:30 · 480 阅读 · 2 评论 -
Kafka节点万兆网卡打满,揭晓集群安然无恙的秘诀
想必大家都看过笔者Kafka集群故障的排查经验,并通过优化参数使得Kafka集群应对洪峰流量的能力提升N倍,网卡流量几乎打满,集群写入稳如泰山,无独有偶,菜鸟的一个故障导致集群单个topic从5W/tps直接飙升到50W/tps,但集群稳如狗,相当于做了一次“突然的压测”,让我们一起回顾一下这次惊心动魄的过程吧。在进入本文的探讨之前,强烈推荐一下笔者最近的得意之作:Kafka集群中大部分消费组无端被重置到最新位点开始消费的故障排查经验: 双十一期间Kafka以这种方式丢消息让我猝不及防转载 2022-03-03 19:46:46 · 162 阅读 · 0 评论 -
讲讲kafka的多线程顺序消费
Kafka是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。kafka如何保证消息不丢失、顺序消费、重复消费?这三个问题熟不熟悉?是不是在面试的时候经常被问到,在日常工作中也经常碰到?保证消息不丢失与重复消费其实操作上还是比较简单的。是一些常规的八股文,本文不展开讨论,感兴趣的同学可以给我留言,我单独出一期讲解。本文将着重与大家讨论Kafka在consumer是单线程与多线程情况下如何保证顺序消费。转载 2022-03-03 20:10:08 · 5258 阅读 · 2 评论 -
Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过。 没有对自己的架构问过为什么的人,一定是平时没有转载 2022-03-03 20:20:41 · 263 阅读 · 0 评论 -
Kafka为何要在2.8版本后放弃Zookeeper
最近,confluent社区发表了一篇文章,主要讲述了Kafka未来的2.8版本将要放弃Zookeeper,这对于Kafka用户来说,是一个重要的改进。之前部署Kafka就必须得部署Zookeeper,而之后就只要单独部署Kafka就行了。[1]1.Kafka简介Apache Kafka最早是由Linkedin公司开发,后来捐献给了Apack基金会。Kafka被官方定义为分布式流式处理平台,因为具备高吞吐、可持久化、可水平扩展等特性而被广泛使用。目前Kafka具体如下功能: 消息队列,Ka转载 2022-03-03 22:43:15 · 616 阅读 · 0 评论 -
从一个消费慢的例子深入理解 kafka rebalance
前 言消息队列是服务端必不可少的组件,其中Kafka可以说是数一数二的选择,对于大部分服务端的同学来说Kafka也是最熟悉的消息中间件之一。而当我们在生产上遇到kafka的使用问题时想要透过现象看到问题的本质,从而找到解决问题的办法。这就要求对kafka的设计和实现有这较为深刻的认识。在这篇文章里我们就以生产实际的例子来展开讨论Kafka在消费端中的一个重要设计consumer group的rebalance。只有理解了rebalance我们才能对消息消费过程有着更全面的掌握。某一天我们收到转载 2022-03-03 23:13:07 · 700 阅读 · 0 评论 -
搞透Kafka的存储架构(深度好文)
阅读本文大约需要30分钟。这篇文章干货很多,希望你可以耐心读完。 大家好, 我是大彬,今天给大家推荐华哥的一篇文章,非常值得学习 从这篇文章开始,我将对Kafka 专项知识进行深度剖析,今天我就来聊聊 kafka 的存储系统架构设计, 说到存储系统,大家可能对 MySQL 比较熟悉,也知道 MySQL 是基于 B+ tree 来作为它的索引数据结构。 Kafka 又是基于什么机制来存储?为什么要设计成这样?它解决了什么问题?又是如何解决的...转载 2022-03-04 00:08:13 · 345 阅读 · 0 评论 -
kafka是如何通过offset定位一条消息的?
1. Kafka文件结构 Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己的 offset(偏移量)。消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出...转载 2022-03-04 17:29:48 · 1185 阅读 · 1 评论 -
实战经验:我用kafka两年踩过的一些非比寻常的坑
前言我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑。为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理。我当时在后厨显示系统团队,该系统属于订单的下游业务。用户点完菜下单后,订单系统会通过发kafka消息给我们系统,系统读取消息后,做业务逻辑处理,持久化订单和菜品数据,然后展示到划菜客户端。这样厨师就知道哪个订单要做哪些菜,有些菜做好了,就可以通过该系统出菜。系统自动通知服务员上菜,如果服务员上完菜,修改菜品上菜状态,用户就知道哪些菜已经转载 2022-03-04 20:56:04 · 325 阅读 · 0 评论 -
Kafka 架构设计
这篇文章将带着大家参透:到底什么是 Kafka 架构设计的任督二脉?把握住了这个关键点,我相信你将能更好地理解 Kafka 的架构设计,进而顺藤摸瓜地掌握 Kafka 的核心技术方案。废话不多说了,开始发车。1. Kafka 的技术难点究竟在哪?前一篇文章《扒开 Kafka 的神秘面纱》 交代了两个关键信息:1、Kafka 为实时日志流而生,要处理的并发和数据量非常大。可见,Kafka 本身就是一个高并发系统,它必然会遇到高并发场景下典型的三高挑战:高性能、高可用和高扩展。2、...转载 2022-03-04 22:42:53 · 213 阅读 · 0 评论 -
循序渐进教你如何制定Kafka生产级容量评估方案
本篇是 Kafka 系列文章的第三篇,本篇章会通过场景驱动的方式来深度剖析Kafka 生产级容量评估方案如何分析,申请和实施。相关系列文章: Kafka基础入门篇 kafka三高架构设计剖析 1. kafka容量评估需求场景分析1.1 集群如何每天hold住10亿+请求 拿电商平台为例, kafka 集群每天需要承载10亿+请求流量数据,一天24小时,对于平台来说,晚上12点到凌晨8点这8个小时几乎没多少数据涌入的。这里我们使用「二八法则」来进行预估...转载 2022-03-04 22:57:35 · 704 阅读 · 1 评论 -
Kafka核心知识总结(全文三万字)
前言文章已经同步到个人网站:http://xiaoflyfish.cn/「文章较长,可以点赞在看,谢谢,谢谢」觉得不错,可以关注一下「公众号(月伴飞鱼)」,之后会不定期分享系列文章基本简介Apache Kafka是由LinkedIn采用Scala和Java开发的开源流处理软件平台,并捐赠给了Apache Software Foundation。该项目旨在提供统一的、高吞吐量、低延迟的平台来处理实时数据流。Kafka可以通过Kafka Connect连接到外部系统,并提供了Ka转载 2022-03-04 23:01:19 · 510 阅读 · 0 评论 -
kafka源码结构总结
阅读本文大约需要 20 分钟。大家好,我是 苏三, 又跟大家见面了。从今天开始我将为大家奉上 Kafka 源码剖析系列文章,正式开启「Kafka的源码之旅」,跟我一起来掌握 Kafka 源码核心架构设计思想吧。今天这篇我们先来聊聊 Kafka 源码环境搭建、源码全景图以及后续源码剖析之旅路线,带你梳理整体的源码分析脉络。认真读完这篇文章,并准备一台电脑跟我一起操作,我相信你会对 Kafka 源码环境搭建以及全景图剖析以及源码剖析整体路线,有更加深刻的理解。这篇文章干货很多,希望你可..转载 2022-03-04 23:07:16 · 663 阅读 · 0 评论 -
《我想进大厂》之kafka夺命连环11问
1. 说说你对kafka的理解kafka是一个流式数据处理平台,他具有消息系统的能力,也有实时流式数据处理分析能力,只是我们更多的偏向于把他当做消息队列系统来使用。如果说按照容易理解来分层的话,大致可以分为3层:第一层是Zookeeper,相当于注册中心,他负责kafka集群元数据的管理,以及集群的协调工作,在每个kafka服务器启动的时候去连接到Zookeeper,把自己注册到Zookeeper当中第二层里是kafka的核心层,这里就会包含很多kafka的基本概念在内:record:代转载 2022-03-05 00:14:53 · 126 阅读 · 0 评论 -
Kafka 精妙的高性能设计(上篇)
Kafka的高性能设计可以说是全方位的,从Prodcuer、到 Broker、再到 Consumer,Kafka 在掏空心思地优化每一个细节,最终才做到了这样的极致性能。这篇文章我想先带大家建立一个高性能设计的思维模式,然后再一探究竟 Kafka 的高性能设计方案,最终让大家更体系地掌握所有知识点,并理解它的设计哲学。1. 如何理解高性能设计?我们暂且把 Kafka 抛在一边,先尝试理解下高性能设计的本质。有过高并发开发经验的同学,对于线程池、多级缓存、IO 多路复用、零拷贝等技...转载 2022-03-05 10:27:19 · 263 阅读 · 0 评论 -
Kafka 精妙的高性能设计(下篇)
在上一篇文章中,指出了高性能设计的两个关键维度:计算和 IO,可以将它们理解成「道」。同时给出了Kafka高性能设计的全景图,可以理解成「术」。图 1:Kafka 高性能设计的全景图这篇文章将继续对存储消息和消费消息的8 条高性能设计手段,逐个展开分析,废话不多说,开始发车。1. 存储消息的性能优化手段存储消息属于 Broker 端的核心功能,下面是它所采用的 4 条优化手段。1、IO 多路复用对于 Kafka Broker 来说,要做到高性能,首先要考虑的是...转载 2022-03-05 10:37:28 · 330 阅读 · 0 评论