一、本文要讲

  • 如何结合业务敲定kafka的机器分配数目!

  • 消费者分区分配策略

  • 副本分配到broker上的算法:

二、正文

1:如何结合业务敲定kafka的机器分配数目!

原则一:需要遵循的前提是,单数原则,就是zookeeper和broker的节点数目最好是单数,用于多数服从选举!

原则二:公约数原则!

什么叫公约数原则?

假设topic的分片副本指定为:10shard*3rep。怎么来确定机器的数目?设当机器数目为m每台机器的磁盘占据 = 30/m  ,如果除不尽的话,多分配的节点会多1/10数据量每台机器的流量占据 = 10/m ,如果除不尽的话,多分配的节点会多1/10流量所以最好的机器数目最好是是能被分片数和整体节点数整除的,这样就不会有多分配的节点出现综上所述,那么就是10和30的公约数或公倍数!

理想情况下,机器的数目m= n * 30

节省机器情况,机器的数目m= 1/n *30 && 1/n *10

注意,不整除的话单topic的分布会出现不均衡的情况

2: 消费者分区分配策略

分区分配给消费者有三个策略,默认是第一个。

RangeAssignor策略:

假设n=分区数/消费者数量,m=分区数%消费者数量,那么前m个消费者每个分配n+1个分区,后面的(消费者数量-m)个消费者每个分配n个分区。

备注,针对于单个topic分区的分配,如果一个consumer同时订阅了多个topic,那么对于多个topic而言,某个consumer可能分配到的总分区数目会不平衡(超过1),所以可以使用RoundRobinAssignor策略。

RoundRobinAssignor策略

将消费组内订阅的所有Topic的分区及所有消费者进行排序后尽量均衡的分配(RangeAssignor是针对单个Topic的分区进行排序分配的)@hxx 就是将所有topic的分区放在一起来range,但是当有consumer下线也是会出现负载不均衡的!

StickyAssignor策略

第一次分配的时候遵循roundrobin策略,当有consumer变动时,以最小改动作为分配基准,仅仅对下线的consumer分配的分区重新排序进行roundrobin分配。

备注,roundrobin策略当有consumer变动的时候,再把所有的分区排序然后重新分配,这个过程会导致某个分区以前已经分配给某个还在线的consumer,现在会重新分给另一个consumer,但是stick不会!

看图

3:副本分配到broker上的算法

假设topic的分片副本指定为:10shard*3rep。

从partition=0开始分配,将partition=0分配到随机的broker id上作为此partition的leader,比如是id=4,

然后分配partition=1,分配到id=5,递增循环,将所有的partition都分配一遍,leader分配结束。然后是副本,如果有2副本,则将partition=0分配到id=5,id=6的节点上,将partition=1分配到id=6,id=7的节点上。

总结

了解了kafka的分配策略,在日后的集群扩容或者负载均衡方面会有更多的知识储备。

动态分区分配的“首次适应算法_kafka集群关于资源分配的手册相关推荐

  1. 动态分区分配的“首次适应算法_动态图划分复制算法:Leopard

    数据管理和系统实现课程上要分享的论文:<LEOPARD: Lightweight Edge-Oriented Partitioning and Replication for Dynamic G ...

  2. 动态分区分配的“首次适应算法_无人机集群——航迹规划你不知道的各种算法优缺点...

    我们都知道无人机(UAV )因具有可探测性低.造价低廉.不惧伤亡.起降简单.操作灵活.系统配置多样化.自动控制智能化等特点,因而在未来一体化联合作战中扮演越来越重要的角色.然而早期的无人机都是按照地面 ...

  3. 3.1.5 操作系统之动态分区分配的四种算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)

    文章目录 0.思维导图 1.首次适应算法 2.最佳适应算法 3.最坏(大)适应算法 4.临近适应算法 5.四种算法归纳比较 0.思维导图 本篇文章是对上一篇文章内存的分配与回收提到的动态分区分配算法的 ...

  4. 内存分配之动态分区分配的三种算法

    原文链接https://blog.csdn.net/u011070169/article/details/53177987?locationNum=5&fps=1 关于首次适应算法.最佳适应算 ...

  5. (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)

    文章目录 一:首次适应算法(First Fit) 二:最佳适应算法(Best Fit) 三:最坏适应算法(Worst Fit) 四:邻近适应算法(Next Fit) 总结 动态分区分配算法:用于研究当 ...

  6. 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】

    学习地址(哔哩哔哩网站--王道论坛):https://www.bilibili.com/video/BV1YE411D7nH?p=37 目录 1.首次适应算法(First Fit) 2.最佳适应算法( ...

  7. 连续分配管理方式的动态分区分配算法(首次适应、最佳适应、最坏适应、邻接适应算法)

    一.动态分区分配算法(连续分配管理方式) 动态分区分配算法:在动态分区分配方式中, 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配? (一)首次适应算法 算法思想:每次都从低地址开始查找,找 ...

  8. 【操作系统】-- 动态分区分配算法(首次适应算法FF、最佳适应算法BF、最坏适应算法WF、循环首次适应算法NF)

    一.首次适应算法 1.算法思想 每次从低地址开始查找,找到第一个能满足大小的空闲分区. 2.如何实现 空闲分区以地址递增的次序排列,每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区 ...

  9. JS实现动态分区分配中的首次适应算法和最佳适应算法

    实验目的 了解动态分区分配方式中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解. 实验内容 (1) 用C语言(不会C这里就用JS实现)分别实现采用首次适应算法和最佳适应 ...

最新文章

  1. 解禁 115 天,中兴事件的“反思”中藏着什么?
  2. 数据源架构模式之表数据入口
  3. python之父-Python之父宣布退休,但Python仍在吞噬世界
  4. itextpdf api帮助文档_我开源了一个小工具,可以帮你轻松生成 SpringBoot API 文档...
  5. verilog 除法器
  6. 小白学python需要多久_小白学Python | 你还在说你入不了门吗
  7. 记一次,jvm 内存溢出
  8. 基于android的交流平台,基于Android的移动学习交流平台的设计与实现
  9. cesium three性能比较_硬金和千足金都是黄金,哪个比较好?为什么80%人都说硬金不好?...
  10. 使用eclipse调试hive mapreduce
  11. 阿里第九版Java系统架构师+应用架构师面试突击宝典
  12. 数据库实验一——数据库定义与操作语言实验
  13. linux系统 如何选择题,Linux考证试题选择题
  14. 虚拟机无法上网解决办法
  15. 12306html布局,12306-Assistant
  16. Bzoj3236:[Ahoi2013]作业:莫队算法+树状数组
  17. html上下箭头动态效果,使用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果...
  18. Okra框架(一) 简介
  19. 详解adb shell 常用命令
  20. 2023年如何做谷歌SEO优化?谷歌优化排名怎么做?

热门文章

  1. 第三次学JAVA再学不好就吃翔(part70)--BigInteger类
  2. Python地理可视化工具包 folium介绍
  3. java 文本编辑器 源码_java文本编辑器源码
  4. SAP Commerce Cloud OCC User Role
  5. Angular应用内路由(In App Route)的最佳实践
  6. where is ConstraintViolationException raised
  7. 阮一峰react demo代码研究的学习笔记 - how is source code converted
  8. SAP UI5 this.oModel.createBindingContext will trigger odata request
  9. SAP OData etag flag setting in metadata MPC_EXT
  10. use SAP web IDE to commit change to git