更多博客请见 我的语雀知识库
生产者的路由策略决定了消息应该写入哪个分区。选择合适的路由策略可以优化生产者的性能和负载均衡 。

粘性路由策略

  • 粘性路由策略尝试将一段时间内的消息发送到相同的分区。这个策略在生产者启动时选择一个分区,并在接下来的时间里尽量将所有消息发送到这个分区。只有在当前分区达到一定条件(如大小或数量限制)时,生产者才会切换到其他分区。
  • 优点
    • 减少分区切换:减少了生产者频繁切换分区的次数,从而提高了写入效率。
    • 提高吞吐量:集中写入同一个分区可以提高磁盘的写入性能,特别是在高负载场景下。
    • 改善负载均衡:粘性路由可以在时间范围内平衡分区负载,避免短时间内的负载不均。
    • 适用场景:适合需要高吞吐量和较少分区切换的场景,如大批量消息写入和高性能的数据写入场景。

轮询

默认的分区路由策略。生产者将消息均匀地分配到 Topic 的所有分区中。每个消息会被依次发送到不同的分区,以实现负载均衡。

  • 优点:简单易用,能够均匀地分配消息负载。
  • 适用场景:适合消息负载比较均匀的场景。

基于键的路由

生产者根据消息的key的哈希值来决定分区。相同的键将始终路由到同一个分区。 这个路由需要我们在发送消息时指定key。send方法有一个重载版本可以传入key。

  • 优点:能够确保同一类型的消息(相同键)始终发送到同一个分区,有利于顺序消费和数据局部性。
  • 适用场景:需要确保相关数据在同一分区的场景,例如用户会话数据或交易记录。

如果我们执行send方法时指定了key,不管配置了什么路由都会选择基于键的路由。