cadvisor туда же - он попросту в таком сетапе становится не нужен.
При деплое в k8s что-то другое используется для мониторинга контейнеров?
это логично, потому что эти метрики считают разные типы памяти...
Да, к сожалению пока не нашёл такой вариант метрик памяти контейнера и приложения, который измеряет один и тот же тип памяти и при этом корректно отображается на графике
Первым запросом вы проверяете наличие ключа в редиске, вторым читаете его значение. Только вы совсем проигнорировали то, что чтение может вернуть ошибку в том числе и потому, что ключа нет в базе, т.к. его удалили в промежутке между первым и вторым запросом.
Справедливое замечание, поменял
С очисткой кеша, при обновлении записи в монге, тоже вопрос не простой. А что если приложение навернётся сразу после обновления документа в монге, но до того как кеш в редиске будет удалён? Очевидно не хватает "авто-протухания" кеша через какое-то время.
маловероятно, что что-то может пойти не так. Для порядка можно перенести формирование строки ключа в начало метода. Для "продакшн" приложения, возможно, и стоит рассмотреть вариант с автоэкспирацией.
Вполне возможно, что не для всех backend задач есть библиотеки или существующие недостаточно развиты. Пока что я сталкивался только со вторым, при этом в части случаев мейнтейнеры были готовы доработать крейты. Кроме того, для многих задач (например, GraphQL, ORM) есть 2 или более поддерживаемых библиотек.
По поводу переключения (в моём случае основными языками были Java/Kotlin), в первые месяцы действительно сложно.
Для рассматриваемого приложения выигрыш есть, и значительный. Причём не только у Quarkus, но и у Micronaut (а также у Ktor и Helidon SE, но это микрофреймворки, а не fullstack). Вот, например, сравнение примерного времени старта сервиса. При использовании GraalVM выигрыш по времени старта будет ещё больше.
Хорошая статья для начинающих. Я бы предложил сделать стек более современным и удобным для такого проекта:
— in-memory БД (например, H2)
— Thymeleaf или что-то подобное вместо jsp. Можно пойти дальше и сделать сервис чисто REST API для отдельного фронта
— YAML вместо .properties для конфигурации
— как уже упоминалось, Lombok для геттеров, сеттеров и т. п.
— думаю, было бы интереснее реализовать подобный пример, используя WebFlux вместо Spring MVC
По поводу микрофреймворка: этот пункт относится только к Helidon SE, но не к Helidon MP, в котором действительно есть CDI. В Helidon SE его нет, поэтому для DI нужно использовать third-party библиотеку, в данном случае — Koin.
Спасибо.
При деплое в k8s что-то другое используется для мониторинга контейнеров?
Да, к сожалению пока не нашёл такой вариант метрик памяти контейнера и приложения, который измеряет один и тот же тип памяти и при этом корректно отображается на графике
Интересен был именно такой набор инструментов, возможно потому, что в работе не сталкивался с Zabbix
Не сталкивался с проблемой высокого потребления CPU, но нашёл issue, где также есть варианты решения
Мужики, добавил автоэкспирацию записей в кэше с пояснением в статье :) Джуны могут спать спокойно :)
И? Баг? Так и поделом такой компании, без синьоров и тестеров :)
Конечно, эти варианты возможны, но не считаю, что
утверждение о маловероятности опровергнуто
обязательно стоит предусматривать их обработку в учебном проекте
Справедливое замечание, поменял
Конкретно здесь:
маловероятно, что что-то может пойти не так. Для порядка можно перенести формирование строки ключа в начало метода. Для "продакшн" приложения, возможно, и стоит рассмотреть вариант с автоэкспирацией.
Вполне возможно, что не для всех backend задач есть библиотеки или существующие недостаточно развиты. Пока что я сталкивался только со вторым, при этом в части случаев мейнтейнеры были готовы доработать крейты. Кроме того, для многих задач (например, GraphQL, ORM) есть 2 или более поддерживаемых библиотек.
По поводу переключения (в моём случае основными языками были Java/Kotlin), в первые месяцы действительно сложно.
Думаю, это могло бы быть справедливо, если бы результаты вызовов этих `await`'ов были логически независимы. Но, например, в этом случае:
на мой взгляд, очистка кэша должна выполняться только после завершения обновления в БД.
twitter.com/Ouren/status/1241398181205889024
— in-memory БД (например, H2)
— Thymeleaf или что-то подобное вместо jsp. Можно пойти дальше и сделать сервис чисто REST API для отдельного фронта
— YAML вместо .properties для конфигурации
— как уже упоминалось, Lombok для геттеров, сеттеров и т. п.
— думаю, было бы интереснее реализовать подобный пример, используя WebFlux вместо Spring MVC