分区器

分区器是生产者层面的负载均衡。Kafka 生产者生产消息时,根据分区器将消息投递到指定的分区中,所以 Kafka 的负载均衡很大程度上依赖于分区器

Kafka 默认的分区器是 Kafka 提供的 DefaultPartitioner。它的分区策略是根据 Key 值进行分区分配的:

如果 key 不为 null:对 Key 值进行 Hash 计算,从所有分区中根据 Key 的 Hash 值计算出一个分区号;拥有相同 Key 值的消息被写入同一个分区;如果 key 为 null:消息将以轮询的方式,在所有可用分区中分别写入消息。如果不想使用 Kafka 默认的分区器,用户可以实现 Partitioner 接口,自行实现分区方法。

注:
在笔者的理解中,分区器的负载均衡与顺序性有着一定程度上的矛盾。

负载均衡的目的是将消息尽可能平均分配,对于 Kafka 而言,就是尽可能将消息平均分配给所有分区;

如果使用 Kafka 保证顺序性,则需要利用到 Kafka 的分区顺序性的特性。对于需要保证顺序性的场景,通常会利用 Key 值实现分区顺序性,那么所有 Key 值相同的消息就会进入同一个分区。这样的情况下,对于大量拥有相同 Key 值的消息,会涌入同一个分区,导致一个分区消息过多,其他分区没有消息的情况,即与负载均衡的思想相悖。

并非分区数量越多,效率越高:
Topic 每个 partition 在 Kafka 路径下都有一个自己的目录,该目录下有两个主要的文件:base_offset.logbase_offset.index。Kafka 服务端的 ReplicaManager 会为每个 Broker 节点保存每个分区的这两个文件的文件句柄。所以如果分区过多,ReplicaManager 需要保持打开状态的文件句柄数也就会很多。

每个 Producer, Consumer 进程都会为分区缓存消息,如果分区过多,缓存的消息越多,占用的内存就越大;

n 个分区有 1 个 Leader,(n-1) 个 Follower,如果运行过程中 Leader 挂了,则会从剩余 (n-1) 个 Followers 中选举新 Leader;如果有成千上万个分区,那么需要很长时间的选举,消耗较大的性能。

再均衡

再均衡是消费者层面的负载均衡

Kafka负载均衡策略相关推荐

  1. 负载均衡策略深入剖析

    在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机.而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台处理服务请求较少的服 ...

  2. Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1.什么是Nginx,谈谈个人都理解,项目中是否用到,为什 ...

  3. nginx 反向代理和负载均衡策略实战案例

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:glmapper https://juejin.im/pos ...

  4. 网易MySQL中间件的负载均衡策略及性能优化

    来自:DBAplus社群 团队介绍 网易乐得DBA组,负责网易乐得电商.网易邮箱.网易技术部数据库日常运维,负责数据库私有云平台的开发和维护,负责数据库及数据库中间件Cetus的开发和测试等等. 一. ...

  5. 负载均衡策略关键因素

    负载均衡策略的优劣及其实现的难易程度有两个关键因素: 第一,负载均衡算法:第二,对网络系统状况的检测方式和能力.

  6. 企业级java springcloud b2bc商城系统开源源码二次开发-负载均衡策略...

    简单轮询负载均衡 以轮询的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1) mod n 文章来源 JAVA ssm b2b2c多用户商城系统源码 随机负载均衡 随机选择状态为UP的serv ...

  7. spring cloud中通过配置文件自定义Ribbon负载均衡策略

    2019独角兽企业重金招聘Python工程师标准>>> spring cloud中通过配置文件自定义Ribbon负载均衡策略 博客分类: 微服务 一.Ribbon中的负载均衡策略 1 ...

  8. 几种软负载均衡策略分析

    版权声明:本文为Sunface原创文章,请随意转载,若有需要敬请联系CTO@188.com.同时欢迎大家加入Golang隐修会,QQ群894864,大神很多. 公司去年上了F5,好用是好用,但是费用太 ...

  9. Ribbon负载均衡策略配置

    在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!! 不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是请求分发而不是承担并发,可以直接 ...

最新文章

  1. mac easyconnect不能双击打开_轻松解决Mac上「应用程序“xxx”不能打开」的问题
  2. 不属于mysql常量的是_R256是内部“字”继电器WR25的( )号位。_学小易找答案
  3. NA-NP-IE系列实验实验15:RIPv2 手工汇总
  4. 70 个数据分析常用网址,我先收藏了!
  5. 使用java获取本机mac
  6. TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型
  7. 04 java 基础:数据类型
  8. 条码php api,条码生成识别
  9. Q75:光照模型汇总:环境光、平行光光源、点光源、面积光源
  10. 【LED大屏文字显示---VUE】
  11. Android network框架分析之NetworkManagementService和netd交互深入分析(二)
  12. python pack是什么意思_Python中pack和unpack用法介绍
  13. 报错:CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake:48 (message):
  14. 50句哲理 语录(二)
  15. ubuntu 强制关闭程序或窗口方法
  16. 西门子博途V15.0安装更新包UPD4时遇到版本不一致的提示问题及处理对策
  17. 科研入门-国际期刊会议
  18. 最全的Windows7 服务优化、详解。
  19. TensorFlow 、Caffe等9大人工智能框架对比介绍
  20. Kubernetes实战吴龙辉

热门文章

  1. Oracle rac误删归档,rac 归档的存放路径下的不同的恢复方法
  2. PyCharm社区版支持深度学习_在Windows的Ubuntu子系统运行支持CUDA的深度学习代码
  3. 怎么用python制作随机点名软件_python用tkinter实现一个简易能进行随机点名的界面...
  4. 22考研计算机专业课——数据结构【❤️考研复习指导❤️】
  5. JSR-303校验-转载
  6. python如何避免访问对象不存在的属性_Python3基础 setattr 设置对象的属性值,如果属性不存在就创建一个...
  7. java切面不需要接口了吗_详解Spring AOP 实现“切面式”valid校验
  8. 计算机硬件格式,排版格式要求_计算机硬件及应用_IT/计算机_资料
  9. ceph 查看是否在恢复_Ceph monitor故障恢复探讨
  10. shiro-cas------整合springboot客户端