веб-сервис, который может противостоять 1000 одновременно работающих пользователей с ответом в течение 25 миллисекунд - PullRequest
4 голосов
/ 10 сентября 2010

Нашим клиентским требованием является разработка WCF, который может выдерживать одновременное использование 1-2 000 пользователей веб-сайта, а ответ должен составлять около 25 миллисекунд.

Эта служба считывает несколько столбцов из базы данных и будет использоваться различными поставщиками..

Можете ли вы предложить какую-либо архитектуру или какие-либо дополнительные усилия, которые мне нужно предпринять при разработке.И как мы рассчитываем конфигурацию аппаратного обеспечения сервера, чтобы справиться.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 сентября 2010

Вряд ли это возможно.Вам необходимо сетевое подключение к услуге, активация службы, обработка бизнес-логики, подключение к базе данных (другое сетевое подключение), запрос к базе данных.Из-за 2000 одновременных пользователей вам нужно несколько серверов приложений = балансировка нагрузки влияет на сетевое соединение.Я не могу представить сетевую и аппаратную инфраструктуру, которая могла бы выполнить такую ​​операцию в течение 25 мс для 2000 одновременных пользователей.Такое требование нереально.

Полагаю, если вы просто попытаетесь выполнить запрос к базе данных со своего компьютера на удаленную БД, вы увидите, что даже такая простая задача не будет выполнена за 25 мс.

1 голос
/ 10 сентября 2010

Несколько принципов:

  1. Тестируйте рано, тестируйте часто.
  2. Успешные системы получают больше трафика
  3. Надежность обычно важна
  4. Кэширование часто является ключом к производительности

Для уточнения. Создайте простую систему прямо сейчас. Даже если бизнес-логика очень упрощена, если это веб-служба и доступ к базе данных, вы можете проверить ее производительность. Тест с одним пользователем. Что ты видишь? Куда уходит время? По мере разработки системы добавление в реальном коде продолжайте делать этот тест. Причины: а). прямо сейчас вы знаете, достижимы ли 25 мс. б). Вы немедленно обнаруживаете любые изменения кода, которые снижают производительность. Теперь протестируйте с большим количеством пользователей, какие модели деградации вы используете? Это начинает давать вам и индикации ваших возможностей Paltforms.

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

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

В большинстве случаев мы получаем хорошую производительность при использовании кеша. Многие ли пользователи будут запрашивать одни и те же данные? Вы можете кешировать это? Есть ли обновления, которые стоит рассмотреть? в каком случае вам нужна система распределенного кэша с кластерным аннулированием? Это мультисерверное дело появляется снова.

0 голосов
/ 10 сентября 2010

Зачем вам нужен WCF?

Не могли бы вы перевести как можно большую часть этой службы в режим статического обслуживания и поиска в кэше?

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

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

Изучите Memcached.

...