前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka技术知识总结之六——Kafka负载均衡策略

Kafka技术知识总结之六——Kafka负载均衡策略

作者头像
剑影啸清寒
发布2020-07-08 14:46:32
5.1K0
发布2020-07-08 14:46:32
举报
文章被收录于专栏:琦小虾的Binary

接上篇《Kafka技术知识总结之五——Kafka的高可用性》

六. Kafka负载均衡策略

6.1 分区器

分区器是生产者层面的负载均衡。Kafka 生产者生产消息时,根据分区器将消息投递到指定的分区中,所以 Kafka 的负载均衡很大程度上依赖于分区器。 Kafka 默认的分区器是 Kafka 提供的 DefaultPartitioner。它的分区策略是根据 Key 值进行分区分配的:

  • 如果 key 不为 null:对 Key 值进行 Hash 计算,从所有分区中根据 Key 的 Hash 值计算出一个分区号;拥有相同 Key 值的消息被写入同一个分区;
  • 如果 key 为 null:消息将以轮询的方式,在所有可用分区中分别写入消息。

如果不想使用 Kafka 默认的分区器,用户可以实现 Partitioner 接口,自行实现分区方法。

注:

  1. 在笔者的理解中,分区器的负载均衡与顺序性有着一定程度上的矛盾。
  • 负载均衡的目的是将消息尽可能平均分配,对于 Kafka 而言,就是尽可能将消息平均分配给所有分区;
  • 如果使用 Kafka 保证顺序性,则需要利用到 Kafka 的分区顺序性的特性。
  • 对于需要保证顺序性的场景,通常会利用 Key 值实现分区顺序性,那么所有 Key 值相同的消息就会进入同一个分区。这样的情况下,对于大量拥有相同 Key 值的消息,会涌入同一个分区,导致一个分区消息过多,其他分区没有消息的情况,即与负载均衡的思想相悖。
  1. 并非分区数量越多,效率越高
  • 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;如果有成千上万个分区,那么需要很长时间的选举,消耗较大的性能。

6.2 再均衡

再均衡是消费者层面的负载均衡,具体见前面的第四章讲解内容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 六. Kafka负载均衡策略
    • 6.1 分区器
      • 6.2 再均衡
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档