Dela via


Stöd för flera kluster

Stöd för flera kluster har tagits bort i v2. Dokumentationen nedan refererar till Orleans v1. Orleans v.1.3.0 har lagt till stöd för att federera flera Orleans kluster till ett löst anslutet multikluster som fungerar som en enda tjänst. Flerkluster underlättar geo-distribution som en tjänst, dvs. gör det enklare att köra ett Orleans program i flera datacenter runt om i världen. Dessutom kan ett multikluster köras i ett enda datacenter för att få bättre fel och prestandaisolering.

Alla mekanismer är utformade med särskild uppmärksamhet på:

  1. Minimera kommunikationen mellan kluster.
  2. Låt varje kluster köras autonomt även om andra kluster misslyckas eller blir oåtkomliga.

Konfiguration och åtgärd

Nedan dokumenterar vi hur du konfigurerar och använder ett multikluster.

Kommunikation. Kluster kommunicerar via samma silo-till-silo-anslutningar som används i ett kluster. För att utbyta status och konfigurationsinformation använder kluster en skvallermekanism och skvallerkanalimplementeringar.

Silokonfiguration. Silos måste konfigureras så att de vet vilket kluster de tillhör (varje kluster identifieras av en unik sträng). Dessutom måste varje silo konfigureras med anslutningssträng som gör att de kan ansluta till en eller flera skvallerkanaler vid start.

Konfigurationsinmatning för flera kluster. Vid körning kan tjänstoperatören ange och/eller ändra konfigurationen för flera kluster, som innehåller en lista över kluster-ID:er, för att ange vilka kluster som ingår i det aktuella flerklustret. Detta görs genom att anropa hanteringsintervallet i något av klustren.

Korn för flera kluster

Nedan dokumenterar vi hur du använder funktioner för flera kluster på programnivå.

Global-Single-Instance Grains. Utvecklare kan ange när och hur kluster ska samordna sina kornkataloger för en viss kornklass. Det GlobalSingleInstanceAttribute innebär att vi vill ha samma beteende som när du kör Orleans i ett enda globalt kluster: det vill säga dirigera alla anrop till en enda aktivering av kornet. Omvänt OneInstancePerClusterAttribute anger att varje kluster kan ha sin oberoende aktivering. Detta är lämpligt om kommunikationen mellan kluster är oönstrad.

Loggvyns korn (inte i v.1.3.0). En särskild typ av korn som använder ett nytt API, liknande händelsekällor, för synkronisering eller beständigt korntillstånd. Den kan användas för att automatiskt och effektivt synkronisera tillståndet för ett korn mellan kluster och med lagring. Eftersom dess synkroniseringsalgoritmer är säkra att använda med reentrant-korn och är optimerade för att använda batchbearbetning och replikering, kan den prestera bättre än standardintervall när ett korn används ofta i flera kluster och/eller när det skrivs till lagring ofta. Stöd för loggvisningsintervall är inte en del av huvudgrenen ännu. Vi har en förhandsversion med exempel och lite dokumentation i grenengeo-orleans. Den utvärderas för närvarande i produktion av en tidig användare.