[Ежедневный свежий гриб] Пожалуйста, дайте Sprint Boot больше памяти

Spring Boot Микросервисы
[Ежедневный свежий гриб] Пожалуйста, дайте Sprint Boot больше памяти

Обзор

В целом, SprintBoot относительно легко построить, особенно семейство корзин SpringCloud, называемое удобными для людей микросервисами, но в тенденции развития технология контейнеризации созрела, и небольшие компании говорят, что они не могут использовать SprintBoot, который потребляет огромные ресурсы. объемы памяти. В настоящее время большинство новоявленных сред микросервисов JAVA в основном «облегчены», в основном потому, что SprintBoot слишком тяжел.

Микросервисный фреймворк JAVA No1-Spring Cloud

вводить

Поскольку Spring является большим сторонником, вопросы обновления, стабильности и зрелости вообще не нужно рассматривать. Технический персонал в отделе JAVA, вероятно, слышал название Spring, поэтому недостатка в программистах нет... и сложность начала работы очень низкая, что может полностью сэкономить архитектора. Однако вы обязаны платить на сервере:

  • По крайней мере, один сервер "обнаружения службы";
  • Может быть единый шлюз Шлюз;
  • Может потребоваться центр конфигурации для «управления распределенной конфигурацией»;
  • возможное «отслеживание услуг», чтобы узнать, откуда пришел мой запрос и куда он ушел;
  • Может потребоваться «Мониторинг кластера»;

После запуска проекта мы обнаружили, что нам нужно много серверов, и каждый раз, когда мы добавляли серверы в кластер, мы чувствовали себя огорченными;

Стресс-тест на 30 секунд

Использование памяти до стресс-теста

Как показано на рисунке, память занимает 304M.

Использование памяти во время стресс-теста

Как показано на рисунке, использование памяти составляет 1520 МБ (1,5 ГБ), а загрузка ЦП возрастает до 321%.

Обзор

Суммировать

Простое приложение SprintBoot требует как минимум 1 Гб памяти, а скомпилированный JAR микросервиса с меньшим количеством бизнес-точек будет около 50 Мб, в то время как SprintCloud будет вводить относительно больше компонентов и потреблять относительно больше ресурсов.

Время запуска составляет около 10 секунд или около того:Started Application in 10.153 seconds (JVM running for 10.915)

Набор инструментов реактивного программирования на основе JAVA Vert.x

вводить

При поддержке ЗатменияEclipse Vert.xэто набор инструментов для создания реактивных приложений на JVM. Конфликта со SprintBoot в позиционировании нет, а Vert.x даже можно использовать в связке со SprintBoot. Многие модули Vert.x предоставляют большое количество компонентов микросервисов, которые в глазах многих людей считаются выбором микросервисной архитектуры.

Платформа микросервисов HuaweiApache ServiceCombОн реализован с помощью Vert.x в качестве базовой платформы.В «веб-сайте эталонного тестирования TechEmpower» производительность Vert.x также очень высока.

Стресс-тест на 30 секунд

Использование памяти до стресс-теста

Как показано на рисунке, память занимает 65M.

Использование памяти во время стресс-теста

Как видно на рисунке, на память приходится 139М, а на ЦП приходится 2,1%.Похоже, что опрессовка не проводится.

Обзор

Суммировать

После упаковки одной службы Vert.x размер JAR составляет около 7 М. Он не зависит от таких контейнеров, как Tomcat и Jetty, и выполняется непосредственно на JVM.

Vert.x потребляет очень мало ресурсов, и кажется, что 1-ядерный сервер 2G может развернуть множество служб Vert.x. Помимо проблем с кодированием, это действительно хорошо для небольших проектов и небольших модулей. На рынке git появились шлюзы с открытым исходным кодом на основе реализаций Vert.x —Справочная документация VX-API-GatewayПоддержка нескольких языков, очень подходит для небольших проектов, чтобы быстро выйти в интернет.

Запуск занимает менее 1 секунды:Started Vert.x in 0.274 seconds (JVM running for 0.274)

JAVA — это другие микросервисные фреймворки.

SparkJava

  • Баночка относительно небольшая, около 10м
  • Он занимает небольшую память, около 30~60 МБ;
  • Производительность в порядке, как у SprintBoot;

Micronaut

  • Новый фаворит команды Grails;
  • Приложения на основе микросервисов, которые можно писать на Java, Groovy и Kotlin;
  • По сравнению с SprintBoot он более полный;
  • Производительность лучше, а метод кодирования похож на SprintBoot;
  • Более эффективен, чем другие фреймворки, по времени запуска и потреблению памяти;
  • многоязычный;
  • внедрение зависимости;
  • Встроенные несколько облачных функций;
  • Очень новый, только что выпущенный 1.0.0

Javalin

  • Очень легко начать;
  • Гибкий, совместимый как с синхронными, так и с асинхронными идеями программирования;
  • JAR маленький, 4~5M;
  • многоязычный;
  • Есть тень КОА;
  • Всего около 2000 строк исходного кода, исходный код достаточно прост для понимания и исправления;
  • в соответствии с современными тенденциями;
  • многоязычный;
  • Встроенный сервер Jetty;

Quarkus

  • начать быстро;
  • JAR небольшой, около 10М;
  • Документов немного, официальных документов очень много, а демо много;
  • Подходит для облачных приложений;
  • После нативного запуска миллисекундный уровень очень привлекателен, занимает очень мало памяти, потребляет меньше ресурсов и имеет большую производительность.
  • рекомендовать.