Несколько друзей и я написали игру для Facebook, не особо задумываясь о фактической архитектуре игры — и представьте наше удивление, когда мы достигли более 300 000 уникальных игроков в месяц и когда наши серверы расплавились.
Сейчас мы работаем над перепроектированием всей серверной части игры, чтобы сделать ее более масштабируемой и способной поддерживать сотни тысяч, если не миллионы пользователей.
В настоящее время я новичок во всей концепции масштабирования, но из того, что я более или менее понял, нам нужно следующее: 1. Балансировщик нагрузки 2. Веб-сервер на 20 000 ~ одновременных пользователей (мы связались со сторонним разработчиком Comet которые утверждают, что они могут поддерживать до 20 000 одновременных подключений на узел) 3. Кэширующий кластер 4. Кластер базы данных
Очевидно, все это очень абстрактно, но я что-то упустил? Если мы разрабатываем это в .NET, может ли кто-нибудь порекомендовать хорошую технологию кластерного кэш-сервера?
Имейте в виду, что:
- Мы стремимся охватить миллионы игроков
- Мы стремимся охватить 10/100 тысяч одновременных пользователей
- Нам нужно хранить как можно больше данных в кеше и каждый раз сбрасывать их в БД.
- У нас есть какие-то взаимодействия между игроками (получение обновлений результатов игроков и т. д.), и нам нужен централизованный или реплицированный кеш для работы (в основном это означает, что нам нужны данные кеша, к которым обращаются все веб-серверы, чтобы они были полностью синхронизированы).