У меня есть API spring boot, работающий на google cloud kubernetes cluster, я хочу иметь кеширующий сервер для моего API, поэтому я решил использовать memcache.
Я пробовал два способа сделать это:
memcache из программы запуска Google, которая в основном развертывает экземпляр memcache на виртуальной машине. Затем я назначил внешний IP своему виртуальному компьютеру, внес свой IP в белый список, чтобы попробовать его локально, и, конечно же, открыл порт 11211 (по умолчанию). Для клиентской стороны, которую я использовал, этот парень, указан IP-адрес, но я все равно получаю отмену соединения: java.util.concurrent.CancellationException: Cancelled и документ плохой, поэтому я могу найти все, что поможет.memcached, но я не знаю, как использовать эти модули из другого кластера, или они должны находиться в том же кластере, в котором работает api?Буду признателен за любую помощь, это мое первое знакомство с глобальным кешированием.
Значит, у меня не может быть кэша памяти, разделяемого между моими экземплярами? как memcache для appengine, где он может быть разделен между всеми экземплярами, это то, чего я хочу достичь, но с приложением, развернутым на Kubernetes
Да, это то, для чего он нужен, но в контексте вашего # 2 выше вы не хотите иметь отдельный кластер memcached. Вы хотите, чтобы memcached работал внутри вашего существующего кластера. Таким образом, вы можете следовать тем же инструкциям по развертыванию memcached с помощью helm, но просто сделайте это в кластере, который у вас уже есть, вместо того, чтобы начинать с создания нового кластера.
гул, а как насчет первого решения? иметь memcached vm и подключиться к нему?
Вы хотите, чтобы memcached находился в той же сети, что и приложение, как можно ближе к приложению. Установка случайной виртуальной машины и настройка списков ACL этого вам не даст. Попробуйте сначала запустить его непосредственно на рабочем узле кластера Kubernetes.
Одна проблема, которая меня интересует: если я запускаю ее непосредственно на узле Kubernetes, как я могу протестировать ее локально, чтобы увидеть, работает ли она в первую очередь?
В целях тестирования вы можете назначить pod узлу, на котором работает memcached: kubernetes.io/docs/concepts/configuration/assign-pod-node




Так что я понял это, основываясь на совете Джоны Бентона.
На самом деле это было довольно просто, я использовал этот учебник для создания нового модуля с memcached в моем кластере, а затем я использовал клиент это для подключения к нему, и это сработало отлично!
Надеюсь, это кому-то поможет.
memcached - это кеш приложения, а не http-кеш - это то, что вы ищете? В качестве кеша приложения он определенно должен работать в непосредственной близости к сети от приложения в том же кластере. Когда вы создаете развертывание и сервис для него, вы можете использовать имя DNS, созданное сервисом, в конфигурации вашего приложения, чтобы ваше приложение знало, где найти экземпляр (ы) memcached.