Для запуска приложения Java в качестве службы в фоновом режиме на сервере Linux существует множество возможностей. Я мог бы использовать "Java Service Wrapper" от Tanuki или форк с открытым исходным кодом "Yet Another Java Service Wrapper" или что-то, о чем я еще не знаю. Я мог бы использовать Supervisor или даже Systemd.
У меня сложилось впечатление, что Java Wrappers не делают ничего, кроме как запускают приложение с установленными необходимыми параметрами (максимальный размер кучи, возможно classpath и тому подобное), контролируют его, перезапускают при необходимости или посылают приложению сигналы для перезагрузки, выключения или перезапустить. Вещи, которые я считаю легко выполнимыми с помощью Supervisor, а также даже с Systemd.
Я склонен думать, что эти оболочки были полезны, когда linux init все еще был основан на SystemV, но устарели с существованием supervisord или systemd. Есть ли какие-то моменты, которые мне не хватает на данный момент?
Есть ли преимущества у специальных java-оберток перед универсальными системами управления процессами типа супервизора или systemd?
1 ответ
Я использовал Java Service Wrapper от Tanuki Software на прошлой работе, и это сработало для нас очень хорошо. В основном мы использовали его для управления сценариями, мониторинга JVM и триггерных перезапусков и дампов потоков. Вы можете ознакомиться с полным списком функций.
В современных приложениях они могут быть частично покрыты другими инструментами, такими как инструменты сборки/упаковки, которые могут генерировать сервисы и сценарии управления, сервисы агрегирования журналов и метрик, а также проверки работоспособности при автоматических перезапусках в механизмах контейнеров. Повышение отказоустойчивости приложения также может решить многие проблемы.
При этом я все еще думаю, что это может быть удобно, если у вас есть приложение, которое не обрабатывает сбои изящно и нуждается в перезапуске, когда оно попадает в забавное состояние.
Я лично ищу, какие есть альтернативы, чтобы править беспокойным монолитом, доставшимся мне по наследству.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.