Масштабирование до миллионов пользователей с помощью инструмента Twitter [закрыто]

Как инструменты Twitter, такие как Buffer, масштабируются до миллионов пользователей, где им приходится писать тысячи твитов каждую секунду?

У меня есть аналогичная служба, в которой я запускаю cron-скрипт, однако просмотр 50 пользователей занимает около 10 секунд - поэтому мне интересно, как возможен такой масштаб.

-2
задан 23 June 2014 в 22:48
1 ответ

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

Вот некоторые основные приемы, которые они могут использовать:

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

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

  • Оптимизация. Если вы обрабатываете тысячи сообщений в секунду, сокращение времени публикации на 1/100 секунды является большим увеличением скорости. Скорее всего, будет сделано очень много работы для повышения производительности часто вызываемых частей их кода. Тщательное профилирование помогает определить, какие части кода необходимо оптимизировать, а какие не вызываются достаточно часто, чтобы беспокоить.

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

они вызываются достаточно часто, чтобы беспокоиться.

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

они вызываются достаточно часто, чтобы беспокоиться.

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

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

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

5
ответ дан 5 December 2019 в 21:06

Теги

Похожие вопросы