Масштабируемость зависит от местоположения данных, способа их получения и обновления.Язык реализации почти не имеет значения.
Если у вас есть единственный источник правды, он сразу становится узким местом.Это может быть еще не так плохо.Если узким местом является 50000 QPS, вам, вероятно, не понадобится какое-то время его исправлять.
Вы много спрашиваете о Facebook, а затем объясняете, что не хотите его создавать.Масштабирование системы - все о выборе дизайна, который соответствует данным, которые вы пытаетесь обслуживать.Так что, если вы не дадите нам идеи о том, что вы хотите построить, помочь вам спроектировать парение довольно сложно.
В качестве тривиального, но конкретного примера, конструкции хранилищ данных для систем веб-поиска Google и систем GMail совершенно и абсолютно разные.Оба довольно быстрые, но их дизайн отличается, потому что данные, их модель использования, их обновления и характеристики очень разные.
Чтобы начать процесс проектирования данных, начните с того, какие данные вам нужны,Затем подумайте о
Глобальная согласованность - все ли пользователи должны видеть единообразное представление данных?Если так, то масштабирование будет очень сложным.(Подумайте о Facebook, GMail и Stackoverflow - в этих случаях вам и мне не нужно видеть мгновенно непротиворечивое представление данных).
Долговечность - приемлемо ли это когда-либопотерять обновления?Если нет, вам нужно будет сохранить все данные (в достаточно разных местах, чтобы не было проблем с аппаратной потерей, помня о том, что вы не готовы терять обновления), прежде чем сообщать вызывающей стороне о том, что запрос выполнен.
Производительность - каковы потребности пользователя в производительности?
В большинстве систем вы можете создать только две из этих трех вещей, иВы должны пожертвовать третьим, чтобы сделать это.
Нарисуйте схему своего дизайна.Укажите на каждом поле (это будет компьютер, маршрутизатор, экземпляр базы данных, диск, структура данных в памяти и т. Д., Но не таблица или строка базы данных).Спросите: "Сколько из них мы можем иметь, максимум?"Если ответ «1», то ваш дизайн не масштабируется.Если ответ «столько, сколько вы хотите, но их нужно синхронизировать», это будет вашей проблемой масштабирования;взгляните еще раз на пронумерованные точки выше.