* Клиент * масштабируемость для большого количества вызовов удаленных веб-сервисов - PullRequest
1 голос
/ 29 апреля 2010

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

В моем случае у меня есть SOAP и веб-сервис на основе XML-RPC, которому я постоянно звоню. Я предсказываю, что это скоро станет проблемой, так как количество вызовов в секунду будет расти.

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

На более низком уровне я использую клиент Apache Xml-Rpc и стандартные пакеты javax.xml.soap. * Для своих реализаций клиента. Вам известны какие-либо хитрости / советы / предупреждения, связанные с масштабируемостью клиента, с этими пакетами?

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

Юрий

1 Ответ

0 голосов
/ 30 апреля 2010

Необходимо понять, что в JavaScript вы всегда имеете дело с насосом событий: происходит какое-то событие браузера или истекает таймер, а затем исполняется часть JavaScript. Имея в виду эту модель выполнения, вы на самом деле не хотите думать о том, чтобы периодически происходил процесс пакетной обработки и отправки - вместо этого вы хотите объединить все вызовы, которые происходят в одном обработчике событий (фрагмент выполнения javascript в ответ на одно событие из браузера) и отправьте их.

Это делается путем изменения вашего кода rpc, чтобы каждый вызов помещал в очередь вызовы с параметрами и функциями обратного вызова в глобальный массив, а если он ставит в очередь первый вызов, он также назначает setTimeout(..., 0) функцию, которая будет отправлять все в очереди и очистить массив.

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

...