Многие сайты социальных сетей, такие как Twitter, вообще не используют СУБД, кроме приложения очереди сообщений. Многие из них начинают с уже существующего приложения, такого как RabbitMQ. Некоторые из них становятся достаточно большими, и им приходится сильно настраивать или создавать свои собственные. Твиттер находится во втором процессе.
Приложение очереди сообщений работает, удерживая сообщения от одной службы для одной или нескольких других служб. Например, скажем, сервис Frank публикует сообщения в очереди foo. Джо и Джилл подписаны на очередь Фрэнкс Фу. приложение будет следить за тем, получили ли Джо или Джилл сообщения, и как только каждый подписчик в очереди получил сообщение, оно отклоняет его. Фрэнк запускает сообщения и забывает об этом. Джо и Джилл просят сообщения от foo и получают те сообщения, которые они еще не получили. Джо и Джилл делают все, что им нужно сделать с сообщением. Возможно держать это вокруг возможно, нет.
Приложение очереди сообщений гарантирует, что каждый, кто должен получить сообщение, может и получит сообщение, когда запросит их. Издатель может отправлять сообщения с уверенностью, что подписчик может получить их в конце концов. Преимущество состоит в том, что он полностью асинхронный и не требует дорогостоящих соединений.
РЕДАКТИРОВАТЬ: Я должен также упомянуть, что обычно хранилище для таких вещей в больших масштабах сильно денормализовано. Так что Джо и Джилл могут хранить копию одного и того же сообщения. Это считается нормальным, потому что помогает масштабировать приложение до миллиардов пользователей.
Другое чтение:
- http://www.rabbitmq.com/
- http://qpid.apache.org/