正常的申博官网的管理者与员工的比例应该是多少?

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

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

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

  1. 在笔者的理解中分区器的负载均衡与顺序性有着一定程喥上的矛盾。
  • 负载均衡的目的是将消息尽可能平均分配对于 Kafka 而言,就是尽可能将消息平均分配给所有分区;
  • 如果使用 Kafka 保证顺序性则需偠利用到 Kafka 的分区顺序性的特性。
  • 对于需要保证顺序性的场景通常会利用 Key 值实现分区顺序性,那么所有 Key 值相同的消息就会进入同一个分区这样的情况下,对于大量拥有相同 Key 值的消息会涌入同一个分区,导致一个分区消息过多其他分区没有消息的情况,即与负载均衡的思想相悖
  1. 并非分区数量越多,效率越高
    节点保存每个分区的这两个文件的文件句柄所以如果分区过多,ReplicaManager 需要保持打开状态的文件句柄数也就会很多
  • 每个 Producer, Consumer 进程都会为分区缓存消息,如果分区过多缓存的消息越多,占用的内存就越大;

再均衡是消费者层面的负载均衡具体见前面的。

我要回帖

 

随机推荐