Как узнать какой сервер storm/bolt запущен

У меня вопрос, связанный с Apache Storm. В настоящее время мы используем несколько серверов для реализации Storm, нашему приложению нужны токены facebook/Twitter.

Итак, мы хотим спроектировать следующим образом: каждый токен принадлежит определенному серверу, когда болт получает кортеж, он запрашивает токен, который предназначен специально для этого запущенного экземпляра болта, это предотвращает блокировку токена, если разные серверы используют один и тот же токен в короткое время.

Кто-нибудь знает, как это сделать, есть ли способ узнать, на каких серверах работает экземпляр Bolt? Большое спасибо.


person keduadoi    schedule 14.09.2017    source источник


Ответы (1)


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

Если вы хотите иметь токен для каждой машины, вы можете создать bean-компонент Singleton для хранения одного токена для всей JVM. Обратите внимание, что если вы хотите иметь более одного воркера на одной машине, вам нужно иметь несколько токенов для каждой машины (по одному на каждую JVM на машине) или создать автономный сервер промежуточного программного обеспечения, которому принадлежит токен и который обрабатывает запросы от нескольких JVM на машине. Даже если это приемлемо, вам все равно нужно решить, как сделать так, чтобы все экземпляры болтов в одной JVM/worker использовали один токен для этой JVM.

person Chris Gerken    schedule 15.10.2017