Java программ с аварийным переключением на разных уровнях масштабируемости - PullRequest
1 голос
/ 17 января 2020

Чтобы сделать формулировку моего вопроса понятной и простой c, я стараюсь избегать использования таких слов, как «избыточность», «распределенный», «кластеризация», «оркестровка», «отказоустойчивость». ',' контейнер '

Если мне нужно написать

  • java программа A
  • java программа B

две очень похожие программы, каждая многопоточная

Моя цель состоит в том, чтобы написать A и B таким образом, чтобы, когда A неожиданно завершал свою работу, B запускался вместо этого. Поскольку A и B совместно используют централизованную базу данных, целостность данных здесь не является главной проблемой.

Вопрос 1: какой самый простой и элегантный подход для включения механизма «мониторинга», необходимого для обнаружения завершение A и «пробуждение» B на каждом из следующих уровней масштабируемости?

Уровень 1 : один экземпляр каждого из A и B работает на одном и том же процессоре и ОЗУ (например, следует ли мне использовать JMXConnector?)

Уровень 2 : один экземпляр каждого из A и B, работающих на разных наборах процессоров и ОЗУ в локальной сети, например, на двух ноутбуках дома. (например, используйте RMI, Docker, Kubernetes?)

Уровень 3 : один экземпляр каждого из A и B работает на разных наборах процессоров и ОЗУ в глобальной сети, например, на моем ноутбуке и a P C в удаленном месте

Уровень 4 (да, концептуально может совпадать с Уровнем 2 и 3) : работает несколько экземпляров A и B на разных узлах облачного сервиса, таких как AWS Cloud и Google Cloud. (например, используйте RMI, Docker, Kubernetes?)

Вопрос 2: если моя конечная цель соответствует уровню 4, но я сначала начну разработку A и B на своем ноутбуке, аналогично до уровня 1, что может быть хорошим подходом для выполнения всего этого цикла разработки / развертывания?

1 Ответ

1 голос
/ 17 января 2020

Kubernetes является хорошим вариантом для его гибкости: от одного узла до одного узла для огромных развертываний.

  • В вашем сценарии уровня 1 вы можете запускать Kubernetes с помощью виртуализации на Minikube .

  • Для ваших сценариев уровня 2, 3 и 4 ios вы можете настроить свой уровень управления Kubernetes с помощью KubeAdm : он создает мастер-узел и предоставляет вам ключ присоединения, поэтому вы можете добавлять дополнительные хост-компьютеры (узлы) по мере необходимости.

После начального этапа в minikube вы можете легко экспортировать yaml ваших конфигураций, чтобы работать в более крупном локальном кластере, гибридном или 100% в облаке.

Редактировать:

  • Подходит ли платформа Kubernetes для запуска в ней приложения, подобного высокочастотной торговле (HFT), это еще одна топика c, требующая открытия отдельного приложения. нить по SO.

  • могу только повторно Имейте в виду, что на дизайн Kubernetes оказала влияние система Google Borg, которая, в свою очередь, была сделана среди других для обработки недолговечных чувствительных к задержкам запросов (например, веб-поиска). Посмотрите Википедию, чтобы узнать больше об этой топи c.

  • В настоящее время приложения, работающие в Kubernetes, могут использовать аппаратное обеспечение, лежащее в основе. Например, локальное хранилище, напрямую подключенное к рабочим узлам (например, жестким дискам NVMe) или ресурсам графического процессора, которое обеспечивает соответственно стабильно высокую производительность операций ввода-вывода диска для ваших приложений и может ускорить выполнение сложных вычислительных задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...