Насколько хорошо WCF будет масштабироваться для большого числа пользователей-клиентов?


Есть ли у кого-нибудь опыт в том, насколько хорошо веб-службы, построенные с помощью WCF Microsoft, будут масштабироваться для большого числа пользователей?

Уровень, о котором я думаю, находится в области 1000+ пользователей - клиентов, подключающихся к коллекции служб WCF, предоставляющих бизнес-логику для нашего приложения, и они разговаривают с базой данных-аналогично традиционной 3-уровневой архитектуре.

Есть ли какие-либо конкретные готы, которые замедлили производительность, или какие-либо уроки дизайна, которые были усвоены вы включили этот уровень масштабируемости?

3 18

3 ответа:

Чтобы гарантировать, что ваше приложение WCF может масштабироваться до желаемого уровня, я думаю, вам, возможно, потребуется изменить свое мышление о статистике, которую должны удовлетворять ваши сервисы.

Вы упомянули обслуживание "1000 + пользователей клиентов", но чтобы оценить, могут ли ваши сервисы работать на этом уровне, вам также потребуется иметь некоторые оценочные показатели использования, которые помогут вам рассчитать некоторые более простые статистические данные, такие как количество запросов в секунду, которые должно обрабатывать ваше приложение.

Только что закончил работу над проектом WCF нам удалось получить 400 запросов в секунду на нашем тестовом оборудовании, что в сочетании с нашим ожидаемым шаблоном использования каждого пользователя, делающего 300 запросов в день, указывало, что мы можем обрабатывать в среднем 100 000 пользователей в день (предполагая плоский график использования в течение дня).

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

Вероятно, 4 самые большие вещи, которые вы можете начать смотреть в первую очередь (помимо того, что просто иметь хороший код обслуживания), это элементы, связанные с:

  • привязки - некоторые привязки и протоколы, на которых они работают, просто быстрее, чем другие, tcp будет быстрее, чем любая из Привязок http
  • Режим экземпляра - это определяет, как ваши классы распределяются по вызывающим сеансам
  • односторонние и двухсторонние операции - если ответ не требуется, возвращаемся к клиент, затем сделайте односторонний
  • регулирование - максимальное количество сеансов / параллельных вызовов и экземпляров

Они разработали WCF, чтобы быть безопасным по умолчанию, поэтому значения по умолчанию очень ограничены.