Кэширование запросов на уровне веб-приложений ColdFusion

У нас есть несколько веб-серверов, на каждом из которых установлена ​​одна версия ColdFusion. Кластер имеет балансировщик нагрузки перед ним.

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

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

Надеюсь, я прояснил себя :)

Приветствия, Ciarán

15.12.2008 14:23:34
5 ОТВЕТОВ

Вы могли бы попробовать дать memcached попытку.

3
15.12.2008 14:58:42
Спасибо. Я проверю это - у меня есть миллион и один вопрос по этому поводу, но сначала я прочитаю часто задаваемые вопросы :-P
Ciaran Archer 15.12.2008 16:40:49
Мы также внимательно изучаем EHCache ( ehcache.sourceforge.net ) как альтернативу в процессе.
Ciaran Archer 22.12.2008 11:24:09

Я бы посмотрел на memcached - здесь есть проект с открытым исходным кодом для интеграции его в ColdFusion: cfmemcached .

Если вы используете Railo, я слышал, что у него также есть область действия «кластер».

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

2
31.12.2008 03:30:03

вы можете кластеризовать и распределить область применения между серверами, но вы должны использовать корпоративную версию ColdFusion. Более подробная информация здесь: http://livedocs.adobe.com/coldfusion/7/htmldocs/00001774.htm

0
14.01.2009 00:07:00

Область сеансов может быть кластеризована в ColdFusion, если вы включите сеансы j2ee. Но все, что делает кластерная область - это копирует данные на серверы. Таким образом, запросы все равно будут скопированы на все 3 сервера. Таким образом, вы вернетесь туда, где вы сейчас находитесь.

Однако я бы просто использовал атрибут CachedWithin в cfquery вместо использования области приложения. Таким образом, вы позволяете движку CF выполнять управление кешем. Предотвращение выхода из-под контроля памяти и отсутствие дополнительных затрат на копирование большого количества данных между серверами.

0
16.01.2009 22:19:09
Что касается использования cachedWithin: главная проблема с кэшированием на сервере - это все еще означает, что один и тот же запрос много раз выполнялся для базы данных. Решили использовать EHCache на каждом из наших веб-серверов, так как он позволяет частичное кэширование страниц и может быть расширен до централизованного сервера кэширования, например, как memcached.
Ciaran Archer 17.01.2009 13:01:58
РЕШЕНИЕ

Решили использовать EHCache на каждом из наших веб-серверов, так как он позволяет частичное кэширование страниц и может быть расширен до централизованного сервера кэширования, например, как memcached. Очень доволен этим до сих пор.

Большое спасибо за все предложения!

1
7.04.2009 08:19:18