#kafka为什么有高吞吐量

1 由于接收数据时可以设置request.required.acks参数,一般设定为1或者0,即生产者发送消息0代表不关心kafka是否接收成功,也就是关闭ack;1代表kafka端leader角色的patation(多个patation,并且每个会有多个副本)接收到数据则返回成功不管副本patation的状态。

2 由于消费者的消费情况不归kafka消息管理引擎维护,而是放在消费者组端(***同一消费者组不会消费相同数据)。这样也能减少kafka的核心消息引擎能够减少工作只负责输出数据,pull工作模式的好处是可以根据消费者的能力拉取数据,但是消费端获取数据实质是准实时的;

以上两点可以保证kafka具有较强的吞吐量,消息中心也只负责输入和输出,并不关心多余的操作

===

#min.insync.replicas 这个参数设定patation中的最少副本数是多少,默认值为1 ;

===

#废弃了replica.lag.max.messages参数(0.9及以后):

该参数为follower是否生效的判断,而在实际的生产中很难确定这个值,由于吞吐量在不同时间点可能数量级不同,导致follower拉取leader数据很难跟上节奏,这样就会在ISR队列中不断的加入移除这个follower。

****

那么有什么可能的原因会使得follower副本与leader副本不同步呢?归纳起来有三种原因:

  • 速度跟不上——follower副本在一段时间内都没法追上leader副本的消息写入速度,比如follower副本所在broker的网络IO开销过大导致备份消息的速度慢于从leader处获取消息的速度
  • 进程卡住了——follower副本在一段时间内根本就没有向leader副本发起FetchRequest请求(该请求就是获取消息数据),比如太过频繁的GC或其他失败导致
  • 新创建的——如果用户增加了备份因子,很显然新follower副本在启动过程初始肯定是全力追赶leader副本,因而与其是不同步的

replica.lag.max.messags参数就是用于检测第一种情况的。当然Kafka还提供了一个参数 replica.lag.time.max.ms来检测另外两种情况。比如如果设置 replica.lag.time.max.ms=500ms,只要follower副本每隔500ms都能发送FetchRequest请求给leader,那么该副本就不会被标记成dead从而被踢出ISR。

===

#“消费数据”策略和“生产数据”策略

consumer消费partation中的数据只能保证partation内数据的顺序,而不能保证partation间的顺序;

product可以通过rank策略或者hash策略(默认)来把数据具体分发到某个partation中;

一个partation的数据被消费时只能流向1个consumer,partation内部数据是1个单元。

kafka原理分析的更多相关文章

  1. Kafka原理分析之基础篇

    原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/14728638.html 一.Kafka二.解决问题异步处理应用解耦流量削峰三.特性读写效率网络传输并发能 ...

  2. kafka知识体系-kafka设计和原理分析

    kafka设计和原理分析 kafka在1.0版本以前,官方主要定义为分布式多分区多副本的消息队列,而1.0后定义为分布式流处理平台,就是说处理传递消息外,kafka还能进行流式计算,类似Strom和S ...

  3. 消息队列——Kafka基本使用及原理分析

    文章目录 一.什么是Kafka 二.Kafka的基本使用 1. 单机环境搭建及命令行的基本使用 2. 集群搭建 3. Java API的基本使用 三.Kafka原理浅析 1. topic和partit ...

  4. kafka原理和实践(一)原理:10分钟入门

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  5. kafka原理和实践(六)总结升华

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  6. kafka原理简介并且与RabbitMQ的选择

    kafka原理简介并且与RabbitMQ的选择 kafka原理简介,rabbitMQ介绍,大致说一下区别 Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和 ...

  7. kafka原理和实践(三)spring-kafka生产者源码

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  8. kafka原理和实践(四)spring-kafka消费者源码

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  9. Hadoop生态圈-Zookeeper的工作原理分析

    Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...

随机推荐

  1. SQL题(子文章)(持续更新)

    -----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...

  2. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  3. IPV4 VS IPV6 谈谈省级ipv6的必要性

    11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...

  4. simplec与simple【转载】

    转载自:http://blog.163.com/wu_yangfeng/blog/static/161897379201041581144971/ 在FLUENT中,可以使用标准SIMPLE算法和SI ...

  5. SyntaxError: Non-ASCII character 'æ' in file csdn.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    错误信息: SyntaxError: Non-ASCII character , but no encoding declared; see http://python.org/dev/peps/pe ...

  6. expdp导出卡住问题诊断

    本文链接:https://blog.csdn.net/guogang83/article/details/78800487 [oracle@database ~]$nohup expdp gg/gg ...

  7. 安装adbyby

    搞得那么麻烦干什么,助人就要直接点嘛请用 Xshell 连接你的路由 1.安装curlopkg update && opkg install curl 2.创建相关文件夹(如已经安装a ...

  8. 树莓派 pip 手动安装 和使用阿里云源

    在 /etc/pip.conf 添加如下内容,启用源 [global] extra-index-url=https://www.piwheels.org/simple 下载后 pip install ...

  9. git 删除远程和本地分支

    RenGuoQiang@PC-RENGUOQIANG MINGW64 /d/zgg/zgg-crm (dev-rgq-userworkstatus) $ git push origin --delet ...

  10. git之删除untrack files

    退回版本 git reset --hard commit_id //不保留未提交的修改 git reset --soft commit_id //默认方式,保留未提交的修改 撤除本地没有提交的修改 g ...