Udostępnij za pośrednictwem


Implementowanie odpornych aplikacji

Porada

Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET, dostępnej na platformie .NET Docs lub jako bezpłatnego pliku PDF z możliwością pobrania, który można odczytać w trybie offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Twoje mikrousługi i aplikacje oparte na chmurze muszą obejmować częściowe błędy, które z pewnością wystąpią w końcu. Musisz zaprojektować aplikację tak, aby mogła być odporna na te częściowe awarie.

Odporność to możliwość odzyskiwania po awariach i kontynuowanie działania. Nie chodzi o unikanie awarii, ale akceptowanie faktu, że awarie wystąpią i reagowanie na nie w sposób, który pozwala uniknąć przestoju lub utraty danych. Celem odporności jest zwrócenie aplikacji do w pełni działającego stanu po awarii.

Jest to wystarczająco trudne, aby projektować i wdrażać aplikację opartą na mikrousługach. Należy jednak również zachować działanie aplikacji w środowisku, w którym pewna jest pewna awaria. W związku z tym aplikacja powinna być odporna. Należy go zaprojektować tak, aby poradzić sobie z częściowymi awariami, takimi jak awarie sieci lub węzły lub maszyny wirtualne, które uległy awarii w chmurze. Nawet mikrousługi (kontenery) przenoszone do innego węzła w klastrze mogą powodować sporadyczne krótkie błędy w aplikacji.

Wiele poszczególnych składników aplikacji powinno również zawierać funkcje monitorowania kondycji. Postępując zgodnie z wytycznymi w tym rozdziale, możesz utworzyć aplikację, która może działać bezproblemowo pomimo przejściowych przestojów lub normalnych czkawek występujących w złożonych i opartych na chmurze wdrożeniach.

Ważne

eShopOnContainer używała biblioteki Polly do implementowania odporności przy użyciu klientów typed do wersji 3.0.0.

Począwszy od wersji 3.0.0, odporność wywołań HTTP jest implementowana przy użyciu siatki konsolidatora Linkerd, która obsługuje ponawianie prób w sposób przezroczysty i konfigurowalny w klastrze Kubernetes bez konieczności obsługi tych problemów w kodzie.

Biblioteka Polly jest nadal używana do dodawania odporności na połączenia bazy danych, specjalnie podczas uruchamiania usług.

Ostrzeżenie

Wszystkie przykłady kodu i obrazy w tej sekcji były prawidłowe przed użyciem konsolidatora Linkerd i nie są aktualizowane w celu odzwierciedlenia bieżącego rzeczywistego kodu. Więc mają sens w kontekście tej sekcji.