Najlepsze rozwiązania dotyczące projektowania aplikacji usługi Azure Service Fabric
Ten artykuł zawiera wskazówki dotyczące tworzenia aplikacji i usług w usłudze Azure Service Fabric.
Zapoznaj się z usługą Service Fabric
- Przeczytaj artykuł So you want to learn about Service Fabric? (Aby dowiedzieć się więcej o usłudze Service Fabric?
- Przeczytaj o scenariuszach aplikacji usługi Service Fabric.
- Zapoznaj się z wyborami modelu programowania, czytając omówienie modelu programowania usługi Service Fabric.
Wskazówki dotyczące projektowania aplikacji
Zapoznaj się z ogólną architekturą aplikacji usługi Service Fabric i ich zagadnieniami dotyczącymi projektowania.
Wybieranie bramy interfejsu API
Użyj usługi bramy interfejsu API, która komunikuje się z usługami zaplecza, które następnie można skalować w poziomie. Najczęściej używane usługi bramy interfejsu API to:
Usługa Azure API Management zintegrowana z usługą Service Fabric.
Zwrotny serwer proxy træfik przy użyciu dostawcy usługi Azure Service Fabric.
aplikacja systemu Azure Gateway.
Uwaga
aplikacja systemu Azure Gateway nie jest bezpośrednio zintegrowana z usługą Service Fabric. Usługa Azure API Management jest zazwyczaj preferowanym wyborem.
Własna niestandardowa brama aplikacji internetowej ASP.NET Core .
Usługi bezstanowe
Zalecamy, aby zawsze zacząć od utworzenia usług bezstanowych przy użyciu usług Reliable Services i przechowywania stanu w bazie danych platformy Azure, usłudze Azure Cosmos DB lub usłudze Azure Storage. Stan zewnętrzny to bardziej znane podejście dla większości deweloperów. Takie podejście umożliwia również korzystanie z możliwości zapytań w sklepie.
Kiedy używać usług stanowych
Rozważ usługi stanowe, gdy masz scenariusz z małym opóźnieniem i musisz zachować dane blisko obliczeń. Niektóre przykładowe scenariusze obejmują urządzenia cyfrowej reprezentacji bliźniaczej IoT, stan gry, stan sesji, buforowanie danych z bazy danych oraz długotrwałe przepływy pracy do śledzenia wywołań do innych usług.
Zdecyduj o przedziale czasu przechowywania danych:
- Dane buforowane. Użyj buforowania, gdy opóźnienie w magazynach zewnętrznych jest problemem. Użyj stanowej usługi jako własnej pamięci podręcznej danych lub rozważ użycie rozproszonej pamięci podręcznej usługi Service Fabric typu open source. W tym scenariuszu nie musisz się martwić, jeśli utracisz wszystkie dane w pamięci podręcznej.
- Dane związane z czasem. W tym scenariuszu musisz przechowywać dane zbliżone do obliczeń przez pewien czas w celu opóźnienia, ale możesz sobie pozwolić na utratę danych w przypadku awarii. Na przykład w wielu rozwiązaniach IoT dane muszą być zbliżone do obliczeń, na przykład gdy jest obliczana średnia temperatura w ciągu ostatnich kilku dni, ale jeśli te dane zostaną utracone, określone zarejestrowane punkty danych nie są tak ważne. Ponadto w tym scenariuszu zwykle nie dbasz o tworzenie kopii zapasowych poszczególnych punktów danych. Kopię zapasową obliczanych wartości średnich, które są okresowo zapisywane w magazynie zewnętrznym.
- Dane długoterminowe. Niezawodne kolekcje mogą trwale przechowywać dane. Jednak w takim przypadku należy przygotować się do odzyskiwania po awarii, w tym skonfigurować okresowe zasady tworzenia kopii zapasowych dla klastrów. W efekcie skonfigurujesz, co się stanie, jeśli klaster zostanie zniszczony w awarii, w którym trzeba utworzyć nowy klaster oraz jak wdrożyć nowe wystąpienia aplikacji i odzyskać dane z najnowszej kopii zapasowej.
Oszczędzaj koszty i poprawiaj dostępność:
- Możesz obniżyć koszty, korzystając z usług stanowych, ponieważ nie ponosisz kosztów dostępu do danych i transakcji z magazynu zdalnego, a ponieważ nie musisz używać innej usługi, takiej jak Azure Cache for Redis.
- Korzystanie z usług stanowych głównie w przypadku magazynu, a nie w przypadku obliczeń, jest kosztowne i nie zalecamy jej. Pomyśl o usługach stanowych jako obliczeniach przy użyciu taniego magazynu lokalnego.
- Usuwając zależności od innych usług, możesz zwiększyć dostępność usługi. Zarządzanie stanem za pomocą wysokiej dostępności w klastrze izoluje cię od innych problemów z przestojami lub opóźnieniami usługi.
Jak pracować z usługami Reliable Services
Usługa Service Fabric Reliable Services umożliwia łatwe tworzenie usług bezstanowych i stanowych. Aby uzyskać więcej informacji, zobacz wprowadzenie do usług Reliable Services.
- Zawsze należy przestrzegać tokenu anulowania w
RunAsync()
metodzie dla usług bezstanowych i stanowych orazChangeRole()
metody dla usług stanowych. Jeśli tego nie zrobisz, usługa Service Fabric nie wie, czy twoja usługa może zostać zamknięta. Jeśli na przykład nie honorujesz tokenu anulowania, może wystąpić znacznie dłuższy czas uaktualniania aplikacji. - Otwieranie i zamykanie odbiorników komunikacji w odpowiednim czasie i honorowanie tokenów anulowania.
- Nigdy nie mieszaj kodu synchronizacji za pomocą kodu asynchronicznego. Na przykład nie używaj
.GetAwaiter().GetResult()
w wywołaniach asynchronicznych. Użyj asynchronicznego całego stosu wywołań.
Jak pracować z elementami Reliable Actors
Usługa Service Fabric Reliable Actors umożliwia łatwe tworzenie stanowych, wirtualnych aktorów. Aby uzyskać więcej informacji, zobacz wprowadzenie do funkcji Reliable Actors.
- Poważnie rozważ użycie komunikatów pub/sub między aktorami w celu skalowania aplikacji. Narzędzia, które zapewniają tę usługę, obejmują open source SoCreate Service Fabric Pub/Sub i Azure Service Bus.
- Umożliw, aby aktor był tak szczegółowy, jak to możliwe.
- Zarządzanie cyklem życia aktora. Usuń aktorów, jeśli nie zamierzasz ich ponownie używać. Usuwanie niepotrzebnych aktorów jest szczególnie ważne w przypadku korzystania z dostawcy stanu lotnego, ponieważ cały stan jest przechowywany w pamięci.
- Ze względu na ich współbieżność opartą na kolei aktorzy najlepiej używać jako niezależnych obiektów. Nie twórz grafów wielu aktorów, synchronicznych wywołań metod (z których każdy najprawdopodobniej staje się oddzielnym wywołaniem sieciowym) ani nie tworzy żądań aktora cyklicznego. Będą one znacząco wpływać na wydajność i skalę.
- Nie mieszaj kodu synchronizacji za pomocą kodu asynchronicznego. Spójnie używaj asynchronicznego, aby zapobiec problemom z wydajnością.
- Nie uruchamiaj długotrwałych połączeń w aktorach. Długotrwałe wywołania blokują inne wywołania tego samego aktora ze względu na współbieżność opartą na kolei.
- Jeśli komunikujesz się z innymi usługami przy użyciu komunikacji z usługą Service Fabric i tworzysz usługę , utwórz fabrykę
ServiceProxyFactory
na poziomie usługi aktora, a nie na poziomie aktora.
Diagnostyka aplikacji
Szczegółowe informacje na temat dodawania rejestrowania aplikacji w wywołaniach usługi. Pomoże to zdiagnozować scenariusze, w których usługi siebie nazywają. Na przykład gdy A wywołuje funkcję B wywołuje wywołania C, wywołanie może zakończyć się niepowodzeniem w dowolnym miejscu. Jeśli nie masz wystarczającej ilości rejestrowania, błędy są trudne do zdiagnozowania. Jeśli usługi rejestrują zbyt wiele z powodu woluminów wywołań, pamiętaj, aby co najmniej rejestrować błędy i ostrzeżenia.
Wskazówki dotyczące projektowania na platformie Azure
Odwiedź centrum architektury platformy Azure, aby uzyskać wskazówki dotyczące projektowania dotyczące tworzenia mikrousług na platformie Azure.
Odwiedź stronę Rozpoczynanie pracy z platformą Azure for Gaming , aby uzyskać wskazówki dotyczące projektowania dotyczące korzystania z usługi Service Fabric w usługach gier.