Storm: получите десятку пользователей в режиме реального времени - PullRequest
0 голосов
/ 29 августа 2018

Я настоящий новичок в Шторме. У меня есть требование, которое очень похоже на следующее:

Допустим, у меня есть система ставок, как на любом сайте электронной коммерции, где мы можем делать ставки на любой продукт. Я получаю нагрузку, скажем, 1 миллион запросов в секунду. Теперь мне нужно получить две статистические данные в реальном времени и показать их пользователю в пользовательском интерфейсе.

  1. Общее количество ставок (пользователь может делать ставки дважды, поэтому нам нужно объединиться).
  2. Десять лучших заявок и соответствующих пользователей отсортированы по сумме ставок и отметке времени.

Вся эта статистика должна быть в реальном времени и последовательной. Так что я надеюсь, что шторм до этого. Насколько я понимаю, мы можем использовать очередь сообщений, такую ​​как kafka, для хранения входящих заявок в виде логов. Тогда какая-то группа потребителей может забрать их и сохранить в любой БД. Но мне нужно знать, как шторм, использующий его болты, может собирать и находить мое окно из первой десятки и обновлять его в режиме реального времени, чтобы я мог взять его и показать в пользовательском интерфейсе.

Мое первоначальное усилие было похоже на

Кафка -> BiddingSpout -> болты (для фильтрации по текущей десятке) -> болт -> обновить результаты

Кафка -> BiddingSpout -> болт (счетчик) -> болт -> обновить результаты

Но я не могу понять, как болты будут фильтровать на основе текущей десятки результатов, которые обновляются очень быстро.

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, что вам нужен своего рода слой постоянства (кеш или база данных), который может использоваться вашими экземплярами болтов. Один из ваших болтов (счетчик) будет продолжать обновлять счетчик для определенного идентификатора ставки в этом слое персистентности, вам нужно атомарную операцию для этого, чтобы читать и увеличивать (что-то вроде кеша redis имеет предопределенное значение). Когда время ставки истекло, вы не должны больше получать сообщения, и количество не должно обновляться больше для этой ставки id. Ваш другой болт (фильтр) должен опрашивать слой постоянства на время ставки, и как только оно превысит время вашей ставки, вы должны получить счетчик и обновить результаты там, где он должен отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...