Поделиться через


Краткое руководство. Развертывание приложения надежных служб .NET в Service Fabric

Azure Service Fabric — это платформа распределенных систем для развертывания масштабируемых и надежных микрослужб и контейнеров и управления ими.

В этом кратком руководстве показано, как развернуть первое приложение .NET в Service Fabric. По завершении у вас есть приложение для голосования с веб-интерфейсом ASP.NET Core, который сохраняет результаты голосования в серверной службе с отслеживанием состояния в кластере.

Снимок экрана приложения

С помощью этого приложения вы узнаете, как:

  • Создание приложения с помощью .NET и Service Fabric
  • Использование ASP.NET ядра в качестве веб-интерфейса
  • Хранение данных приложения в службе с отслеживанием состояния
  • Отладка приложения локально
  • Масштабирование приложения путем подключения дополнительных узлов
  • Выполнение последовательного обновления приложения

Предпосылки

Чтобы завершить этот ускоренный курс:

  1. Установите Visual Studio 2019 с рабочими нагрузками разработки Azure и ASP.NET и веб-разработки .

  2. установите Git;

  3. Установка пакета SDK Для Microsoft Azure Service Fabric

  4. Выполните следующую команду, чтобы включить развертывание Visual Studio в локальном кластере Service Fabric:

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
    

Создание кластера

После установки среды выполнения, пакетов SDK, средств Visual Studio, Docker и запуска Docker создайте локальный кластер разработки с пятью узлами.

Примечание.

Причина запуска Docker при создании кластера заключается в том, чтобы кластер был создан с включенными функциями контейнера. Если Docker не запущен, необходимо повторно создать кластер, чтобы включить функции контейнера. Хотя в этом кратком руководстве не требуется, инструкция Docker выполняется при создании кластера в качестве рекомендации. Проверьте, запущен ли Docker, открыв окно терминала и выполнив команду, чтобы узнать, возникает docker ps ли ошибка. Если ответ не указывает на ошибку, Docker запущен и готов к созданию кластера.

Настройка Windows 10 или Windows Server для контейнеров

  1. Откройте новое окно PowerShell с повышенными привилегиями от имени администратора.

  2. Выполните следующую команду PowerShell, чтобы создать кластер разработки:

    . "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1"
    
  3. Выполните следующую команду, чтобы запустить средство локального диспетчера кластеров:

    . "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe"
    

Примечание.

Пример приложения в этом кратком руководстве использует функции, недоступные в Windows 7.

Скачивание примера

В командном окне выполните следующую команду, чтобы клонировать пример репозитория приложений на локальный компьютер.

git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart

Локальное запуск приложения

Щелкните правой кнопкой мыши значок Visual Studio в меню "Пуск" и выберите "Запуск от имени администратора". Чтобы подключить отладчик к службам, необходимо запустить Visual Studio от имени администратора.

Откройте решение Voting.sln Visual Studio из клонированного репозитория.

По умолчанию приложение voting прослушивает порт 8080. Порт приложения задается в файле /VotingWeb/PackageRoot/ServiceManifest.xml . Вы можете изменить порт приложения, обновив атрибут Port элемента Endpoint . Чтобы развернуть и запустить приложение локально, порт приложения должен быть открыт и доступен на компьютере. При изменении порта приложения замените новое значение порта приложения на "8080" в этой статье.

Чтобы развернуть приложение, нажмите клавишу F5.

Примечание.

В окне вывода Visual Studio появится сообщение "URL-адрес приложения не задан или не ЯВЛЯЕТСЯ URL-адресом HTTP/HTTPS, поэтому браузер не будет открыт для приложения". Это сообщение не указывает на ошибку, но браузер не запустится автоматически.

По завершении развертывания запустите браузер и откройте http://localhost:8080, чтобы просмотреть веб-интерфейс приложения.

Интерфейс приложения

Теперь можно добавить набор вариантов голосования и начать принимать голоса. Приложение выполняет и сохраняет все данные в кластере Service Fabric без необходимости в отдельной базе данных.

Обзор примера приложения для голосования

Приложение для голосования состоит из двух служб:

  • Веб-интерфейсная служба (VotingWeb) — служба веб-интерфейса ASP.NET Core, которая служит веб-страницей и предоставляет веб-API для взаимодействия с серверной службой.
  • Серверная служба (VotingData) — веб-служба ASP.NET Core, которая предоставляет API для хранения результатов голосования в надежном словаре, сохраненном на диске.

Схема приложений

При голосовании в приложении происходят следующие события:

  1. JavaScript отправляет запрос на голосование в веб-API в веб-интерфейсной службе в виде HTTP-запроса PUT.

  2. Веб-интерфейсная служба использует прокси-сервер для поиска и пересылки HTTP-запроса PUT в серверную службу.

  3. Серверная служба принимает входящий запрос и сохраняет обновленный результат в надежном словаре, который реплицируется на несколько узлов в кластере и сохраняется на диске. Все данные приложения хранятся в кластере, поэтому база данных не требуется.

Отладка в Visual Studio

Приложение должно работать в порядке, но вы можете использовать отладчик, чтобы узнать, как работают ключевые части приложения. При отладке приложения в Visual Studio вы используете локальный кластер разработки Service Fabric. Вы можете настроить возможности отладки в своем сценарии. В этом приложении данные хранятся в серверной службе с помощью надежного словаря. Visual Studio удаляет приложение по умолчанию при остановке отладчика. Удаление приложения приводит к удалению данных в серверной службе. Чтобы сохранить данные между сеансами отладки, откройте свойства проекта голосования и измените режим отладки приложения на автоматическое обновление.

Чтобы узнать, что происходит в коде, выполните следующие действия.

  1. Откройте файл /VotingWeb/Controllers/VotesController.cs и установите точку останова в методе Put веб-API (строка 69). Вы можете найти файл в обозревателе решений в Visual Studio.

  2. Откройте файл /VotingData/Controllers/VoteDataController.cs и установите точку останова в методе Put этого веб-API (строка 54).

  3. Вернитесь в браузер и выберите вариант голосования или добавьте новый вариант голосования. Вы попали в первую точку останова в контроллере API веб-интерфейса.

    • Этот шаг заключается в том, что JavaScript в браузере отправляет запрос контроллеру веб-API в интерфейсной службе.

      Добавить голос к услуге Front-End

    • Сначала постройте URL-адрес для обратного прокси нашей серверной службы (1).

    • Затем отправьте HTTP PUT-запрос в обратный прокси (2).

    • Наконец, верните ответ серверной службы клиенту (3).

  4. Нажмите клавишу F5 , чтобы продолжить

    • При появлении запроса в браузере предоставьте группе ServiceFabricAllowedUsers разрешения на чтение и выполнение для режима отладки.

    • Теперь вы находитесь в точке останова в внутренней службе.

      Добавить голос за сервис Back-End

    • В первой строке метода (1)StateManager получает или добавляет надежный словарь counts.

    • Для всех взаимодействий со значениями в надежном словаре требуется транзакция, и эта инструкция using (2) создает её.

    • В транзакции обновите значение соответствующего ключа для параметра голосования и зафиксируйте операцию (3). После возврата метода фиксации данные обновляются в словаре и реплицируются на другие узлы в кластере. Теперь данные безопасно хранятся в кластере, а служба внутренней службы может выполнить отработку отказа на другие узлы, а данные по-прежнему доступны.

  5. Нажмите клавишу F5 , чтобы продолжить

Чтобы остановить сеанс отладки, нажмите клавиши SHIFT+F5.

Выполнение последовательного обновления приложения

При развертывании новых обновлений в приложении Service Fabric развертывает обновление безопасным способом. Пошаговые обновления позволяют избежать простоя во время обновления, а также предлагают автоматический откат в случае возникновения ошибок.

Чтобы обновить приложение, выполните следующие действия.

  1. Откройте файл /VotingWeb/Views/Home/Index.cshtml в Visual Studio.

  2. Измените заголовок на странице, добавив или обновив текст. Например, измените заголовок на "Пример голосования Service Fabric версии 2".

  3. Сохраните файл.

  4. Щелкните правой кнопкой мыши голосование в обозревателе решений и выберите "Опубликовать". Отобразится диалог Опубликовать.

  5. Нажмите кнопку "Версия манифеста" , чтобы изменить версию службы и приложения.

  6. Измените версию элемента Code в разделе VotingWebPkg на "2.0.0", например, и нажмите кнопку "Сохранить".

    Диалоговое окно

  7. В диалоговом окне "Публикация приложения Service Fabric " установите флажок "Обновить приложение".

  8. Измените профиль целевого объектана PublishProfiles\Local.5Node.xml и убедитесь, что для конечной точки подключениязадано значение "Локальный кластер".

  9. Выберите "Обновить приложение".

    Параметр обновления диалогового окна публикации

  10. Нажмите кнопку Опубликовать.

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

  11. Откройте браузер и перейдите по адресу кластера через порт 19080. Например, http://localhost:19080/.

  12. Щелкните узел "Приложения" в представлении дерева, а затем Текущие обновления в правой панели. Вы увидите, как обновление проходит через домены обновления в вашем кластере, убедившись, что каждый домен находится в работоспособном состоянии, прежде чем перейти к следующему. Домен обновления на панели выполнения отображается зеленым цветом при проверке работоспособности домена. Обзор обновлений в Service Fabric Explorer

    Service Fabric обеспечивает безопасность обновлений, ожидая двух минут после обновления службы на каждом узле в кластере. Ожидается, что все обновление займет около восьми минут.

Дальнейшие действия

В этом кратком руководстве вы узнали, как выполнить следующие действия:

  • Создание приложения с помощью .NET и Service Fabric
  • Использование ASP.NET ядра в качестве веб-интерфейса
  • Хранение данных приложения в службе с отслеживанием состояния
  • Отладка приложения локально
  • Масштабирование приложения путем подключения дополнительных узлов
  • Выполнение последовательного обновления приложения

Дополнительные сведения о Service Fabric и .NET см. в этом руководстве: