У нас есть несколько веб-серверов, на каждом из которых работает одна версия ColdFusion. Перед кластером находится балансировщик нагрузки.
Очевидно, что на каждом из этих серверов работает собственное CF-приложение, и это реализует кэширование запросов на уровне CF-приложения. Однако, поскольку все эти серверы обслуживают одно веб-приложение, многие из этих кешированных запросов дублируются в экземплярах приложения CF.
Есть ли способ реализовать кеширование запросов на уровне веб-приложения, то есть во многих экземплярах CF. Или, если нет, есть ли лучший способ настроить наш кластер, чтобы минимизировать нагрузку на наш сервер базы данных?
Надеюсь, я ясно выразился :)
Ваше здоровье, Чиаран


Вы можете попробовать memcached.
Мы также внимательно изучаем EHCache (ehcache.sourceforge.net) как альтернативу в процессе.
Я бы посмотрел на memcached - здесь есть проект с открытым исходным кодом для интеграции в ColdFusion: cfmemcached.
Если вы используете Railo, я слышал, что у него также есть «кластерный» прицел.
Если ни один из них не доступен или вам не нравится, вы можете в качестве альтернативы настроить один из своих серверов для обработки запросов, которые вы хотите кэшировать, а затем получать их с этого сервера напрямую через веб-службу. Таким образом, вы можете кэшировать их только на одном сервере, что уменьшит объем памяти, занимаемый кластером, а также снизит частоту доступа к серверу db. Однако вы можете вывести сервер, который обрабатывает кэширование запросов, из кластера и просто выделить его для кэширования запросов и всего остального, что вы хотите разгрузить с передних компьютеров, в то время как остальные обрабатывают внешний трафик.
вы можете выполнять кластеризацию и разделять область приложения между серверами, но вы должны использовать корпоративную версию ColdFusion. Подробнее здесь: http://livedocs.adobe.com/coldfusion/7/htmldocs/00001774.htm
Область сеанса может быть сгруппирована в ColdFusion, если вы включите сеансы j2ee. Но все, что делает кластерная область, - это копирует данные на серверы. Таким образом, запросы все равно будут скопированы на все 3 сервера. Так вы вернетесь туда, где находитесь сейчас.
Однако я бы просто использовал атрибут CachedWithin cfquery вместо использования области приложения. Таким образом, вы позволяете движку CF выполнять фактическое управление кешем. Сохранение памяти из-под контроля, и вы не добавляете накладных расходов на копирование большого количества данных между серверами.
Что касается использования cachedWithin: основная проблема с кешированием на сервере заключается в том, что он по-прежнему означает, что один и тот же запрос выполняется много раз к базе данных. Решили использовать EHCache на каждом из наших веб-серверов, поскольку он позволяет частичное кэширование страниц и может быть расширен до централизованного сервера кеширования, например, memcached.
Решили использовать EHCache на каждом из наших веб-серверов, поскольку он позволяет частичное кеширование страниц и может быть расширен до централизованного сервера кеширования, например, memcached. Пока очень доволен.
Большое спасибо за все предложения!
Спасибо. Я проверю это - у меня миллион и один вопрос по этому поводу, но сначала я прочитаю FAQ :-P