Я работаю над проектом, в котором сервис WCF будет использоваться приложениями iOS.Число ожидаемых посещений веб-сервера в любой данный момент времени составляет около 900-1000.Каждый запрос может занять 1-2 секунды.Такое же количество запросов ожидается каждую секунду 24/7.
Это мой план:
- Записать WCF RESTful-сервис (контекстный режим экземпляра будет percall).
- Запрос / ответ будет в Json.
- Есть некоторая информация, которую необходимо сохранить на сервере - эта информация фактически получена из другой удаленной системы - которая распределяется между всеми запросами.Поскольку использование базы данных может не быть хорошей идеей (время отклика очень важно - максимум 2 секунды - это максимум, которое клиент может подождать), было бы хорошо сохранить ее в памяти сервера (скажем, статический словарь - предположим, что этот словарь будетколлекция из 150000 объектов - каждый объект состоит из 5-7 типов строк и их ключей).Я знаю, что это изменчиво!
- Каждый запрос будет порождать новый поток (используя Threading.Timers) для некоторой очистки - этот поток также будет выполнять чтение / запись базы данных.
Теперь, если через некоторое время появится балансировщик нагрузки, хранимые в памяти объекты не могут быть разделены между запросами, направляемыми через другой узел. Есть идеи?
Я надеюсь, что вы, гуру, могли бы помочь мне, поделившись своими комментариями / предложениями по всей архитектуре, регулированию WCF, сохранению состояния объекта и т. Д. Просьба также предоставить некоторые указатели на необходимое оборудование.Мы планируем использовать сервер Windows 2008 Enterprise Edition, базу данных IIS и SQL Server 2008 Std Edition.
Добавление дополнительной информации № 3: Как я уже сказал, мы получаем некоторую информацию для службы из удаленной системы.На веб-сервере, где размещен WCF, будет установлен клиент удаленной системы, и WCF ссылается на одну из этих клиентских библиотек для получения информации в виде хеш-таблицы (этот метод возвращает хеш-таблицу - около 150000 объектовбыть там в этой коллекции).Вы бы предложили записать эту информацию в базу данных, и запросы iOS (каждую секунду), которые обращаются к службе, получают эту информацию непосредственно из базы данных?Будет ли он работать лучше, чем потреблять напрямую из этой хеш-таблицы, если он сделан статическим?