Развертывание приложения, которое использует API-интерфейс Twitter Stream API на нескольких серверах

Я использую API потоковой передачи Twitter, чтобы получать последние твиты из Твиттера и отвечать на них, если они соответствуют определенным критериям (определенному хэштегу). При развертывании в одном экземпляре он работает очень хорошо, так как это только одно приложение, отвечающее на твиты.

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

Извините, если опубликовано в неправильном форуме.

1 ответ

Решение

Что вы предлагаете, так это то, как все должно быть сделано. Имейте один сервер или пул серверов, который использует API и добавляет каждый новый твит в базу данных, а затем другой сервер или пул "работников", которые выполняют действия с записями базы данных.

Вы также можете рассмотреть рабочую очередь для передачи сообщений о новых твиттах своим работникам.

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

Другие вопросы по тегам