Как добиться масштабируемости в простом веб-сервисе - PullRequest
1 голос
/ 29 февраля 2012

Это может быть глупый запрос, но я встречал этот запрос несколько раз.Что делать, если у вас есть только один веб-сервис, выполняющий обычные вычисления (скажем, A + B).

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

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

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

Примечание. Требуется не отвечать на основании аппаратной части или балансировщика нагрузки.Этот запрос просто связан с программным обеспечением (кроме loadbalancer)

1 Ответ

1 голос
/ 29 февраля 2012

В какой-то момент вы будете ограничены, например, соединениями с ЦП, ОЗУ или ОС / сетевой картой.Этот вопрос удивительно расплывчат, но на общий взгляд в общем случае :

  • целесообразно использовать кэширование (для A + B нет ничего для кэширования, нов большинстве реальных случаев)
  • обеспечивают минимальные издержки - например, существует разница в накладных расходах между WCF с большим количеством включенных опций протокола (например, сеансы + транзакции + шифрование сообщений) и необработанным сокетомсервер;ServiceStack - это хороший компромисс в середине, предлагающий низкую пропускную способность, без таких больших издержек, как WCF
  • , если некоторые части службы используют внешний ограниченный по времени ресурс, вам может потребоваться рассмотреть асинхронную реализацию
  • все измерить и оптимизировать;мы используем мини-профилировщик, чтобы показать нам, где проводить время

, но, возможно, важнее всего:

  • спроектировать систему так, чтобы вы могли масштабировать ее, добавив еще однуapp-server

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...