Выполнение ресурсоемкой задачи в Java-коде на виртуальной машине
1 марта 2023 г. мы прекратим поддержку классических виртуальных машин.
Если вы используете ресурсы IaaS из ASM, выполните миграцию до 1 марта 2023 г. Рекомендуем осуществить этот переход как можно раньше, чтобы воспользоваться различными улучшенными функциями в Azure Resource Manager.
В Azure предлагаются две модели развертывания для создания ресурсов и работы с ними: модель развертывания с помощью Resource Manager и классическая модель. В этой статье рассматривается использование классической модели развертывания. Для большинства новых развертываний Майкрософт рекомендует использовать модель диспетчера ресурсов.
С 15 ноября 2017 г. виртуальные машины будут доступны только на портале Azure.
В Azure для обработки ресурсоемких задач можно использовать виртуальную машину. Например, виртуальная машина может обрабатывать задачи и предоставлять результаты на клиентские компьютеры или в мобильные приложения. После прочтения этой статьи вы получите представление о создании виртуальной машины для выполнения ресурсоемкого приложения Java, за работой которого может следить другое приложение Java.
В этом учебнике предполагается, что вы умеете создавать консольные приложения Java, импортировать библиотеки в свое приложение Java и создавать архив Java (JAR). Знания о платформе Microsoft Azure не требуются.
- Как создать виртуальную машину с установленным комплектом разработчика Java (JDK).
- Как удаленно войти в виртуальную машину.
- Как создать пространство имен служебной шины.
- Как создать приложение Java, выполняющее ресурсоемкую задачу.
- Как создать приложение Java, отслеживающее ход выполнения ресурсоемкой задачи.
- Как запускать приложения Java.
- Как останавливать приложения Java.
В качестве ресурсоемкой задачи в этом учебнике будет использоваться задача коммивояжера. Ниже приведен пример приложения Java, выполняющего ресурсоемкую задачу.
Ниже приведен пример приложения Java, отслеживающего выполнение ресурсоемкой задачи.
Для создания виртуальной машины
- Войдите на портал Azure.
- Щелкните Создать ресурс >Среда выполнения приложений >Виртуальная машина, а затем — Из коллекции.
- В диалоговом окне Virtual machine image select (Выбор образа виртуальной машины) выберите пункт JDK 7 Windows Server 2012. Обратите внимание, что вариант JDK 6 Windows Server 2012 доступен только в случае использования устаревших приложений, которые не готовы к выполнению JDK 7.
- Щелкните Далее.
- В диалоговом окне Конфигурация виртуальной машины выполните указанные ниже действия.
- Укажите имя виртуальной машины.
- Укажите размер виртуальной машины.
- Введите имя администратора в поле Имя пользователя. Запомните это имя и пароль, которые вы будете вводить далее. Они понадобятся для удаленного входа в виртуальную машину.
- Введите пароль в поле Новый пароль и повторно введите его в поле Подтверждение. Это пароль учетной записи администратора.
- Щелкните Далее.
- Для облачных служб используйте значение по умолчанию Создать новую облачную службу.
- Значение поля DNS-имя облачной службы должно быть уникальным для cloudapp.net. При необходимости измените это значение, чтобы система Azure показывала его уникальность.
- Укажите регион, территориальную группу или виртуальную сеть. Для целей данного учебника укажите регион, например западная часть США.
- Для параметра Учетная запись хранения выберите значение Использовать автоматически созданную учетную запись хранения.
- В разделе Группа доступности выберите (Нет).
- Щелкните Далее.
- Примите стандартные параметры для конечной точки.
- Нажмите кнопку Готово.
Удаленный вход в виртуальную машину
- Войдите на портал Azure.
- Нажмите Виртуальные машины.
- Нажмите имя виртуальной машины, в которую нужно войти.
- Нажмите кнопку Соединить.
- Отвечайте на запросы, появляющиеся при подключении к виртуальной машине. При получении запроса на ввод имени и пароля администратора используйте значения, которые были указаны при создании виртуальной машины.
Обратите внимание, что функции служебной шины Azure требуют, чтобы в хранилище cacerts JRE был установлен сертификат Baltimore CyberTrust Root. Этот сертификат автоматически включается в состав среды выполнения Java (JRE), используемой в этом учебнике. Если у вас нет этого сертификата в хранилище cacerts JRE, то сведения о его добавлении (а также о просмотре сертификатов в хранилище cacerts) см. в статье Добавление сертификата в хранилище сертификатов ЦС Java.
Создание пространства имен служебной шины
Чтобы начать использовать очереди служебной шины в Azure, необходимо сначала создать пространство имен службы. Это пространство имен службы предоставляет контейнер для адресации ресурсов служебной шины в вашем приложении.
Создание пространства имен службы:
в левой нижней области навигации портал Azure щелкните служебная шина контроль доступа & кэширование.
В верхней левой области портала Azure выберите узел Служебная шина, а затем нажмите кнопку Создать.
В диалоговом окне Создание пространства имен введите пространство имен и нажмите кнопку Проверить доступность, чтобы убедиться, что оно уникально.
Убедившись в доступности имени пространства имен, выберите страну или регион, где должно размещаться это пространство имен, и нажмите кнопку Создать пространство имен .
Созданное пространство имен появится на портале Azure, и его активация займет некоторое время. Прежде чем продолжить, дождитесь отображения состояния Активно .
Получение учетных данных управления по умолчанию для пространства имен
Для выполнения операций управления, таких как создание очереди, над новым пространством имен необходимо получить учетные данные управления для пространства имен.
- В левой области навигации щелкните узел Служебная шина , чтобы отобразить список доступных пространств имен.
- Выберите пространство имен, которое вы только что создали, из появившегося списка.
- Правая область Свойства будет содержать свойства для нового пространства имен.
- Параметр Ключ по умолчанию скрыт. Нажмите кнопку Просмотр, чтобы отобразить учетные данные для безопасного доступа.
- Запишите значения параметров Издатель по умолчанию и Ключ по умолчанию, так как эти сведения будут использованы ниже для выполнения операций с пространством имен.
Как создать приложение Java, выполняющее ресурсоемкую задачу
- На компьютере для разработки (который не обязательно должен быть созданной вами виртуальной машиной) скачайте пакет Azure SDK для Java.
- Создайте консольное приложение Java с помощью примера кода в конце этого раздела. В этом учебнике мы будем использовать имя файла Java TSPSolver.java . Измените заполнители your_service_bus_namespace, your_service_bus_ownerи your_service_bus_key для использования пространства именслужебной шины, издателя по умолчанию и значений ключей по умолчанию соответственно.
- После написания кода экспортируйте приложение в готовый к запуску архив Java (JAR) и упакуйте необходимые библиотеки в созданный JAR-файл. В этом учебнике мы будем использовать имя созданного JAR-файла TSPSolver.jar .
Как создать приложение Java, отслеживающее ход выполнения ресурсоемкой задачи
- На компьютере для разработки создайте консольное приложение Java с помощью примера кода в конце этого раздела. В этом учебнике мы будем использовать имя файла Java TSPClient.java . Как показано выше, измените заполнители your_service_bus_namespace, your_service_bus_ownerи your_service_bus_key , чтобы использовать пространство именслужебной шины, издателя по умолчанию и значения ключа по умолчанию соответственно.
- Экспортируйте приложение в готовый к запуску JAR-файл и упакуйте в него необходимые библиотеки. В этом учебнике мы будем использовать имя созданного JAR-файла TSPClient.jar .
Как запускать приложения Java
Для запуска ресурсоемкого приложения сначала создайте очередь, а затем решите задачу коммивояжера, в результате чего в очередь служебной шины будет помещен оптимальный маршрут. Во время (или после) выполнения ресурсоемкого приложения запустите клиент для отображения результатов из очереди служебной шины.
Запуск ресурсоемкого приложенияВойдите в виртуальную машину.
Создайте папку, где будет выполняться приложение. Например, c:\TSP.
Скопируйте файл TSPSolver.jar в папку c:\TSP.
Создайте файл с именем c:\TSP\cities.txt со следующим содержимым.
В командной строке смените каталог на c:\TSP.
Убедитесь, что папка bin среды JRE указана в переменной среды PATH.
Вам необходимо создать очередь служебной шины перед запуском перестановок средства поиска решения для задачи коммивояжера. Выполните следующую команду, чтобы создать очередь служебной шины.
После создания очереди можно запустить перестановки средства поиска решения для задачи коммивояжера. Например, выполните следующую команду, чтобы запустить поиск решения для 8 городов.
Если число не указано, выполняется поиск для 10 городов. Когда средство поиска решения находит кратчайшие маршруты, оно добавляет их в очередь.
Чем больше указываемое число, тем дольше будет выполняться поиск. Например, поиск для 14 городов может занять несколько минут, а для 15 городов — несколько часов. Поиск для 16 и более городов может занять несколько дней (а потом недель, месяцев и лет). Это вызвано резким ростом числа перестановок, которое приходится оценивать средству поиска решения по мере увеличения числа городов.
Запуск клиентского приложения мониторингаВыполните вход на компьютер, где будет выполняться клиентское приложение. Это не обязательно должен быть именно компьютер с приложением TSPSolver .
Создайте папку, где будет выполняться приложение. Например, c:\TSP.
Скопируйте файл TSPClient.jar в папку c:\TSP.
Убедитесь, что папка bin среды JRE указана в переменной среды PATH.
В командной строке смените каталог на c:\TSP.
Выполните следующую команду:
При необходимости укажите период ожидания в минутах между проверками очереди, передав аргумент командной строки. По умолчанию период ожидания при проверке очереди составляет 3 минуты, он используется, если в TSPClient не было передано никакого аргумента командной строки. Если вы хотите использовать другое значение интервала ожидания, например 1 минуту, выполните следующую команду:
Клиент будет работать, пока не получит сообщение "Выполнено" из очереди. Обратите внимание, что в случае выполнения нескольких экземпляров средства поиска решения без запуска клиента для полной очистки очереди может потребоваться запустить клиент несколько раз. Кроме того, можно удалить очередь и создать ее заново. Чтобы удалить очередь, выполните следующую команду TSPSolver (не TSPClient).
Средство поиска решения будет выполняться до завершения проверки всех маршрутов.
Как останавливать приложения Java
Для поиска решения и клиентских приложений можно нажать CTRL + C , чтобы выйти, если вы хотите завершить работу до нормального завершения.