Сведения о подготовке новых клиентов и их регистрации в каталоге

Область применения:База данных SQL Azure

В этом руководстве вы узнаете, как для подготовить и каталогизировать шаблоны SaaS. Вы также узнаете, как они реализуются в приложении SaaS Wingtip Tickets, использующем одну базу данных. Мы создадим и инициализируем базы данных клиента, а также зарегистрируем их в каталоге клиента приложения. Каталог — это база данных, поддерживающая сопоставление между разными клиентами приложений SaaS и их данными. Каталог играет важную роль, направляя запросы приложений и управляющие запросы к надлежащим базам данных.

В этом руководстве описано следующее:

  • Подготовка отдельного нового клиента.
  • Подготовка пакета дополнительных клиентов.

Для работы с этим руководством выполните следующие предварительные требования:

Общие сведения о шаблоне каталога SaaS

В мультитенантном приложении SaaS на основе базы данных важно знать, где хранятся сведения для каждого клиента. В схеме работы с каталогом SaaS используется база данных каталога, в которой содержатся сопоставления между клиентами и их базами данных. Этот шаблон применяется, когда данные клиента распределены по нескольким базам данных.

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

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

В каталоге также могут храниться дополнительные метаданные клиента или базы данных, такие как версия схемы, план обслуживания или соглашения об уровне обслуживания, предлагаемые клиентам. Каталог может содержать и другие сведения, которые обеспечивают управление приложениями, работу службы поддержки или операции DevOps.

Помимо функций для приложения SaaS, каталог позволяет включить средства для баз данных. В примере приложения SaaS Wingtip Tickets, использующем одну базу данных на клиент, каталог поддерживает межклиентские запросы. Такая схема подробно описана в руководстве по автоматизированной системе отчетности. Управление перекрестными заданиями в базах данных рассматривается в руководствах Управление схемой в приложении SaaS с помощью шаблона с однотенантной базой данных с использованием базы данных SQL Azure и Межклиентская аналитика с помощью извлеченных данных.

Каталог в приложении SaaS Wingtip Tickets реализуется с помощью функций управления сегментами из клиентской библиотеки эластичной базы данных (EDCL). Библиотека EDCL доступна для Java и платформы .NET Framework. EDCL позволяет приложению создавать, администрировать и использовать карту сегментов на основе базы данных.

Карта сегментов содержит список сегментов (баз данных) и сопоставления между ключами (клиентами) и сегментами. Функции EDCL используются во время подготовки клиента для создания записей в сопоставлении сегментов. Они используются приложениями во время выполнения для подключения к нужной базе данных. Служба EDCL кэширует сведения о подключении, чтобы уменьшить объем входящего трафика для базы данных каталога и ускорить работу приложения.

Важно!

Данные сопоставления доступны в базе данных каталога. Не изменяйте их. Изменяйте данные сопоставления только с помощью интерфейсов API EDCL. Прямые манипуляции с данными сопоставления могут привести к повреждению каталога. Такие операции не поддерживаются.

Общие сведения о шаблоне подготовки SaaS

Когда в приложении SaaS подключается новый клиент, использующий модель базы данных с одним клиентом, необходимо подготовить новую базу данных клиента. База данных должна быть создана в соответствующем расположении и на соответствующем уровне служб. Она также должна быть инициализирована с помощью соответствующей схемы и ссылочных данных. И эта база данных должна быть зарегистрирована в каталоге с помощью соответствующего ключа клиента.

Можно использовать различные способы подготовки базы данных. Можно выполнить сценарии SQL, развернуть BACPAC-файл или скопировать шаблон базы данных.

Подготовка базы данных должна быть частью стратегии управления схемами. Необходимо убедиться, что новые базы данных подготавливаются с помощью самой последней схемы. Это требование описано в руководстве Управление схемой для нескольких клиентов в мультитенантном приложении, использующем Базу данных SQL Azure.

Рассматриваемое приложение SaaS Wingtip Tickets, использующее одну базу данных на клиент, предоставляет для каждого клиента отдельную копию шаблона базы данных basetenantdb, который развернут на сервере каталога. Подготовку можно интегрировать в приложение как часть процесса регистрации. Можно также обеспечить ее вне сети с помощью сценариев. В этом руководстве описана подготовка с помощью PowerShell.

Сценарии подготовки копируют базу данных basetenantdb для создания базы данных клиента в эластичном пуле. База данных клиента создается на сервере клиента, сопоставленном с DNS-псевдонимом newtenant. Этот псевдоним содержит ссылку на сервер, используемый для подготовки новых клиентов. В руководствах по аварийному восстановлению псевдоним обновляется с добавлением ссылки на сервер восстановления клиента (аварийное восстановление с помощью географического восстановления, аварийное восстановление с помощью георепликации). Затем эти сценарии инициализируют базу данных с помощью данных клиента и регистрируют ее в сопоставлении сегментов каталога. Базы данных клиента именуются на основе имени клиента. Эта схема именования не является критически важной частью шаблона. Каталог сопоставляет ключ клиента с именем базы данных, поэтому можно использовать любое соглашение об именовании.

Получение сценариев для приложения SaaS Wingtip Tickets, использующего одну базу данных на клиент

Исходный код и сценарии приложения SaaS Wingtip Tickets доступны в репозитории GitHub WingtipTicketsSaaS-DbPerTenant. Инструкции по скачиванию и разблокированию сценариев приложения SaaS Wingtip Tickets см. в статье Общие рекомендации по работе с примерами приложений SaaS Wingtip Tickets.

Подробное пошаговое руководство по подготовке и каталогизации

Чтобы понять, как приложение Wingtip Tickets подготавливает новый клиент, добавьте точку останова и ознакомьтесь с пошаговым процессом подготовки клиента.

  1. В интегрированной среде сценариев PowerShell откройте файл ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1 и задайте следующие параметры:

    • $TenantName — имя нового мероприятия (например, Bushwillow Blues).
    • $VenueType — один из предопределенных типов мест проведения: blues, classicalmusic, dance, jazz, judo, motorracing, multipurpose, opera, rockmusic, soccer.
    • Для параметра $DemoScenario = установите значение 1, чтобы подготовить один клиент.
  2. Добавьте точку останова, поместив курсор в любом месте строки, содержащей New-Tenant `. Нажмите клавишу F9.

    Screenshot shows a script with New-Tenant highlighted for adding a breakpoint.

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

  4. После остановки выполнения сценария в точке останова нажмите клавишу F11, чтобы пошагово выполнить код.

    Debugging

Выполните трассировку сценария с помощью пунктов меню Отладка. Используйте клавиши F10 и F11, чтобы обходить вызываемые функции или переходить в них. Дополнительные сведения об отладке сценариев PowerShell см. в разделе Отладка сценариев в интегрированной среде сценариев Windows PowerShell.

Нет необходимости явно выполнять этот рабочий процесс. Здесь объясняется, как выполнить отладку сценария.

  • Импортируйте модуль CatalogAndDatabaseManagement.psm1. Он предоставляет каталог и абстракцию уровня клиента с помощью функций управления сегментами. Этот модуль инкапсулирует большую часть шаблона каталога. Его следует изучить.

  • Импортируйте модуль SubscriptionManagement.psm1. Он содержит функции для входа в Azure и выбора подписки Azure для работы.

  • Получите сведения о конфигурации. Перейдите к функции Get-Configuration (нажав клавишу F11) и посмотрите, как указывается конфигурация приложения. Здесь определены имена ресурсов и другие значения для приложения. Не изменяйте эти значения, пока не ознакомитесь со сценариями.

  • Получите объект каталога. Перейдите к функции Get-Catalog, которая составляет и возвращает объект каталога, используемый в сценарии более высокого уровня. При этом используются функции управления сегментами, импортируемые из AzureShardManagement.psm1. Объект каталога состоит из следующих элементов.

    • $catalogServerFullyQualifiedName создается с использованием стандартного корня, а также имени пользователя: catalog-<пользователь>.database.windows.net.
    • $catalogDatabaseName извлекается из файла конфигурации: tenantcatalog.
    • Объект $shardMapManager инициализируется из базы данных каталога.
    • Объект $shardMap инициализируется из карты сегментов tenantcatalog в базе данных каталога. Объект каталога составляется и возвращается. Он используется в сценарии более высокого уровня.
  • Вычислите новый ключ клиента. Для создания ключа клиента из имени клиента используется хэш-функция.

  • Проверьте наличие ключа клиента. Каталог проверяется, чтобы убедиться, что ключ доступен.

  • Подготовка базы данных клиента выполняется с помощью New-TenantDatabase. Используйте клавишу F11, чтобы перейти к функции и узнать, как база данных подготавливается с помощью шаблона Azure Resource Manager.

    Имя базы данных создается на основе имени клиента, чтобы было ясно, какие сегменты принадлежит определенному клиенту. Можно также использовать другие соглашения об именовании баз данных. При помощи шаблона Resource Manager создается база данных клиента. Для этого шаблон базы данных baseTenantDB копируется на сервер каталога. В качестве альтернативы можно создать базу данных и инициализировать ее, импортировав BACPAC-файл. Или можно выполнить сценарий инициализации из известного расположения.

    Шаблон Resource Manager находится в папке …\Learning Modules\Common\: tenantdatabasecopytemplate.json

  • Выполняется дальнейшая инициализация базы данных клиента. Добавляются имя и тип места проведения (клиент). Здесь можно также выполнить инициализацию других компонентов.

  • База данных клиента регистрируется в каталоге. Она регистрируется функцией Add-TenantDatabaseToCatalog с помощью ключа клиента. Используйте клавишу F11, чтобы просмотреть дополнительные сведения.

    • База данных каталога добавляется на карту сегментов (список известных баз данных).
    • Создается сопоставление, которое связывает значение ключа с сегментом.
    • В таблицу Tenants в каталоге добавляются дополнительные метаданные клиента (название места проведения). Таблица клиентов не входит в схему Shard Management и не устанавливается EDCL. В этой таблице показано, как базу данных каталога можно расширить для поддержки дополнительных данных приложения.

После завершения подготовки возобновляется выполнение исходного сценария Demo-ProvisionAndCatalog. В браузере откроется страница Events (События) нового клиента.

Events page

Подготовка пакета клиентов

В этом упражнении подготавливается пакет из 17 клиентов. Рекомендуем подготовить этот пакет клиентов перед переходом к другим руководствам по приложению SaaS Wingtip Tickets, использующему одну базу данных на клиент. Вам будет удобнее с ними работать при наличии достаточного количества баз данных.

  1. В интегрированной среде сценариев PowerShell откройте файл ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1. Измените значение параметра $DemoScenario на 3.

    • Для параметра $DemoScenario = установите значение 3, чтобы подготовить пакет клиентов.
  2. Нажмите клавишу F5, чтобы запустить скрипт.

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

Проверка успешного развертывания пакета клиентов

  • На портале Azure перейдите к списку серверов и откройте сервер tenants1. Щелкните Базы данных SQL и убедитесь, что в списке появились 17 дополнительных баз данных.

    Database list

Другие шаблоны подготовки

Далее представлены другие шаблоны подготовки, которые не рассматриваются в этом руководстве.

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

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

С помощью шаблона автоматической подготовки клиентское приложение или сценарий может отправить запрос на подготовку в очередь для обработки службой подготовки. Затем оно может опрашивать службу на предмет завершения. При использовании предварительной подготовки запросы обрабатываются быстро. Служба подготавливает базу данных для замены в фоновом режиме.

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

Из этого руководства вы узнали, как выполнять такие задачи:

  • Подготовка отдельного нового клиента.
  • Подготовка пакета дополнительных клиентов.
  • Получение сведений о подготовке клиентов и их регистрация в каталоге.

Ознакомьтесь с руководством по мониторингу производительности.

Дополнительные ресурсы