Преимущества использования банок для жира перед контейнерами - PullRequest
0 голосов
/ 29 мая 2020

Я хочу знать разницу между ними, а также какой из них в настоящее время используется больше в соответствии с отраслевыми стандартами. Я попытался найти ресурсы в Интернете, но контента о Fat Jars очень мало, а также почти нигде не видно контраста между ними.

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

На первый взгляд, это не имеет большого значения. Причина этого в том, что система упаковки Java действительно сформировалась и за долгие годы стала сильной. Многие другие экосистемы не извлекают из этого выгоду и могут получить большую выгоду от упаковки в образ контейнера. Но контейнеры - это не только упаковка. Упаковку можно было считать ее побочным эффектом.

Среди прочего, некоторые преимущества использования контейнеров по сравнению с простыми Fat JARS:

Упрощенная инфраструктура

Для большого (или среднего) предприятия построенные на микросервисах, есть вероятность, что не все из них используют одни и те же языки и инструменты. Контейнер обеспечивает предсказуемый способ развертывания всех этих разных вещей одним и тем же способом, поэтому он значительно упрощает инфраструктуру, тем самым значительно сокращая расходы компании. Это становится еще более важным при развертывании в облаке, особенно в сценарии с несколькими облачными провайдерами ios, и в этом случае оркестровка контейнеров, обеспечиваемая таким программным обеспечением, как Kubernetes, очень помогает без особых усилий.

Согласованность

Еще одно преимущество контейнеров перед обычными JAR - согласованность между средами. Представьте, например, что вы развертываете свой JAR в DEV (выполняется Java 8), а затем в PROD (работает Java 10). По какой-то причине JVM ведет себя по-разному, либо из-за сборщика мусора по умолчанию, либо из-за чего-то еще, что заставляет вашу программу вести себя по-разному в обеих средах. При развертывании через образ контейнера один и тот же образ будет использоваться в разных средах, поэтому всегда будет использоваться одна и та же версия Java, что снижает вероятность ошибок.

Изоляция ресурсов

Еще одно преимущество - изоляция ресурсов. Контейнеры могут гарантировать, что ваше приложение «видит» только заранее определенный объем памяти и процессоров. На самом деле, в Java 10 были некоторые улучшения по этому поводу, вы можете прочитать об этом здесь .

Надеюсь, это дает лучшую точку зрения по этому вопросу.

0 голосов
/ 29 мая 2020

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

Fat jar - это основной способ обернуть приложение java, чтобы его можно было легко поместить в контейнер.

Конечно, вы можете использовать толстые банки и автономными способами.

Плюсы контейнеризации:

  1. Вы можете воспользоваться унифицированным инструментарием для контейнеров. То есть вы настраиваете docker и можете запускать любой контейнер - будь то java с fat jar или node.js или что-то еще.
  2. Вы можете воспользоваться преимуществами различных систем оркестровки контейнеров (docker compose, docker swarm, kubernetes, et c) - это означает, что вы используете единый инструментарий для проверки работоспособности, мониторинга, скользящих обновлений и т.д. c.
  3. Вам не нужно беспокоиться о таких вещах, как JRE / JDK версии в вашей системе.

Когда вы все еще можете использовать автономную версию:

  • Когда у вас есть java -centri c архитектура и установленные процессы, связанные с этим, и было бы дорого перейти от этого к современной оркестровке контейнеров.
  • Когда вы используете java в качестве основной платформы сценариев (или приложений) на своем экземпляре и просто не хотите накладные расходы на контейнеры.
...