если есть 10 разделов для темы и 3 экземпляра-потребителя (C1, C2, C3, запущенные в этом порядке), все принадлежащие одной группе потребителей, у нас могут быть разные модели потребления, которые позволяют параллелизм чтения, как показано ниже.
Каждый потребитель использует один поток. В этой модели, когда C1 запускается, все 10 разделов темы сопоставляются с одним и тем же потоком, и C1 начинает потреблять из этого потока. Когда запускается C2, Kafka повторно балансирует разделы между двумя потоками. Таким образом, каждый поток будет назначен на 5 разделов (в зависимости от алгоритма перебалансировки он также может быть 4 против 6), и каждый потребитель потребляет из своего потока. Точно так же, когда запускается C3, разделы снова балансируются между 3 потоками. Обратите внимание, что в этой модели при потреблении из потока, назначенного более чем одному разделу, порядок сообщений между разделами будет беспорядочным.
Каждый потребитель использует более одного потока (скажем, C1 использует 3, C2 использует 3, а C3 использует 4). В этой модели при запуске C1 все 10 разделов назначаются 3 потокам, а C1 может потребляют из 3 потоков одновременно, используя несколько потоков. Когда запускается C2, разделы перебалансируются между 6 потоками, и аналогично, когда запускается C3, разделы перебалансируются между 10 потоками. Каждый потребитель может одновременно использовать несколько потоков. Обратите внимание, что количество потоков и разделов здесь одинаковое. Если количество потоков превышает количество разделов, некоторые потоки не получат никаких сообщений, так как им не будут назначены какие-либо разделы.
Если есть другая группа потребителей, тот же процесс применяется к потребителям в этой группе потребителей.
person
java_geek
schedule
15.12.2014