【问题标题】:Is it possible to disable caching for some kafka topics?是否可以禁用某些 kafka 主题的缓存?
【发布时间】:2018-02-02 16:07:18
【问题描述】:

所以我在 kafka 中有一个场景,其中有 2 个主题:A 和 B。主题 A 的消费者在线(并且需要快速消费数据),主题 B 的消费者离线。由于主题 B 的消费者离线,我现在不需要缓存与主题 B 相关的任何消息,并且希望主题 A 获得整个缓存。是否可以禁用某些 kafka 主题的缓存?

编辑: 我所说的缓存是指消息存储在内存中,而消费者也在从内存(而不是磁盘)中读取。在这种情况下,我希望将与主题 A 相关的消息缓存在内存中。与主题 B 相关的消息不必缓存在内存中。我希望主题 A 使用本应分配给主题 B 的内存空间

【问题讨论】:

  • 缓存是什么意思?在哪里以及如何?
  • @PragmaticProgrammer 我所说的缓存是指消息存储在内存中,而消费者也在从内存(而不是磁盘)中读取。在这种情况下,我希望将与主题 A 相关的消息缓存在内存中。与主题 B 相关的消息不必缓存在内存中。我希望主题 A 使用本应分配给主题 B 的内存空间。

标签: apache-kafka


【解决方案1】:

您可以为特定消费者禁用缓存:

如果您想禁用 Kafka 消费者的缓存,可以将 spark.streaming.kafka.consumer.cache.enabled 设置为 false

来自 [Spark Streaming + Kafka 集成指南],我建议您按照它进行进一步说明。

【讨论】:

  • 我可以为代理禁用缓存吗?
  • 否。代理的缓存配置不可用。
【解决方案2】:

Kafka 严重依赖文件系统来存储和缓存消息。 Kafka 中唯一可用于缓存的配置是客户端的流缓冲区大小,用于缓冲传入消息 -- cache.max.bytes.buffering

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多