Wdrażanie i eksplorowanie podzielonej na fragmenty aplikacji z wieloma dzierżawami
Dotyczy: Azure SQL Database
W tym samouczku wdrożysz i zapoznasz się z przykładową wielodostępną aplikacją SaaS o nazwie Wingtip Tickets. Aplikacja Wingtip Tickets została zaprojektowana w celu zaprezentowania funkcji usługi Azure SQL Database, które upraszczają implementację scenariuszy SaaS.
Ta implementacja aplikacji Wingtip Tickets używa wzorca bazy danych z wieloma dzierżawami podzielonego na fragmenty. Fragmentowanie jest według identyfikatora dzierżawy. Dane dzierżawy są dystrybuowane do określonej bazy danych zgodnie z wartościami identyfikatora dzierżawy.
Ten wzorzec bazy danych umożliwia przechowywanie co najmniej jednej dzierżawy w poszczególnych fragmentach lub bazie danych. Optymalizację pod kątem najniższych kosztów można zoptymalizować, mając każdą bazę danych udostępnioną przez wiele dzierżaw. Możesz też zoptymalizować pod kątem izolacji, mając każdą bazę danych tylko jedną dzierżawę. Wybór optymalizacji można dokonać niezależnie dla każdej konkretnej dzierżawy. Możesz dokonać wyboru, gdy dzierżawa jest najpierw przechowywana, lub możesz zmienić zdanie później. Aplikacja została zaprojektowana tak, aby działała dobrze.
Szybkie wdrażanie aplikacji
Aplikacja działa w chmurze platformy Azure i korzysta z usługi Azure SQL Database. W poniższej sekcji wdrażania jest wyświetlany niebieski przycisk Wdróż na platformie Azure . Po naciśnięciu przycisku aplikacja zostanie w pełni wdrożona w ramach subskrypcji platformy Azure w ciągu pięciu minut. Masz pełny dostęp do pracy z poszczególnymi składnikami aplikacji.
Aplikacja jest wdrażana z danymi dla trzech przykładowych dzierżaw. Dzierżawy są przechowywane razem w jednej wielodostępnej bazie danych.
Każdy może pobrać kod źródłowy języka C# i programu PowerShell dla biletów Wingtip z repozytorium GitHub.
Dowiedz się w tym samouczku
- Jak wdrożyć aplikację SaaS Wingtip Tickets.
- Gdzie uzyskać kod źródłowy aplikacji i skrypty zarządzania.
- Informacje o serwerach i bazach danych tworzących aplikację.
- Sposób mapowania dzierżaw na dane za pomocą wykazu.
- Jak aprowizować nową dzierżawę.
- Jak monitorować aktywność dzierżawy w aplikacji.
Dostępna jest seria powiązanych samouczków, które opierają się na tym początkowym wdrożeniu. W samouczkach przedstawiono szereg wzorców projektowania i zarządzania SaaS. Podczas pracy z samouczkami zachęcamy do przejrzenia podanych skryptów, aby zobaczyć, jak są implementowane różne wzorce SaaS.
Wymagania wstępne
Do wykonania kroków tego samouczka niezbędne jest spełnienie następujących wymagań wstępnych:
- Zainstalowano najnowszą wersję programu Azure PowerShell. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do programu Azure PowerShell.
Wdrażanie aplikacji Wingtip Tickets
Planowanie nazw
W krokach tej sekcji należy podać wartość użytkownika , która służy do zapewnienia, że nazwy zasobów są globalnie unikatowe, oraz nazwę grupy zasobów, która zawiera wszystkie zasoby utworzone przez wdrożenie aplikacji. Dla osoby o nazwie Ann Finley sugerujemy:
- Użytkownik: af1 (Ich inicjały oraz cyfra. Jeśli wdrażasz aplikację po raz drugi, użyj innej wartości (np. af2).
- Grupa zasobów: wingtip-mt-af1 (wingtip-mt wskazuje, że jest to aplikacja z wieloma dzierżawami podzielonymi na fragmenty. Dołączanie nazwy użytkownika af1 koreluje nazwę grupy zasobów z nazwami zawartych w nim zasobów).
Wybierz teraz swoje nazwy i zapisz je.
Kroki
Kliknij następujący niebieski przycisk Wdróż na platformie Azure .
Wprowadź wymagane wartości parametrów dla wdrożenia.
Ważne
W tym pokazie nie należy używać żadnych wstępnie istniejących grup zasobów, serwerów ani pul. Zamiast tego wybierz pozycję Utwórz nową grupę zasobów. Po zakończeniu pracy z aplikacją usuń tę grupę zasobów, aby zatrzymać ich rozliczanie. Nie używaj tej aplikacji ani żadnych tworzonych zasobów dla środowiska produkcyjnego. Niektóre aspekty uwierzytelniania i ustawienia zapory serwera są celowo niezabezpieczone w aplikacji, aby ułatwić pokaz.
- W obszarze Grupa zasobów — wybierz pozycję Utwórz nową, a następnie podaj nazwę grupy zasobów (uwzględniana wielkość liter).
- Wybierz lokalizację z listy rozwijanej.
- W polu Użytkownik — zalecamy wybranie krótkiej wartości Użytkownik .
- W obszarze Grupa zasobów — wybierz pozycję Utwórz nową, a następnie podaj nazwę grupy zasobów (uwzględniana wielkość liter).
Wdróż aplikację.
- Kliknij, aby zaakceptować warunki i postanowienia.
- Kliknij pozycję Kup.
Monitoruj stan wdrożenia, klikając pozycję Powiadomienia, która jest ikoną dzwonka po prawej stronie pola wyszukiwania. Wdrażanie aplikacji Wingtip trwa około pięciu minut.
Pobieranie i odblokowywanie skryptów zarządzania
Podczas wdrażania aplikacji pobierz kod źródłowy aplikacji i skrypty zarządzania.
Uwaga
Zawartość pliku wykonywalnego (skrypty, biblioteki DLL) może zostać zablokowana przez system Windows, gdy pliki zip są pobierane ze źródła zewnętrznego i wyodrębnione. Podczas wyodrębniania skryptów z pliku zip wykonaj następujące kroki, aby odblokować plik .zip przed wyodrębnieniem. Odblokowując plik .zip, upewnij się, że skrypty mogą być uruchamiane.
- Przejdź do repozytorium GitHub WingtipTicketsSaaS-MultiTenantDb.
- Kliknij pozycję Klonuj lub pobierz.
- Kliknij pozycję Pobierz plik ZIP i zapisz plik.
- Kliknij prawym przyciskiem myszy plik WingtipTicketsSaaS-MultiTenantDb-master.zip i wybierz polecenie Właściwości.
- Na karcie Ogólne wybierz pozycję Odblokuj, a następnie kliknij przycisk Zastosuj.
- Kliknij przycisk OK.
- Wyodrębnij pliki.
Skrypty znajdują się w pliku .. \WingtipTicketsSaaSaS-MultiTenantDb-master\Learning Modules\ folder.
Aktualizowanie pliku konfiguracji dla tego wdrożenia
Przed uruchomieniem skryptów ustaw wartości grupy zasobów i użytkowników w pliku UserConfig.psm1. Ustaw te zmienne na te same wartości, które zostały ustawione podczas wdrażania.
- Otwórz plik ...\Learning Modules\UserConfig.psm1 w środowisku PowerShell ISE.
- Zaktualizuj wartości ResourceGroupName i Name z określonymi wartościami wdrożenia (tylko w wierszach 10 i 11).
- Zapisz zmiany.
Wartości ustawione w tym pliku są używane przez wszystkie skrypty, dlatego ważne jest, aby były dokładne. Jeśli ponownie wdrożysz aplikację, musisz wybrać różne wartości dla pozycji Użytkownik i Grupa zasobów. Następnie ponownie zaktualizuj plik UserConfig.psm1 przy użyciu nowych wartości.
Uruchamianie aplikacji
W aplikacji Wingtip dzierżawy są miejscami. Miejscem może być sala koncertowa, klub sportowy lub dowolna inna lokalizacja, która organizuje wydarzenia. Miejsca rejestrują się w Wingtip jako klienci, a identyfikator dzierżawy jest generowany dla każdego miejsca. Każde miejsce wymienia swoje nadchodzące wydarzenia w Wingtip, aby opinia publiczna mogła kupić bilety na wydarzenia.
Każde miejsce pobiera spersonalizowaną aplikację internetową, aby wyświetlić listę swoich wydarzeń i sprzedawać bilety. Każda aplikacja internetowa jest niezależna i odizolowana od innych dzierżaw. Wewnętrznie w usłudze Azure SQL Database każde dane dla każdej dzierżawy są domyślnie przechowywane w podzielonej na fragmenty bazie danych z wieloma dzierżawami. Wszystkie dane są oznaczone identyfikatorem dzierżawy.
Centralna strona internetowa centrum zdarzeń zawiera listę linków do dzierżaw w danym wdrożeniu. Wykonaj następujące kroki, aby wyświetlić stronę internetową centrum zdarzeń i pojedynczą aplikację internetową:
Otwórz centrum zdarzeń w przeglądarce internetowej:
http://events.wingtip-mt.<user.trafficmanager.net> (Zastąp <użytkownika wartością użytkownika> wdrożenia).
Kliknij przycisk Fabrikam Jazz Club w Centrum zdarzeń.
Azure Traffic Manager
Aby kontrolować dystrybucję żądań przychodzących, aplikacja Wingtip używa usługi Azure Traffic Manager. Strona zdarzeń dla każdej dzierżawy zawiera nazwę dzierżawy w adresie URL. Każdy adres URL zawiera również konkretną wartość użytkownika. Każdy adres URL jest przestrzegany pokazanego formatu, wykonując następujące czynności:
- http://events.wingtip-mt.<user.trafficmanager.net/> fabrikamjazzclub
- Aplikacja zdarzeń analizuje nazwę dzierżawy z adresu URL. Nazwa dzierżawy to fabrikamjazzclub w poprzednim przykładowym adresie URL.
- Następnie aplikacja tworzy skróty nazwy dzierżawy, aby utworzyć klucz umożliwiający dostęp do katalogu przy użyciu zarządzania mapami fragmentów.
- Aplikacja znajduje klucz w wykazie i uzyskuje odpowiednią lokalizację bazy danych dzierżawy.
- Aplikacja używa informacji o lokalizacji do znajdowania i uzyskiwania dostępu do jednej bazy danych zawierającej wszystkie dane dzierżawy.
Centrum zdarzeń
- Centrum zdarzeń zawiera listę wszystkich dzierżaw zarejestrowanych w wykazie i ich miejsca.
- Centrum zdarzeń używa rozszerzonych metadanych w wykazie do pobierania nazwy dzierżawy skojarzonej z każdym mapowaniem w celu skonstruowania adresów URL.
W środowisku produkcyjnym zazwyczaj tworzy się rekord DNS CNAME, aby wskazywał domenę internetową firmy na profil usługi Traffic Manager.
Rozpoczęcie generowanie obciążenia baz danych dzierżawy
Teraz, gdy aplikacja jest wdrożona, umieśćmy ją w pracy! Skrypt Demo-LoadGenerator programu PowerShell uruchamia obciążenie uruchomione dla każdej dzierżawy. Rzeczywiste obciążenie wielu aplikacji SaaS jest zwykle sporadyczne i nieprzewidywalne. Aby zasymulować ten typ obciążenia, generator generuje obciążenie rozproszone we wszystkich dzierżawach. Obciążenie obejmuje losowe wzrosty w każdej dzierżawie występujące w losowych interwałach. Pojawianie się wzorca obciążenia trwa kilka minut, więc najlepiej pozwolić generatorowi działać przez co najmniej trzy lub cztery minuty przed monitorowaniem obciążenia.
- W programie PowerShell ISE otwórz skrypt ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1 .
- Naciśnij klawisz F5, aby uruchomić skrypt i generator obciążenia (na razie pozostaw bez zmian wartości domyślne parametrów).
Skrypt Demo-LoadGenerator.ps1 otwiera kolejną sesję programu PowerShell, w której działa generator obciążenia. Generator obciążenia jest uruchamiany w tej sesji jako zadanie pierwszego planu, które wywołuje zadania generowania obciążenia w tle, po jednym dla każdej dzierżawy.
Po uruchomieniu zadania pierwszego planu pozostaje w stanie wywoływania zadania. Zadanie uruchamia dodatkowe zadania w tle dla wszystkich nowych dzierżaw, które są następnie aprowizowania.
Zamknięcie sesji programu PowerShell powoduje zatrzymanie wszystkich zadań.
Możesz chcieć ponownie uruchomić sesję generatora obciążenia, aby użyć różnych wartości parametrów. Jeśli tak, zamknij sesję generowania programu PowerShell, a następnie uruchom ponownie plik Demo-LoadGenerator.ps1.
Aprowizuj nową dzierżawę w bazie danych podzielonej na fragmenty
Początkowe wdrożenie obejmuje trzy przykładowe dzierżawy w bazie danych Tenants1 . Utwórzmy inną dzierżawę i przyjrzyjmy się jej skutkom dla wdrożonej aplikacji. W tym kroku naciśnij jeden, aby utworzyć nową dzierżawę:
Otwórz plik ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 w środowisku PowerShell ISE.
Naciśnij F5 (nie F8), aby uruchomić skrypt (pozostaw wartości domyślne na razie).
Uwaga
Należy uruchomić skrypty programu PowerShell tylko przez naciśnięcie F5 , a nie przez naciśnięcie F8 , aby uruchomić wybraną część skryptu. Problem z F8 polega na tym, że zmienna $PSScriptRoot nie jest obliczana. Ta zmienna jest wymagana przez wiele skryptów do nawigowania po folderach, wywoływania innych skryptów lub importowania modułów.
Nowa dzierżawa Red Maple Racing jest dodawana do bazy danych Tenants1 i zarejestrowana w wykazie. W przeglądarce zostanie otwarta witryna zdarzeń sprzedaży biletów nowej dzierżawy:
Odśwież centrum zdarzeń, a nowa dzierżawa zostanie wyświetlona na liście.
Aprowizuj nową dzierżawę we własnej bazie danych
Model z wieloma dzierżawami podzielony na fragmenty umożliwia wybranie, czy aprowizować nową dzierżawę w bazie danych, która zawiera inne dzierżawy, czy do własnej bazy danych. Dzierżawa odizolowana we własnej bazie danych ma następujące korzyści:
- Wydajność bazy danych dzierżawy można zarządzać bez konieczności naruszenia z potrzebami innych dzierżaw.
- W razie potrzeby bazę danych można przywrócić do wcześniejszego punktu w czasie, ponieważ nie będzie to miało wpływu na inne dzierżawy.
Możesz umieścić klientów korzystających z bezpłatnej wersji próbnej lub klientów ekonomicznych w bazach danych z wieloma dzierżawami. Możesz umieścić każdą dzierżawę premium we własnej dedykowanej bazie danych. Jeśli tworzysz wiele baz danych zawierających tylko jedną dzierżawę, możesz zarządzać nimi zbiorczo w elastycznej puli, aby zoptymalizować koszty zasobów.
Następnie aprowizujemy inną dzierżawę, tym razem we własnej bazie danych:
W folderze ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 zmodyfikuj $TenantName do Salix Salsa, $VenueType tańczyć i $Scenario do 2.
Naciśnij F5 , aby ponownie uruchomić skrypt.
- Ta F5 aprowizuje nową dzierżawę w oddzielnej bazie danych. Baza danych i dzierżawa są zarejestrowane w wykazie. Następnie przeglądarka zostanie otwarta na stronie Zdarzenia dzierżawy.
- Przewiń stronę do dołu. Na banerze zobaczysz nazwę bazy danych, w której są przechowywane dane dzierżawy.
Odśwież centrum zdarzeń i dwie nowe dzierżawy są teraz wyświetlane na liście.
Eksplorowanie serwerów i baz danych dzierżaw
Teraz przyjrzymy się niektórym wdrożonym zasobom:
W witrynie Azure Portal przejdź do listy grup zasobów. Otwórz grupę zasobów utworzoną podczas wdrażania aplikacji.
Kliknij pozycję catalog-mt user server (Serwer użytkownika> catalog-mt<). Serwer wykazu zawiera dwie bazy danych o nazwie tenantcatalog i basetenantdb. Baza danych basetenantdb jest pustą bazą danych szablonów. Jest kopiowany do utworzenia nowej bazy danych dzierżawy, niezależnie od tego, czy jest używana dla wielu dzierżaw, czy tylko jednej dzierżawy.
Wróć do grupy zasobów i wybierz serwer tenants1-mt , który zawiera bazy danych dzierżawy.
- Baza danych tenants1 to wielodostępna baza danych, w której są przechowywane oryginalne trzy dzierżawy, a także pierwsza dodana dzierżawa. Jest on skonfigurowany jako 50 standardowej bazy danych DTU.
- Baza danych salixsalsa posiada salix Salsa miejsce tańca jako jedyna dzierżawa. Jest ona domyślnie skonfigurowana jako baza danych w wersji Standardowa z 50 jednostkami DTU.
Monitorowanie wydajności bazy danych
Jeśli generator obciążenia był uruchomiony przez kilka minut, wystarczająca ilość danych telemetrycznych jest dostępna, aby zapoznać się z możliwościami monitorowania bazy danych wbudowanymi w witrynę Azure Portal.
Przejdź do serwera użytkownika> tenants1-mt<, a następnie kliknij pozycję tenants1, aby wyświetlić wykorzystanie zasobów dla bazy danych, która ma cztery dzierżawy. Każda dzierżawa podlega sporadycznemu dużemu obciążeniu generatora obciążenia:
Wykres wykorzystania jednostek DTU ładnie ilustruje, jak baza danych z wieloma dzierżawami może obsługiwać nieprzewidywalne obciążenie w wielu dzierżawach. W takim przypadku generator obciążenia stosuje sporadyczne obciążenie około 30 jednostek DTU do każdej dzierżawy. To obciążenie odpowiada 60% wykorzystaniu bazy danych 50 jednostek DTU. Szczyty przekraczające 60% są wynikiem zastosowania obciążenia do więcej niż jednej dzierżawy w tym samym czasie.
Przejdź do serwera użytkownika> tenants1-mt<i kliknij bazę danych salixsalsa. W tej bazie danych widać wykorzystanie zasobów, które zawiera tylko jedną dzierżawę.
Generator obciążenia stosuje podobne obciążenie do każdej dzierżawy, niezależnie od bazy danych, w której znajduje się każda dzierżawa. W przypadku tylko jednej dzierżawy w bazie danych salixsalsa można zobaczyć, że baza danych może utrzymać znacznie wyższe obciążenie niż baza danych z kilkoma dzierżawami.
Alokacje zasobów różnią się w zależności od obciążenia
Czasami baza danych z wieloma dzierżawami wymaga większej ilości zasobów w celu uzyskania dobrej wydajności niż w przypadku bazy danych z jedną dzierżawą, ale nie zawsze. Optymalna alokacja zasobów zależy od określonych cech obciążenia dla dzierżaw w systemie.
Obciążenia generowane przez skrypt generatora obciążenia są przeznaczone tylko do celów ilustracyjnych.
Dodatkowe zasoby
Aby dowiedzieć się więcej o wielodostępnych aplikacjach SaaS, zobacz Wzorce projektowania dla wielodostępnych aplikacji SaaS.
Aby dowiedzieć się więcej o pulach elastycznych, zobacz:
Następne kroki
Ten samouczek zawiera informacje na temat wykonywania następujących czynności:
- Jak wdrożyć aplikację bazy danych SaaS z wieloma dzierżawami Wingtip Tickets.
- Informacje o serwerach i bazach danych tworzących aplikację.
- Dzierżawy są mapowane na dane z wykazem.
- Jak aprowizować nowe dzierżawy w wielodostępnej bazie danych i bazie danych z jedną dzierżawą.
- Jak wyświetlić wykorzystanie puli w celu monitorowania aktywności dzierżawy.
- Jak usunąć przykładowe zasoby, aby zatrzymać powiązane rozliczenia.
Teraz wypróbuj samouczek Aprowizuj i wykaz.