Pull to refresh

Comments 8

Главное, что раскрыта заявленная тема.
Помимо упомянутых вами технологий используются множество других (JDK 11, Spring WebFlux, Spring Cloud Gateway, Spring Cloud Sleuth, Gradle Kotlin DSL и т. д.).

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

Если не вносить ненужные зависимости в приложения, что нередко случается на практике, то потребление ресурсов в целом умеренное.
Например, все микросервисы из этого проекта я могу запустить на своём домашнем ПК (8 Гбайт ОЗУ, 4-х ядерный процессор 3,2 ГГц), и это не будет мешать другим задачам.
Если говорить о конкретных цифрах, то каждое из 5-и приложений стартует не дольше 15 секунд и использует не более 400 Мбайт памяти; суммарно после запуска всё вместе расходует 1,4 Гбайт.
Потребление ресурсов в рантайме будет зависеть от нагруженности приложения. В моей практике в не самой высоконагруженной системе приложения добавляли к стартовой цифре не более 200-300 Мбайт. Максимальное потребление памяти одним сервисом не превышало 600 Мбайт, но в основном сильно меньше.
Кроме того, есть из чего выбрать в плане серверов приложений (Tomcat, Undertow, Netty etc.), это также будет влиять на потребление ресурсов.
Существует более детальное исследование этого вопроса от разработчиков Spring (с поправкой на 2015 г.).
Только стек немного уже неактуальный. Уже ж вышел SpringBoot 2.1 + Spring 5.1
Который официально поддерживает Java 11.
Не пробовали проапгрейдить?
Вы правы, есть более новые версии Spring и Spring Boot. Однако есть ещё и структура зависимостей Spring: Spring Cloud -> Spring Boot -> Spring. Как видно, в этой цепочке Spring Cloud обновляется последним.
Сейчас в проекте используется последняя версия Spring Cloud (Finchley SR2), которая использует уже не самые актуальные версии Spring Boot и Spring, но гарантированно совместима с ними.
Выход новой версии Spring Cloud ожидается в конце декабря. В него как раз будут включены более новые версии Spring Boot и Spring.
И из-за необходимости совместимости библиотек подобная ситуация будет повторяться и в будущем.
OpenFeign не поддерживает реактивность. Лучше пользоваться WebClient, который входит в Spring 5.
Когда происходит обращение к реактивному сервису — да, лучше. В статье и проекте показан пример использования WebClient.
Sign up to leave a comment.

Articles