关于Kafka配额的讨论(1)】的更多相关文章

继续前一篇的讨论.前文中提到了两大类配额管理:基于带宽的以及基于CPU线程使用时间的.本文着重探讨基于CPU线程时间的配额管理. 定义 这类配额管理被称为请求配额(request quota),管理起来非常简单,能够调节的参数只有一个:request_percentage.该参数是一个百分比.假设设置为20,则表示20%,即Kafka broker线程处理客户端请求时不会超过20%的线程时间.根据官网描述,它严格的定义为:该配额指定了一个客户端在单个配额时间窗口(quota.window.siz…
Kafka自0.9.0.0版本引入了配额管理(quota management),旨在broker端对clients发送请求进行限流(throttling).目前Kafka支持两大类配额管理: 网络带宽(network bandwidth)配额管理:定义带宽阈值来限制请求发送速率,阈值单位是字节/秒,即bytes/s.该功能是0.9.0.0版本引入的 CPU配额管理:定义CPU使用率阈值来限制请求发送速率,阈值以百分比的形式给出,如quota = 50表示50%的CPU使用率上限.该功能是0.1…
Kafka自0.9.0.0版本引入了配额管理(quota management),旨在broker端对clients发送请求进行限流(throttling).目前Kafka支持两大类配额管理: 网络带宽(network bandwidth)配额管理:定义带宽阈值来限制请求发送速率,阈值单位是字节/秒,即bytes/s.该功能是0.9.0.0版本引入的 CPU配额管理:定义CPU使用率阈值来限制请求发送速率,阈值以百分比的形式给出,如quota = 50表示50%的CPU使用率上限.该功能是0.1…
转载请注明地址http://www.cnblogs.com/dongxiao-yang/p/5217754.html Starting in 0.9, the Kafka cluster has the ability to enforce quotas on produce and fetch requests. Quotas are basically byte-rate thresholds defined per client-id. A client-id logically iden…
众所周知,__consumer__offsets是一个内部topic,对用户而言是透明的,除了它的数据文件以及偶尔在日志中出现这两点之外,用户一般是感觉不到这个topic的.不过我们的确知道它保存的是Kafka新版本consumer的位移信息.本文我们简单梳理一下这个内部topic(以1.0.0代码为分析对象) 一.何时被创建? 首先,我们先来看下 它是何时被创建的?__consumer_offsets创建的时机有很多种,主要包括: broker响应FindCoordinatorRequest请…
kafka支持配额管理,从而可以对Producer和Consumer的produce&fetch操作进行流量限制,防止个别业务压爆服务器.本文主要介绍如何使用kafka的配额管理功能. 1 Kafka Quatas简介 Kafka配额管理所能配置的对象(或者说粒度)有3种: user + clientiduserclientid这3种都是对接入的client的身份进行的认定方式.其中, clientid是每个接入kafka集群的client的一个身份标志,在ProduceRequest和Fetc…
Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转.传统的企业消息系统并不是非常适合大规模的数据处理.为了已在同时搞定在线…
胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache Kafka已经全面进化成一个流处理平台,但大多数的用户依然使用的是其核心功能:消息队列.对于如何有效地监控和调优Kafka是一个大话题,很多用户都有这样的困扰,今天我们就来讨论一下. 一.Kafka综述 在讨论具体的监控与调优之前,我想用一张PPT图来简单说明一下当前Kafka生态系统的各个组件.就像我前面所…
https://baijiahao.baidu.com/s?id=1610644333184173190&wfr=spider&for=pc DataPipeline |ApacheKafka实战作者胡夕:Apache Kafka监控与调优 DataPipeline 18-09-0412:13 胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache…
Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Receiver虽然使用比较方便,但是还是存在不少问题的,今天主要围绕kafka direct access讨论下,如果抛开Receiver来实现inputDStream该怎么做. KafkaRDD 我们知道,在Spark中,数据的访问主要是通过RDD来进行,而针对Kafka的数据,是使用了KafkaRDD.…
引用博客来自李志涛:https://www.cnblogs.com/lizherui/p/12275193.html 前言介绍 网络上针对脚本kafka-configs.sh用法,也有一些各种文章,但都不系统不全面,介绍的内容是有缺失的,总让人看起来很懂,用起来难,例如:动态配置内部关系不清晰.有些重点配置参数主从同步配额限流也没有解释清楚,除非去看代码.所以我希望读者通过深入阅读此文,更便捷利用此脚本解决实际运维和开发中遇到的问题,同时也为大家节省学习时间. 脚本语法解析 kafka-conf…
alpakka项目是一个基于akka-streams流处理编程工具的scala/java开源项目,通过提供connector连接各种数据源并在akka-streams里进行数据处理.alpakka-kafka就是alpakka项目里的kafka-connector.对于我们来说:可以用alpakka-kafka来对接kafka,使用kafka提供的功能.或者从另外一个角度讲:alpakka-kafka就是一个用akka-streams实现kafka功能的scala开发工具. alpakka-ka…
~~~这是一篇有点长的文章,希望不会令你昏昏欲睡~~~ 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度.后面我们会详细讨论两种机制的差异.不过首先先做一些基本的名词含义解析. 水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域(比如Apache Flink.Apache Spark…
关于Kafka日志留存(log retention)策略的介绍,网上已有很多文章.不过目前其策略已然发生了一些变化,故本文针对较新版本的Kafka做一次统一的讨论.如果没有显式说明,本文一律以Kafka 1.0.0作为分析对象. 所谓日志留存策略,就是Kafka保存topic数据的规则,我将按照以下几个方面分别介绍留存策略: 留存策略类型 留存机制及其工作原理 一.留存策略类型 目前,与日志留存方式相关的策略类型主要有两种:delete和compact.这两种留存方式的机制完全不同.本文主要讨论…
如果某个broker挂了,leader副本在该broker上的分区就要重新进行leader选举.来简要描述下leader选举的过程 1.4.1 KafkaController会监听ZooKeeper的/brokers/ids节点路径,一旦发现有broker挂了,执行下面的逻辑.这里暂时先不考虑KafkaController所在broker挂了的情况,KafkaController挂了,各个broker会重新leader选举出新的KafkaController 1.4.2 leader副本在该br…
所有的讨论都是基于KIP-291展开的.抱歉,这又是一篇没有图的文字. 目前Kafka broker对所有发过来的请求都是一视同仁的,不会区别对待.不管是用于生产消费的PRODUCE和FETCH请求,还是controller端发送的LeaderAndIsr/StopReplica/UpdateMetadata请求,亦或是其他类型的请求也是一样.通常我们这里把PRODUCE/FETCH请求称为数据类请求:把controller发送的那3种请求称为控制类请求或controller类请求——在源码中前…
本篇是<关于Kafka producer管理TCP连接的讨论>的续篇,主要讨论Kafka java consumer是如何管理TCP连接.实际上,这两篇大部分的内容是相同的,即consumer也是把TCP连接的管理交由底层的Selector类(org.apache.kafka.common.network)来维护.我们依然以“何时创建/创建多少/何时关闭/潜在问题/总结”的顺序来讨论.和上一篇一样,本文将无差别地混用名词TCP和Socket. 一.何时创建TCP连接 首先明确的是,在构建Kaf…
Apache Kafka是大量使用磁盘和页缓存(page cache)的,特别是对page cache的应用被视为是Kafka实现高吞吐量的重要因素之一.实际场景中用户调整page cache的手段并不太多,更多的还是通过管理好broker端的IO来间接影响page cache从而实现高吞吐量.我们今天就来讨论一下broker端的各种IO操作. 开始之前,还是简单介绍一下page cache:page cache是内核使用的最主要的磁盘缓存(disk cache)之一——实际上Linux中还有其…
之前写过一篇关于Kafka High watermark的文章,引起的讨论不少:有赞扬之声,但更多的是针对文中的内容被challenge,于是下定决心找个晚上熬夜再看了一遍,昨晚挑灯通读了一遍确实发现不少错误.鉴于此我决定再写一篇博客重新梳理一下最新版本中High watermark(下称HW)的工作原理,也算是纠正之前文章中的错误.这次我不打算说leader epoch,而只是专门讨论HW.log end offset(日志末端位移,下称LEO)的事情.希望我能把整个流程交代清楚.也许这篇文章…
Kafka在1.1.0版本引入了fetch session的概念,旨在降低“无效”FETCH请求对集群带宽资源的占用.故事的背景是这样的: 众所周知,Kafka的broker和consumer都会定期地向leader broker发送FETCH请求去获取数据.对于分区数很多的topic而言,待发送的FETCH请求就会很大,从而整体上增加网络带宽占用.即使这些分区没有任何新的数据到来,follower和consumer构造的FETCH请求都需要显式地罗列出每个订阅分区的详细数据,这包括:分区号.该…
转载自 huxihx,原文链接 关于Kafka监控方案的讨论 目前Kafka监控方案看似很多,然而并没有一个“大而全”的通用解决方案.各家框架也是各有千秋,以下是我了解到的一些内容: 一.Kafka manager Github地址: https://github.com/yahoo/kafka-manager. 这款监控框架的好处在于监控内容相对丰富,既能够实现broker级常见的JMX监控(比如出入站流量监控),也能对consumer消费进度进行监控(比如lag等).另外用户还能在页面上直接…
转载自 huxihx,原文链接 Kafka水位(high watermark)与leader epoch的讨论 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度.后面我们会详细讨论两种机制的差异.不过首先先做一些基本的名词含义解析. 水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域…
转载自 huxihx,原文链接 关于Kafka幂等producer的讨论 众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS).Kafka的EOS主要体现在3个方面: 幂等producer:保证发送单个分区的消息只会发送一次,不会出现重复消息 事务(transaction):保证原子性地写入到多个分区,即写入到多个分区的消息要么全部成功,要么全部回滚 流处理EOS:流处理本质上可看成是“读取-处理-写入”的管道.此EOS保…
众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS).Kafka的EOS主要体现在3个方面: 幂等producer:保证发送单个分区的消息只会发送一次,不会出现重复消息 事务(transaction):保证原子性地写入到多个分区,即写入到多个分区的消息要么全部成功,要么全部回滚 流处理EOS:流处理本质上可看成是“读取-处理-写入”的管道.此EOS保证整个过程的操作是原子性.注意,这只适用于Kafka Streams 上面…
写在前面的 最近看了Kafka Summit上的这个分享,觉得名字很霸气,标题直接沿用了.这个分享源于社区的KIP-500,大体的意思今后Apache Kafka不再需要ZooKeeper.整个分享大约40几分钟.完整看下来感觉干货很多,这里特意总结出来.如果你把这个分享看做是<三国志>的话,那么姑且就把我的这篇看做是裴松之注吧:) 客户端演进 首先,社区committer给出了Kafka Java客户端移除ZooKeeper依赖的演进过程.下面两张图总结了0.8.x版本和0.11.x版本(是…
目       录 1.      概述... 2 2.      原有结构(带kafka)... 2 3.      改造后的结构(去掉kafka)... 3 4.      对比... 4 1.   概述 我们主要面向钢铁行业工业互联网公有云和私有去建设,偏向PAAS层和SAAS层应用,框架是支撑这个体系建设.现在我们的公有云的IAAS资源层使用的是第三方云平台,现在有50个左右的站点,1个站点就是一个生产单位,1个站点每天传输到公有云平台的数据大概为300-500MB,1个站点的数据包括:…
之前在知乎上尝试过回答这个问题,后来问的人挺多,干脆在博客里面保存一下. 目前Kafka监控方案看似很多,然而并没有一个"大而全"的通用解决方案.各家框架也是各有千秋,以下是我了解到的一些内容: Kafka manager Github地址: https://github.com/yahoo/kafka-manager. 这款监控框架的好处在于监控内容相对丰富,既能够实现broker级常见的JMX监控(比如出入站流量监控),也能对consumer消费进度进行监控(比如lag等).另外用…
在Kafka中,TCP连接的管理交由底层的Selector类(org.apache.kafka.common.network)来维护.Selector类定义了很多数据结构,其中最核心的当属java.nio.channels.Selector实例,故所有的IO事件实际上是使用Java的Selector来完成的.本文我们探讨一下producer与Kafka集群进行交互时TCP连接的管理与维护. 一.何时创建TCP连接 Producer端在创建KafkaProducer实例时就会创建与broker的T…
Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 (at least once): 消息不会丢失,但有可能被重复发送. 精确一次 (exactly once): 消息不会丢失,也不会被重复发送. 默认情况下社区维护的 python-kafka 包会使用 ack1 但是 retry 0 的设置,也就是说 python-kafka 不会对发送失败的消息进…
下面是博主的公众号,后续会发布和讨论一系列分布式消息队列相关的内容,欢迎关注. --------------------------------------------------------------------------------------------------------- Design 1. Motivation 我们设计Kafka用来作为统一的平台来处理大公司可能拥有的所有实时数据源.为了做到这点,我们必须思考大量的使用场景. 它必须有高吞吐去支持大数据流,例如实时日志聚合.…