Каковы недостатки в контейнерах приложений Akka - PullRequest
0 голосов
/ 15 октября 2019

О минусах, ошибках или вещах, о которых нужно знать при контейнеризации приложений Akka. Есть ли вещи, которых следует избегать? Библиотеки, которые помогают? Каков наилучший процесс для упаковки приложения в akka или передовой практики. Будем благодарны за любые ссылки на статьи.

1 Ответ

0 голосов
/ 17 октября 2019

Этот вопрос действительно слишком широк для обмена стека, но я дам несколько быстрых предложений, поскольку не похоже, что он будет помечен как слишком широкий.

SBT NativePackager - это типичный способ упаковки приложений akka для Docker. Хотя я понимаю, что есть аналогичные инструменты для других цепочек сборки.

Что касается "лучших практик", я не думаю, что есть что-то особенно отличное от любых других образов JVM Docker. Например:

  • Один процесс на контейнер. Итак, нет, вы не помещаете кластер на контейнер: вы устанавливаете один узел на контейнер: таким образом, вы можете увеличивать и уменьшать масштаб, просто добавляя / удаляя контейнеры. (Выполняйте непрерывные обновления и т. Д.)
  • Не используйте ограничения ЦП
  • Имейте в виду, что JVM (особенно Java8) может сообщать обо всех процессорах и памятина хосте, так что вы можете вручную установить настройки потока и памяти или посмотреть флаги JVM, которые могут облегчить это, такие как -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
  • Минимальные привилегии и т. д. Собственный упаковщик SBT имеет разумные значения по умолчанию для этого,, но применяются обычные рекомендации по использованию подходящего базового образа и другие общие рекомендации по Dockerfile.

Конечно, существуют также фактические документы Akka , развертываемые в Docker.

Одной вещью, которая может оказаться полезной, является статья Lightbend о запуске Lagom в Куберне . Так как это Lagom (а не просто Akka) и Kubernetes (а не просто контейнеры), это будет супер набор вещей, которые вас волнуют. (Например, вам не безразлична настройка Postgres / Kafka.) Но она также содержит много полезных советов по работе с контейнерами:

  • Размеры кучи
  • Как управлять конфигурациями
  • Использование хешей git для версий, чтобы сделать тэги Docker более разумными
  • Как использовать собственный упаковщик
  • Как использовать загрузчик Akka (хотя вам придется изменитьэто немного, если вы не используете Kubernetes
...