Событие OnCommandGet
выполняется в контексте рабочего потока. Вам разрешен доступ к пользовательскому интерфейсу только из основного потока пользовательского интерфейса. Переместите доступ к элементам управления пользовательского интерфейса, встроенным в вызов, в TThread.Synchronize
или TThread.Queue
.
TThread.Synchronize(nil,
procedure
begin
Tabcontrol1.ActiveTab:=tabitem2;
end);
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];
У нас было 50, серверы, запускающие приложение веб-сервиса и все эти серверы, были сбалансированным использованием загрузки bigIP. Требование состояло в том, чтобы кэшировать каждое пользовательское состояние так, чтобы последующие состояния не сделали той же обработки снова и получили данные из предыдущего состояния. Таким образом, клиент веб-сервиса не должен поддерживать состояние.
Мы использовали Терракоту для кэширования состояний и никогда не сталкивались ни с какой проблемой производительности. В количестве пикового времени приложения запроса добирается, 100 в секунду.
Можно хотеть проверить Hazelcast также. Hazelcast является транзакционным открытым исходным кодом, распределял/делил реализацию очереди, темы, карты, набора, списка, блокировки и сервиса исполнителя. Супер легко работать с; просто добавьте hazelcast.jar в свой путь к классу и начните кодировать. Почти никакая конфигурация не требуется.
Hazelcast выпущен в соответствии с лицензией Apache, и поддержка корпоративного класса также доступна. Код размещается в Google Code.
Библиотека, которую Вы выбираете действительно, зависит от Вашего приложения и чего Вы пытаетесь достигнуть.
Я работал на магазин, который использовал Когерентность для обеспечения масштабируемости (и дублирование, вид), поскольку это - веб-приложения. Мы нашли, что у Вас должно быть приблизительно 4-5 узлов, чтобы начать извлекать любую пользу из Когерентности (2 или 3 узла потенциально уменьшает производительность). Я полагаю, что в документах Oracle говорится необходимость в партиях (30 +) узлы для реального извлечения пользы с Когерентностью. Если Вы действительно идете с Когерентностью, удостоверьтесь, что Вы будите свой аппаратный набор правильно - это очень чувствительно к задержке.
Я лично избегал бы "общедоступного" материала. Они могли бы дать Вам что-то для начала, но Вы в конечном счете столкнетесь с проблемами синхронизации или производительности и должны будете запустить написание кода, характерное для Вашего слоя сетки так или иначе. В основном Вы знаете свое приложение лучше, чем библиотека и сможете выяснить, которым объекты должны быть в кэше, сколько времени они должны жить, как Ваше приложение будет использоваться и т.д.
У меня нет достаточного опыта с этими технологиями, но я думаю Apache, Hadoop оказываются масштабируемым и надежным. Yahoo выполнил его на 10 000 базовых кластеров Linux.
Это основано на алгоритме Google MapReduce.
Эта статья описывает MapReduce и почему необходимо заботиться об этом.