Sdílet prostřednictvím


Implementace odolných aplikací

Tip

Tento obsah je výňatek z eBooku, architektury mikroslužeb .NET pro kontejnerizované aplikace .NET, které jsou k dispozici na .NET Docs nebo jako zdarma ke stažení PDF, které je možné číst offline.

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

Vaše mikroslužby a cloudové aplikace musí přijmout částečné selhání, ke kterým dojde nakonec. Aplikaci musíte navrhnout tak, aby byla odolná vůči těmto částečným selháním.

Odolnost je schopnost zotavit se z selhání a dál fungovat. Nejedná se o zabránění selháním, ale přijetí skutečnosti, že k chybám dojde a odpovídá na ně způsobem, který zabrání výpadkům nebo ztrátě dat. Cílem odolnosti je vrátit aplikaci do plně funkčního stavu po selhání.

Je dost náročné navrhnout a nasadit aplikaci založenou na mikroslužbách. Musíte ale také udržovat aplikaci spuštěnou v prostředí, kde je určitá chyba jistá. Proto by vaše aplikace měla být odolná. Měla by být navržena tak, aby se vyrovnala s částečnými selháními, jako jsou výpadky sítě nebo uzly nebo virtuální počítače, které se v cloudu chybují. Dokonce i mikroslužby (kontejnery) přesunuté do jiného uzlu v rámci clusteru můžou způsobit přerušované krátké selhání v rámci aplikace.

Mnoho jednotlivých komponent vaší aplikace by také mělo zahrnovat funkce monitorování stavu. Podle pokynů v této kapitole můžete vytvořit aplikaci, která může hladce fungovat i přes přechodné výpadky nebo normální chytání, ke kterým dochází v složitých a cloudových nasazeních.

Důležité

eShopOnContainer používal knihovnu Polly k implementaci odolnosti pomocí typed klientů až do verze 3.0.0.

Od verze 3.0.0 se odolnost volání HTTP implementuje pomocí sítě Linkerd, která zpracovává opakování transparentním a konfigurovatelným způsobem v clusteru Kubernetes, aniž by bylo nutné tyto obavy řešit v kódu.

Knihovna Polly se stále používá k přidání odolnosti k databázovým připojením, zejména při spouštění služeb.

Upozornění

Všechny ukázky kódu a obrázky v této části byly platné před použitím Linkerd a nebyly aktualizovány tak, aby odrážely aktuální skutečný kód. Proto mají smysl v kontextu této části.