Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
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
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. Дальнейшие действия
Дополнительные сведения см. в следующих статьях: