Проблемы, связанные с использованием кэш-памяти 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 и должен был перейти к более неотложным вещам)