Проблемы, связанные с использованием кэш-памяти 2-го уровня NHibernate с AWS Elasticache

Я использую memcached в качестве кеша NHibernate 2-го уровня. Я перевожу свою систему на Amazon Web Services и планирую использовать Elasticache, который полностью совместим с Memcache. Memcached использует набор IP-адресов хоста (примечание: не имена хостов - библиотека выдает ошибку, если обнаруживает недопустимую строку IP) для подключения к серверам memcached. Ниже приведен пример строки конфигурации:

  <memcache>
    <memcached host="192.168.1.1" port="11211" expiration="300" />
  </memcache>

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

Кто-нибудь смог использовать провайдер memcached NHibernate с Elasticache? Существуют ли альтернативные способы настройки memcached с NHibernate таким образом, чтобы он использовал имя хоста, а не IP-адрес?

Спасибо

JP

4 ответа

Решение

Для всех, кто заинтересовался: мне не удалось указать имя хоста с помощью NHibernate.Caches.MemCache. Однако оказывается, что есть альтернативная реализация memcache для NHibernate - NHibernate.Caches.EnyimMemcached. Это позволяет определять серверы по IP-адресу или имени хоста, решая мою проблему. Мне все еще было бы интересно услышать , возможно ли достичь с помощью более старой интеграции Memcache, но с EnyimMemcached все работает хорошо

Если кто-то все еще ищет решение,

Вы можете использовать https://github.com/henriquecampos/NHibernate.Caches.Elasticache для подключения к Amazon Elastic Cache с минимальными настройками.

Также для локальной разработки вы можете использовать следующий проект https://github.com/hybridtechie/fake-elasticache-.NET-version

Вместо использования host атрибут в вашем файле конфигурации, вы не можете просто использовать hostname атрибут и установить его в DNS-имя, предоставленное ElastiCache?

то есть:

<memcached hostname="simcoprod02.m2st2p.fsw4.use1qa.cache.amazonaws.com" port="11211" expiration="300" />

Его имена хостов выпуска aws (предоставленные amazon, amazon-XXXX) не применимы, поскольку они не сопоставлены ни с одним доменом.

Маршрутизация между внутренними ips также не представляется возможной, вы можете попытаться отследить ее, она идет везде. Единственный способ состоит в том, чтобы использовать внешние облицовочные эластичные ips, как вы узнали,

Маршрутизация к именам, сопоставленным с амазонкой, также не представляется возможной

Вы можете попытаться отправить запрос обратного сопоставления DNS (в amazon faq) или установить вторичный запрос DNS (отказ от ответственности, я не пробовал оба, я сопоставил с использованием эластичного IP и должен был перейти к более неотложным вещам)

Другие вопросы по тегам