соображения дизайна для службы WCF, к которой нужно обращаться 500 000 раз / день - PullRequest
1 голос
/ 11 июня 2009

Мне было поручено создать службу WCF, которая будет запрашивать БД и возвращать коллекцию составных типов. Сама по себе не сложная задача, но к сервису будут обращаться несколько веб-сайтов, которые в среднем могут посещать 500 000 человек в день.

Есть ли какие-то особые соображения, которые я должен принять во внимание при разработке этого?

Спасибо!

1 Ответ

4 голосов
/ 11 июня 2009

Никаких особых проблем для стороны разработки. Хорошо спроектированные сервисы WCF могут обслуживать тысячи запросов в секунду . Вот эталон для WCF, показывающий 22 000 запросов в секунду, с использованием блейд-системы с 4x блейд-серверами HP ProLiant BL460c, каждый с одним четырехъядерным процессором Xeon E5450. Я не рассматривал сложность или размер отправляемых сообщений, но кажется, что на главном сервере от HP вы сможете получать 1000 сообщений в секунду или более. А при хорошем дизайне масштабирование будет просто работать. При этой пиковой скорости 500 тыс. В день не являются особенно стрессовыми для уровня коммуникаций, построенного на WCF.

В том объеме сообщения, с которым вы работаете, вы do должны учитывать эксплуатационные аспекты.

Лесозаготовки
Большинство системных сотрудников, которые наблюдают за системами WCF (и другими системами .NET), о которых я говорил, используют подход, при котором утром они хотят посмотреть на основные жизненные показатели системы:

  • скользящие средние объема запроса: 1мин, 1 час, 1 день.
  • сравнение этих величин со средними историческими значениями
  • частота ошибок / исключений: 1 мин, 1 час, 1 день
  • сравнение этих величин

Если ваши исключения достаточно малы по объему (в большинстве случаев так и должно быть), вы можете записать каждое из них в специальный журнал событий приложения или другой журнал аудита. Это требует некоторого обдумывания - планирования хранения ревизий и так далее. Причина в том, что это сложно, потому что в некоторых случаях крайне исключительные условия могут привести к очень большой загрузке, что усугубляет исключительные условия - эффект снежного кома. Определенно хотите, чтобы некоторые ограничения на регистрацию исключений, чтобы избежать этого. «Запорный клапан», если вы понимаете, о чем я.

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

Сеть
С приведенным мною тестом сеть представляла собой довольно широко открытый гигабитный Ethernet. В вашей среде сеть может быть общей, и вам придется проверить, является ли дополнительная нагрузка разумной.

...