Architektura Service Fabric

Service Fabric je vytvořený s vrstvenými subsystémy. Tyto subsystémy umožňují psát aplikace, které jsou:

  • Vysoce dostupné
  • Škálovatelné
  • Zvládnutelné
  • Testovatelné

Následující diagram znázorňuje hlavní subsystémy Service Fabric.

Diagram architektury Service Fabric

V distribuovaném systému je schopnost zabezpečené komunikace mezi uzly v clusteru zásadní. Základem zásobníku je transportní subsystém, který zajišťuje zabezpečenou komunikaci mezi uzly. Nad transportní subsystém se nachází federační subsystém, který seskupuje různé uzly do jedné entity (pojmenované clustery), aby Service Fabric mohl zjišťovat chyby, provádět volby vedoucího procesu a poskytovat konzistentní směrování. Subsystém spolehlivosti, vrstvený nad subsystémem federace, zodpovídá za spolehlivost služeb Service Fabric prostřednictvím mechanismů, jako je replikace, správa prostředků a převzetí služeb při selhání. Federační subsystém je také základem subsystému hostování a aktivace, který spravuje životní cyklus aplikace na jednom uzlu. Subsystém správy spravuje životní cyklus aplikací a služeb. Subsystém testovatelnosti pomáhá vývojářům aplikací testovat služby prostřednictvím simulovaných chyb před a po nasazení aplikací a služeb do produkčního prostředí. Service Fabric umožňuje řešit umístění služeb prostřednictvím svého komunikačního subsystému. Modely programování aplikací vystavené vývojářům jsou nad těmito subsystémy vrstvené spolu s aplikačním modelem, aby bylo možné vytvářet nástroje.

Subsystém přenosů

Transportní subsystém implementuje komunikační kanál datagramu typu point-to-point. Tento kanál se používá ke komunikaci v rámci clusterů Service Fabric a ke komunikaci mezi clusterem Service Fabric a klienty. Podporuje jednosměrné komunikační vzory a vzorce komunikace mezi požadavky a odpověďmi, které poskytují základ pro implementaci všesměrového vysílání a vícesměrového vysílání ve vrstvě federace. Transportní subsystém zabezpečuje komunikaci pomocí certifikátů X509 nebo zabezpečení Windows. Tento subsystém používá interně Service Fabric a není přímo přístupný vývojářům pro programování aplikací.

Subsystém federace

Abyste mohli uvažovat o sadě uzlů v distribuovaném systému, musíte mít konzistentní přehled o systému. Federační subsystém používá primitivy komunikace poskytované transportním subsystémem a spojuje různé uzly do jediného sjednoceného clusteru, o který může uvažovat. Poskytuje primitiva distribuovaných systémů, které potřebují ostatní subsystémy – detekci selhání, volbu vedení a konzistentní směrování. Federační subsystém je postavený na distribuovaných hashovacích tabulkách s 128bitovým prostorem tokenů. Subsystém vytvoří topologii okruhu nad uzly, přičemž každému uzlu v okruhu je přidělena podmnožina prostoru tokenů pro vlastnictví. Pro detekci selhání vrstva používá mechanismus pronájmu založený na tepu a rozhodčím řízení. Federační subsystém také prostřednictvím složitých protokolů spojení a odchodů zaručuje, že v každém okamžiku existuje pouze jeden vlastník tokenu. To poskytuje volby vedoucího a konzistentní záruky směrování.

Subsystém spolehlivost

Subsystém spolehlivosti poskytuje mechanismus, který umožňuje zajistit vysokou dostupnost služby Service Fabric pomocí replikátoru, Správce převzetí služeb při selhání a Nástroje pro vyrovnávání prostředků.

  • Replikátor zajišťuje, aby se změny stavu primární repliky služby automaticky replikovaly do sekundárních replik a zachovaly konzistenci mezi primární a sekundární replikou v sadě replik služby. Replikátor zodpovídá za správu kvora mezi replikami v sadě replik. Komunikuje s jednotkou převzetí služeb při selhání, aby získal seznam operací, které se mají replikovat, a agent rekonfigurace mu poskytne konfiguraci sady replik. Tato konfigurace určuje, které repliky je potřeba replikovat operace. Service Fabric poskytuje výchozí replikátor s názvem Replikátor prostředků infrastruktury, který může rozhraní API programovacího modelu použít k zajištění vysoké dostupnosti a spolehlivosti stavu služby.
  • Správce převzetí služeb při selhání zajišťuje, aby se při přidání nebo odebrání uzlů do clusteru zatížení automaticky znovu redistribuoval mezi dostupné uzly. Pokud uzel v clusteru selže, cluster automaticky překonfiguruje repliky služby tak, aby se zachovala dostupnost.
  • Resource Manager umístí repliky služby mezi domény selhání v clusteru a zajistí, aby všechny jednotky převzetí služeb při selhání byly funkční. Resource Manager také vyrovnává prostředky služby napříč základním sdíleným fondem uzlů clusteru, aby bylo dosaženo optimální rovnoměrné distribuce zatížení.

Subsystém správy

Subsystém správy poskytuje kompletní správu životního cyklu služeb a aplikací. Rutiny PowerShellu a rozhraní API pro správu umožňují zřizovat, nasazovat, opravovat, upgradovat a zřizovat aplikace bez ztráty dostupnosti. Subsystém správy to provádí prostřednictvím následujících služeb.

  • Správce clusteru: Jedná se o primární službu, která komunikuje se Správcem převzetí služeb při selhání ze spolehlivosti a umísťuje aplikace na uzly na základě omezení umístění služby. Resource Manager v subsystému převzetí služeb při selhání zajišťuje, že omezení nebudou nikdy porušena. Správce clusteru spravuje životní cyklus aplikací od zřízení po zrušení zřízení. Integruje se se správcem stavu, aby se zajistilo, že během upgradů neztratí dostupnost aplikace z hlediska sémantického stavu.
  • Správce stavu: Tato služba umožňuje monitorování stavu aplikací, služeb a entit clusteru. Entity clusteru (například uzly, oddíly služeb a repliky) můžou hlásit informace o stavu, které se pak agregují do centralizovaného úložiště stavu. Tyto informace o stavu poskytují celkový snímek stavu k určitému bodu v čase služeb a uzlů distribuovaných napříč několika uzly v clusteru a umožňují provádět potřebné nápravné akce. Rozhraní API pro dotazy na stav umožňují dotazovat se na události stavu hlášené subsystému stavu. Rozhraní API pro dotazy na stav vrací nezpracovaná data o stavu uložená v úložišti stavu nebo agregovaná a interpretovaná data o stavu pro konkrétní entitu clusteru.
  • Úložiště imagí: Tato služba poskytuje úložiště a distribuci binárních souborů aplikace. Tato služba poskytuje jednoduché distribuované úložiště souborů, do kterého se aplikace nahrávají a stáhnou z.

Subsystém hostování

Správce clusteru informuje hostitelský subsystém (spuštěný na každém uzlu), které služby musí spravovat pro konkrétní uzel. Hostitelský subsystém pak spravuje životní cyklus aplikace na daném uzlu. Komunikuje se součástmi spolehlivosti a stavu, aby zajistil správné umístění replik a jejich stav.

Komunikační subsystém

Tento subsystém poskytuje spolehlivé zasílání zpráv v rámci clusteru a zjišťování služeb prostřednictvím služby Pojmenování. Služba pojmenování překládá názvy služeb do umístění v clusteru a umožňuje uživatelům spravovat názvy a vlastnosti služeb. Pomocí služby Pojmenování můžou klienti bezpečně komunikovat s libovolným uzlem v clusteru za účelem překladu názvu služby a načtení metadat služby. Pomocí jednoduchého klientského rozhraní API pro vytváření názvů můžou uživatelé Service Fabric vyvíjet služby a klienty schopné přeložit aktuální umístění v síti bez ohledu na dynamiku uzlů nebo změnu velikosti clusteru.

Subsystém testovatelnosti

Testovatelnost je sada nástrojů speciálně navržených pro testování služeb založených na Service Fabric. Nástroje umožňují vývojáři snadno vyvolat smysluplné chyby a spustit testovací scénáře, aby mohli provádět a ověřovat řadu stavů a přechodů, které bude služba po celou dobu své životnosti zažívat, a to vše řízeným a bezpečným způsobem. Testovatelnost také poskytuje mechanismus pro spouštění delších testů, které můžou iterovat různými možnými selháními, aniž by došlo ke ztrátě dostupnosti. Tím získáte testovací prostředí v produkčním prostředí.