Memcache на кубернетах

У меня есть API spring boot, работающий на google cloud kubernetes cluster, я хочу иметь кеширующий сервер для моего API, поэтому я решил использовать memcache.

Я пробовал два способа сделать это:

  1. Я загрузил memcache из программы запуска Google, которая в основном развертывает экземпляр memcache на виртуальной машине. Затем я назначил внешний IP своему виртуальному компьютеру, внес свой IP в белый список, чтобы попробовать его локально, и, конечно же, открыл порт 11211 (по умолчанию). Для клиентской стороны, которую я использовал, этот парень, указан IP-адрес, но я все равно получаю отмену соединения: java.util.concurrent.CancellationException: Cancelled и документ плохой, поэтому я могу найти все, что поможет.
  2. Я решил попробовать другой способ, который следует за этот учебник, и теперь у меня есть кластер memcached, но я не знаю, как использовать эти модули из другого кластера, или они должны находиться в том же кластере, в котором работает api?

Буду признателен за любую помощь, это мое первое знакомство с глобальным кешированием.

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

Jonah Benton 04.05.2018 21:34

Значит, у меня не может быть кэша памяти, разделяемого между моими экземплярами? как memcache для appengine, где он может быть разделен между всеми экземплярами, это то, чего я хочу достичь, но с приложением, развернутым на Kubernetes

user2137817 07.05.2018 10:49

Да, это то, для чего он нужен, но в контексте вашего # 2 выше вы не хотите иметь отдельный кластер memcached. Вы хотите, чтобы memcached работал внутри вашего существующего кластера. Таким образом, вы можете следовать тем же инструкциям по развертыванию memcached с помощью helm, но просто сделайте это в кластере, который у вас уже есть, вместо того, чтобы начинать с создания нового кластера.

Jonah Benton 07.05.2018 15:23

гул, а как насчет первого решения? иметь memcached vm и подключиться к нему?

user2137817 07.05.2018 15:52

Вы хотите, чтобы memcached находился в той же сети, что и приложение, как можно ближе к приложению. Установка случайной виртуальной машины и настройка списков ACL этого вам не даст. Попробуйте сначала запустить его непосредственно на рабочем узле кластера Kubernetes.

Jonah Benton 07.05.2018 16:04

Одна проблема, которая меня интересует: если я запускаю ее непосредственно на узле Kubernetes, как я могу протестировать ее локально, чтобы увидеть, работает ли она в первую очередь?

user2137817 07.05.2018 16:14

В целях тестирования вы можете назначить pod узлу, на котором работает memcached: kubernetes.io/docs/concepts/configuration/assign-pod-node

Jonah Benton 07.05.2018 17:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
3
7
4 282
1

Ответы 1

Так что я понял это, основываясь на совете Джоны Бентона.

На самом деле это было довольно просто, я использовал этот учебник для создания нового модуля с memcached в моем кластере, а затем я использовал клиент это для подключения к нему, и это сработало отлично!

Надеюсь, это кому-то поможет.

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