Architektura Service Fabric
Service Fabric je sestavený s vrstvenými subsystémy. Tyto subsystémy umožňují psát aplikace, které jsou:
- Vysoce dostupné
- Škálovatelné
- Zvládnutelný
- Prověřitelný
Následující diagram znázorňuje hlavní subsystémy Service Fabric.
V distribuovaném systému je zásadní schopnost bezpečně komunikovat mezi uzly v clusteru. Základem zásobníku je transportní subsystém, který zajišťuje zabezpečenou komunikaci mezi uzly. Nad subsystémem přenosu je subsystém federace, který clusteruje různé uzly do jedné entity (pojmenované clustery), aby Service Fabric mohl detekovat selhání, provádět volby vedoucího procesu a poskytovat konzistentní směrování. Subsystém spolehlivosti, který je 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 také vychází z hostitelského a aktivačního subsystému, který spravuje životní cyklus aplikace na jednom uzlu. Subsystém pro správu spravuje životní cyklus aplikací a služeb. Subsystém testovatelnosti pomáhá vývojářům aplikací testovat své služby prostřednictvím simulovaných chyb před a po nasazení aplikací a služeb do produkčních prostředí. Service Fabric poskytuje možnost překládat umístění služeb prostřednictvím svého komunikačního subsystému. Programovací modely aplikací vystavené vývojářům jsou vrstvené nad těmito subsystémy spolu s aplikačním modelem, který umožňuje nástroje.
Subsystém přenosu
Subsystém přenosu implementuje komunikační kanál datagramu typu point-to-point. Tento kanál slouží 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 s požadavky, 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í systému Windows. Tento subsystém používá Service Fabric interně a není přímo přístupný vývojářům pro programování aplikací.
Federační subsystém
Abyste mohli zdůvodnět sadu 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é subsystémem přenosu a stehuje 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 – zjišťování selhání, volby vedoucího serveru a konzistentní směrování. Federační subsystém je založený na distribuovaných hashovacích tabulkách s 128bitovým prostorem tokenů. Subsystém vytvoří nad uzly kruhovou topologii, přičemž každému uzlu v okruhu je přidělena podmnožina prostoru tokenu pro vlastnictví. Pro detekci selhání používá vrstva mechanismus leasingu založený na srdečním nátěšení a rozhodčím řízení. Federační subsystém také zaručuje prostřednictvím složitých protokolů spojení a odletů, že v každém okamžiku existuje pouze jeden vlastník tokenu. To poskytuje záruky volby vedoucího vedení a konzistentního směrování.
Subsystém spolehlivosti
Subsystém spolehlivosti poskytuje mechanismus pro zajištění vysoké dostupnosti 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 v primární replice služby automaticky replikovaly do sekundárních replik a zachovaly konzistenci mezi primárními a sekundárními replikami 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 ho poskytuje konfiguraci sady replik. Tato konfigurace označuje, které repliky je potřeba replikovat operace. Service Fabric poskytuje výchozí replikátor s názvem Fabric Replicator, 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í zajistí, že se při přidání nebo odebrání uzlů z clusteru zatížení automaticky redistribuuje mezi dostupné uzly. Pokud uzel v clusteru selže, cluster automaticky překonfiguruje repliky služby tak, aby zachovala dostupnost.
- Resource Manager umístí repliky služeb mezi domény selhání v clusteru a zajistí provoz všech jednotek převzetí služeb při selhání. Resource Manager také vyrovnává prostředky služeb napříč podkladovým sdíleným fondem uzlů clusteru, aby bylo dosaženo optimální jednotné distribuce zatížení.
Subsystém správy
Subsystém pro správu poskytuje kompletní správu služeb a životního cyklu 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 pro správu 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 přerušena. Správce clusteru spravuje životní cyklus aplikací od zřízení po zrušení zřízení. Integruje se se správcem stavu, aby se během upgradu neztratila 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 služeb a uzlů distribuovaných v několika uzlech v clusteru k určitému bodu v čase a umožňuje provádět potřebné opravné akce. Rozhraní API pro dotazy na stav umožňují dotazovat se na události stavu hlášené do subsystému stavu. Rozhraní API dotazu na stav vrací nezpracovaná data o stavu uložená v úložišti stavu nebo agregovaná 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 nahrají a stáhnou.
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 v daném uzlu. Komunikuje se součástmi spolehlivosti a stavu, aby se zajistilo, že repliky jsou správně umístěné a v pořádku.
Komunikační subsystém
Tento subsystém poskytuje spolehlivé zasílání zpráv v rámci zjišťování clusteru a 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 jakýmkoli uzlem v clusteru za účelem překladu názvu služby a načtení metadat služby. Pomocí jednoduchého rozhraní API klienta pojmenování můžou uživatelé Service Fabric vyvíjet služby a klienty schopné přeložit aktuální síťové umístění bez ohledu na dynamismus uzlu 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ářům snadno vyvolat smysluplné chyby a spouštět testovací scénáře, aby si procvičily a ověřily počet stavů a přechodů, které služba bude mít po celou dobu životnosti, a to vše řízeným a bezpečným způsobem. Testovatelnost také poskytuje mechanismus pro spouštění delších testů, které mohou iterovat různými možnými selháními bez ztráty dostupnosti. To vám poskytne testovací prostředí v produkčním prostředí.