Мне нужно знать, как Storm управляет количеством параллельных рабочих в каждом болте. ни класс IrichBolt, ни класс IRichSpout не реализуют класс Runnable. Мне действительно нужно знать, как шторм управляет многопоточностью?
Какой класс в storm определяет количество витков для каждого болта и носика?
Ответы (1)
Это слишком широко, чтобы обсуждать, но вот кое-что, чем я мог бы поделиться. Вкратце Spouts
или Bolts
in storm можно определить как объект или компонент, который фактически обрабатывает данные. В терминологии шторма они известны как tasks
(поэтому вам не нужен его родительский интерфейс, такой как IRichSpout
, для реализации чего-то вроде Runnable ). Теперь поток, отвечающий за выполнение этих задач, называется Executors
. Из документа
в терминологии Storm "параллелизм" специально используется для описания так называемого подсказки параллелизма, что означает начальное количество исполнителей (потоков) для компонент (носик или болт)
Эти исполнители (потоки) снова порождаются worker process
. Из документа
Рабочий процесс выполняет подмножество топологии. Рабочий процесс принадлежит к определенной топологии и может запускать один или несколько исполнителей для одного или нескольких компонентов (носиков или болтов) этой топологии.
Компьютер в штормовом кластере может run single or multiple such worker process
для одной или нескольких топологий и each process can run executors for specific topologies
(вы даже можете изменить этих исполнителей во время выполнения, используя механизм перебалансировки шторма). Для внутренней связи с этими рабочими процессами Storm использует различные очереди сообщений, поддерживаемые LMAX Disruptor . Они поддерживают свои собственные потоки, такие как поток получателя и поток отправителя для управления входящими и исходящими сообщениями.
Вероятно, вы можете посмотреть в эту страницу документа для лучшего обзора. И эта очень хорошая статья объясняя, как он обрабатывает параллелизм. Это может помочь вам копать дальше и поделиться своими выводами :)