Как операции с состоянием работают в потоках Kafka, когда есть несколько экземпляров потокового приложения?

Прямо от источника: http://java.sun.com/developer/technicalArticles/ALT/Reflection/ Затем я изменил его, чтобы быть автономным, не требуя ничего из командной строки. ; -)

import java.lang.reflect.*;

/** 
Compile with this:
C:\Documents and Settings\glow\My Documents\j>javac DumpMethods.java

Run like this, and results follow
C:\Documents and Settings\glow\My Documents\j>java DumpMethods
public void DumpMethods.foo()
public int DumpMethods.bar()
public java.lang.String DumpMethods.baz()
public static void DumpMethods.main(java.lang.String[])
*/

public class DumpMethods {

    public void foo() { }

    public int bar() { return 12; }

    public String baz() { return ""; }

    public static void main(String args[])
    {
        try {
            Class c = DumpMethods.class;
            Method[] m = c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++)
            System.out.println(m[i].toString());
        } catch (Throwable e) {
            System.err.println(e);
        }
    }
}

0
задан Nishu Tayal 18 January 2019 в 11:04
поделиться

1 ответ

Максимальная единица параллелизма - количество разделов. Если вы запустите больше экземпляров, чем количество разделов, избыточные экземпляры будут простаивать.

Операции соединения должны соответствовать следующим требованиям:

  1. Входные данные должны быть разделены во время объединения. Это означает, что входные темы, которые нужно объединить, должны иметь одинаковое количество разделов.

  2. Обе темы должны иметь одинаковую стратегию разделения, чтобы записи с одинаковыми ключами могли доставляться в одни и те же разделы. Если это не так, есть вероятность потерять записи.

Пример: если topic1 имеет 2 раздела, а topic2 имеет 3 раздела, Join(topic1,topic2) завершится ошибкой из-за неравных разделов. После того, как вы переделите тему, скажем 3. Теперь Join(topic1, topic2) будет работать. Вы можете максимально использовать 3 задачи для этой операции. Каждый раздел будет поддерживать свое состояние в государственном хранилище в виде внутренних тем. По умолчанию KStream использует RocksDB для хранения состояний.

Здесь вы можете увидеть, как обычно процесс работает для преобразования с состоянием: enter image description here

Пожалуйста, обратитесь к ним для более подробной информации:

https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Internal+Data+Management https://docs.confluent.io/current/streams /developer-guide/dsl-api.html#streams-developer-guide-dsl-joins

0
ответ дан Nishu Tayal 18 January 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: