【问题标题】:How to route based on content with high perfomance?如何基于高性能的内容进行路由?
【发布时间】:2019-06-17 10:26:42
【问题描述】:

在 nifi 中,如果我从单个主题收听 Kafka,并且基于路由逻辑,它将调用相应的进程组。

但是,在RouteOnContent处理器中,如果我们给出正则表达式来检查字符串的出现是否会影响性能或如何在基于条件的路由时获得良好的性能。

【问题讨论】:

    标签: apache-nifi apache-minifi


    【解决方案1】:

    在 KSQL / 流处理级别进行一些拆分成不同的主题并让 Nifi 从不同的主题中读取会更有效吗?

    【讨论】:

    • Dan 的回答为您提供了几个值得考虑的好方向。一般来说,生产者将各种格式和模式的数据转储到同一主题上并不是一个好主意。虽然我意识到有时你只需要处理你得到的东西。您是否有能力影响生产者逻辑,以便按照格式/模式将数据写入适当的主题,还是必须按原样处理?
    • 我认为这条评论是针对上述问题的?
    【解决方案2】:

    对每条消息的内容运行正则表达式是一种低效的方法,请考虑是否可以将方法修改为以下之一:

    • 让您的生产者将必要的元数据写入 Kafka 标头,该标头可以在 NiFi 中使用更高效的 RouteOnAttribute 处理器。这仍然是一次消息,具有吞吐量限制
    • 如果您的消息符合架构,请使用 NiFi 中更高效的 KafkaRecord 处理器和 QueryRecord 方法,这将显着提高吞吐量
    • 如果您无法修改源数据并且涉及正则表达式逻辑,则使用小型 Kafka Streams 应用程序在进一步下游处理数据之前拆分主题可能更有效

    【讨论】:

    • 我将从 Kafka 接收的数据可以是 JSON、文本甚至 CSV。那么,我该如何处理我不能在这里使用的查询记录。并且数据处理应该从单个 Kafka 主题发生,之后,它将根据不同主题中的数据进行隔离。因此,您可以提供的任何其他建议都会有所帮助。
    • 如果您无法控制写入主题的内容,并且将不同的数据集写入主题而没有元数据来识别它们,那么您的问题就是您的源数据 - 使用正则表达式或某种类型识别和分离它们的代码方法是不可避免的,除非您可以让上游生产者按照理想情况将不同的数据写入不同的主题
    猜你喜欢
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多