Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Планы "Базовый", "Стандартный" и "Корпоративный" вступили в пенсионный период 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Эта статья относится к: ❎ Basic/Standard ✅ Enterprise
В этом кратком гиде показано, как развернуть приложение Spring Boot в Azure Spring Apps как нативное изображение.
Возможность Native Image позволяет компилировать Java-приложения в автономные исполняемые файлы, называемые Native Images. Эти исполняемые файлы могут обеспечить значительные преимущества, включая более быстрое время запуска и снижение затрат на память среды выполнения по сравнению с традиционной виртуальной машиной JVM (виртуальная машина Java).
Пример проекта — это приложение Spring Petclinic. На следующем снимку экрана показано приложение:
1. Предварительные требования
- Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Git.
- Пакет средств разработки Java (JDK) версии 17.
-
Azure CLI версии 2.45.0 или более поздней. Чтобы установить расширение Azure Spring Apps, выполните следующую команду:
az extension add --name spring - Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел Требования в документе Узнайте о предложении уровня Azure Spring Apps Enterprise на Azure Marketplace.
2. Подготовка проекта Spring Petclinic
Выполните следующие действия, чтобы клонировать и запустить приложение локально.
Используйте следующую команду, чтобы клонировать проект Spring Petclinic из GitHub:
git clone https://github.com/Azure-Samples/spring-petclinic.gitЧтобы создать проект Spring Petclinic, выполните следующую команду:
cd spring-petclinic ./mvnw clean package -DskipTests -Pnative packageИспользуйте следующую команду, чтобы запустить приложение Spring Petclinic с помощью Maven:
java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jarПерейдите по адресу
http://localhost:8080в вашем браузере, чтобы получить доступ к приложению Spring Petclinic.
3. Подготовка облачной среды
Основной ресурс, необходимый для запуска приложения Spring Petclinic, является экземпляром Azure Spring Apps. В этом разделе приведены действия по созданию ресурса.
3.1. Укажите имена для каждого ресурса
Создайте переменные для хранения имен ресурсов с помощью следующих команд. Обязательно замените шаблонные элементы вашими значениями.
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
export AZURE_SPRING_APPS_NAME=<Azure-Spring-Apps-service-instance-name>
export NATIVE_BUILDER=native-builder
export JAR_APP_NAME=jar-app
export NATIVE_APP_NAME=native-app
export JAR_PATH=target/spring-petclinic-3.1.0-SNAPSHOT.jar
3.2. Создание новой группы ресурсов
Чтобы создать новую группу ресурсов, выполните следующие действия.
Используйте следующую команду, чтобы войти в Azure CLI:
az loginЧтобы задать расположение по умолчанию, используйте следующую команду:
az configure --defaults location=${LOCATION}Используйте следующую команду, чтобы получить список всех доступных подписок, чтобы определить идентификатор подписки для использования:
az account list --output tableЧтобы задать подписку по умолчанию, используйте следующую команду:
az account set --subscription <subscription-ID>Выполните следующую команду, чтобы создать группу ресурсов.
az group create --resource-group ${RESOURCE_GROUP}Используйте следующую команду, чтобы задать только что созданную группу ресурсов в качестве группы ресурсов по умолчанию:
az configure --defaults group=${RESOURCE_GROUP}
3.3. Создайте экземпляр Azure Spring Apps
Azure Spring Apps используется для размещения приложения Spring Petclinic. Чтобы создать экземпляр Azure Spring Apps и два приложения внутри него, выполните следующие действия.
Используйте следующую команду, чтобы создать экземпляр службы Azure Spring Apps. Для сборки нативного образа требуется 16 ГиБ памяти в процессе компиляции, поэтому настройте размер пула сборок как S7.
az spring create \ --name ${AZURE_SPRING_APPS_NAME} \ --sku enterprise \ --build-pool-size S7Создайте файлbuilder-native.json в текущем каталоге и добавьте следующее содержимое:
{ "stack": { "id": "io.buildpacks.stacks.jammy", "version": "tiny" }, "buildpackGroups": [ { "name": "default", "buildpacks": [ { "id": "tanzu-buildpacks/java-native-image" } ] } ] }Используйте следующую команду, чтобы создать пользовательский сборщик, чтобы собрать приложение Native Image.
az spring build-service builder create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_BUILDER} \ --builder-file builder-native.jsonИспользуйте следующую команду, чтобы создать приложение в экземпляре Azure Spring Apps, в котором развертывается приложение Spring Petclinic в виде JAR-файла. Настройте ограничение памяти до 1 Ги.
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${JAR_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint trueИспользуйте следующую команду, чтобы создать приложение в экземпляре Azure Spring Apps, в котором развертывается приложение Spring Petclinic в качестве собственного образа:
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint true
4. Развертывание приложения в Azure Spring Apps
Теперь, когда облачная среда подготовлена, приложения готовы к развертыванию.
Используйте следующую команду, чтобы развернуть приложение Spring Petclinic в виде JAR-файла:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17
Используйте следующую команду для развертывания приложения Spring Petclinic в качестве собственного образа.
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--builder ${NATIVE_BUILDER} \
--build-cpu 8 \
--build-memory 16Gi \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17 BP_NATIVE_IMAGE=true
5. Проверка приложения нативного образа
Теперь вы можете получить доступ к развернутом приложению Native Image, чтобы узнать, работает ли оно. Чтобы проверить, выполните следующие действия.
После завершения развертывания можно выполнить следующую команду, чтобы получить URL-адрес приложения:
az spring app show \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --output tableВы можете получить доступ к приложению с URL-адресом, отображаемым в выходных данных как
Public Url. Страница должна выглядеть так же, как она выглядела на локальном сервере.Используйте следующую команду, чтобы проверить журнал приложения, чтобы изучить любую проблему развертывания:
az spring app logs \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME}
6. Сравнение производительности для JAR-файла и собственного образа
В следующих разделах описывается сравнение производительности между развертыванием JAR и Native Image.
Время запуска сервера
Используйте следующую команду, чтобы проверить журнал Started PetClinicApplication in XXX seconds приложения, чтобы получить время запуска сервера для JAR-приложения:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME}
Время запуска сервера составляет около 25 с для JAR-приложения.
Используйте следующую команду, чтобы проверить журнал приложения, чтобы получить время запуска сервера для приложения Native Image:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME}
Время запуска сервера меньше 0,5 с для приложения Native Image.
Использование памяти
Используйте следующую команду, чтобы уменьшить объём памяти до 512 Mi для приложения с нативным образом.
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--memory 512Mi
Выходные данные команды должны показать, что приложение Native Image успешно запущено.
Используйте следующую команду, чтобы уменьшить размер памяти до 512 Mi для JAR-приложения:
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--memory 512Mi
Выходные данные команды должны показать, что приложение JAR не удалось запустить из-за нехватки памяти. Выходное сообщение должно совпадать со следующим примером: Terminating due to java.lang.OutOfMemoryError: Java heap space
На следующем рисунке показано оптимизированное использование памяти для развертывания Native Image при постоянной рабочей нагрузке в 400 запросов в секунду в приложение Petclinic. Использование памяти составляет около 1/5 от объема, используемого при аналогичном развертывании JAR.
Нативные образы обеспечивают более быстрое время запуска и снижают нагрузку на память во время выполнения по сравнению с классической виртуальной машиной Java (JVM).
7. Очистка ресурсов
Если вы планируете продолжить работать с последующими краткими руководствами и учебниками, то, возможно, стоит оставить эти ресурсы неизменными. Если ресурсы больше не нужны, удалите их, удалив группу ресурсов. Чтобы удалить группу ресурсов, используйте следующую команду:
az group delete --name ${RESOURCE_GROUP}
8. Дальнейшие действия
Дополнительные сведения см. в следующих статьях: