Wereldwijd gedistribueerde toepassingen met Cosmos DB

Cosmos DB
Traffic Manager

Oplossingsidee

Als u wilt dat we dit artikel uitbreiden met meer informatie, zoals mogelijke use cases, alternatieve services, implementatieoverwegingen of prijsinformatie, laat het ons dan weten met GitHub Feedback!

Garandeer toegang tot gebruikers over de hele wereld met de mogelijkheden voor hoge beschikbaarheid en lage latentie die zijn ingebouwd in de wereldwijde datacenters van Microsoft.

Architectuur

Architectuurdiagram
Download een SVG-versie van deze architectuur.

Gegevensstroom

  1. De gebruiker heeft toegang tot de toepassing via de toegewezen client.
  2. Azure Traffic Manager routeert de verbinding van de gebruiker naar de beste locatie voor toegang tot de toepassing, op basis van één of geneste routeringsprofielen.
  3. In de landregio waar de toepassing wordt gehost, worden de sessie en de verbinding naar de database verwerkt.
  4. Deze toepassing kan variëren van een eenvoudige statische pagina tot een microservicesgeoriënteerde toepassing die bijvoorbeeld wordt gehost in Kubernetes.
  5. De verbinding tussen het toepassingslandschap en de Cosmos DB wordt afgehandeld via een Azure Active Directory-gebruiker die de Cosmos DB in de Key Vault.
  6. Met behulp van Azure Cosmos DB multi-homing API's is uw toepassing op de hoogte van de dichtstbijzijnde regio en kan deze aanvragen naar die regio verzenden. De dichtstbijzijnde regio wordt geïdentificeerd zonder configuratiewijzigingen. Wanneer u regio's aan en uit uw Azure Cosmos-account toevoegt en verwijdert, hoeft uw toepassing niet opnieuw te worden geïmplementeerd of onderbroken, maar blijft deze altijd zeer beschikbaar. Onder de voor- en Cosmos DB de globale distributie en replicatie van de gegevens op basis van het aantal gedefinieerde regio's. Daarnaast moet ook de optie Automatische failover worden gebruikt om een failover uit te voeren naar de regio met de hoogste failoverprioriteit, zonder gebruikersactie als een regio niet meer beschikbaar is. Wanneer automatische failover is ingeschakeld, kan de regioprioriteit worden gewijzigd.

Onderdelen

  • Azure Traffic Manager:maak op DNS gebaseerde opties voor taakverdeling/routering voor uw toepassingen met zes typen routeringsopties voor DNS-verkeer, die kunnen worden genest.
  • Azure Active Directory:synchroniseer on-premises directories en schakel een enkele aanmelding in.
  • Azure Cosmos DB:wereldwijd gedistribueerde database met meerdere modellen voor elke schaal.

Rekenopties

  • Azure Virtual Machines:maak binnen enkele seconden Linux en Windows virtuele machines (VM's) en verlaag de kosten.
  • Azure Kubernetes Services:uiterst beschikbare, veilige en volledig beheerde Kubernetes-service voor al uw basisworkloads voor toepassingen en microservices.
  • App Service:maak snel krachtige cloud-apps voor internet en mobiel.

Serverloze opties

Overwegingen

Beschikbaarheid

De beschikbaarheid van de Cosmos DB is afhankelijk van een aantal factoren. Hoe groter het aantal regio's waar Cosmos naar wordt gerepliceerd, hoe groter de beschikbaarheid van de toepassing. Elke regio bevat alle gegevenspartities van een Azure Cosmos DB container en kan standaard leeswaarden verwerken. Als u de beschikbaarheid van de gegevenslaag wilt vergroten, kunt u schrijfgegevens voor meerdere regio's inschakelen. Hierdoor wordt de beschikbaarheid van de gegevenslaag verhoogd. U kunt ook de beschikbaarheid verhogen door gebruik te maken van zwakkere consistentieniveaus en beschikbaarheidszones.

Als u bij het overwegen van de bovenstaande benadering hoge beschikbaarheid bereikt op Azure Cosmos DB Automatische failover, configureert u uw oplossing om ervoor te zorgen dat de toepassing op de hoogst mogelijke sla blijft.

Voor de toepassingslaag Traffic Manager geconfigureerd met geneste profielen. Wanneer u dit ontwerp naar het hoogste niveau pusht, kunt u de verschillende toepassingskeuzes per regio schalen. De implementatie per regio heeft ook een benadering voor hoge beschikbaarheid.

Prestaties

De systeemprestaties worden beïnvloed door een aantal factoren op reken- en databaseniveau. De SKU voor een App Service of een andere compute-optie is van invloed op het geheugen en de kernen die beschikbaar zijn in elke regio. Daarnaast bepaalt het aantal regio's dat de rekenlaag moet verwerken de schaal die de laag kan verwerken. De implementatie van extra locaties neemt de bestaande regio's onder druk en moet leiden tot lineaire toename van de maximale doorvoer die de toepassing kan uitvoeren.

Cosmos DB moeten zo worden geconfigureerd dat er geen knelpunt wordt veroorzaakt voor de resources in de rekenlaag. Elke database en container in Cosmos DB moeten worden geconfigureerd voor automatisch schalen en moeten worden voorzien van een maximale waarde voor aanvraageenheden die ervoor zorgt dat Cosmos DB aanvragen niet beperkt. Als u de juiste waarden voor de maximale aanvraageenheid voor de Cosmos DB wilt bepalen, kunt u belastingstests uitvoeren met een bijna geschatte maximale doorvoer voor de toepassing. In vergelijking met hun sterkere tegenhangers bieden zwakkere consistentieniveaus hogere doorvoer- en prestatievoordelen.

Cruciaal is dat bij het implementeren van de logica in code die leest van en schrijft naar Cosmos DB, of deze nu via de SDK, Azure Functions-bindingen, en meer, moet worden gebruikt, zodat elke regionale API aanvragen routeert naar de dichtstbijzijnde PreferredLocations Cosmos DB-regio. Op basis van de Azure Cosmos DB accountconfiguratie, de huidige regionale beschikbaarheid en de opgegeven voorkeurslijst, kiest de SDK het meest optimale eindpunt om de lees- en schrijfbewerkingen uit te voeren. Dit proces resulteert in aanzienlijke prestatieverbeteringen.

Flexibiliteit

Voor een hogere tolerantie kunt u beschikbaarheidszones gebruiken voor Azure Cosmos DB implementaties. Tolerantie is ook afhankelijk van de keuzes op consistentieniveau die u maakt op uw Cosmos DB implementatie. Afhankelijk van dit consistentieniveau bereikt u een ander tolerantieniveau (zie Consistentie, beschikbaarheid en prestatie-afwegingen voor meer informatie).

Schaalbaarheid

Schalen is gebaseerd op veel niveaus in dit diagram. Azure Cosmos DB is speciaal ontworpen voor elastisch schalen en voorspelbare prestaties. Op het niveau van de toepassing moet u kijken naar het gebruikte rekenmodel. Azure Functions en App Service automatisch schalen. Voor Azure Virtual Machines kunt u Azure Virtual Machine Scale Sets. Wanneer u zich bewust bent van deze behoefte, moet u waar mogelijk altijd een serverloze optie overwegen.

Beveiliging

Vanuit het oogpunt van beveiliging gaat u naar een op identiteit gebaseerd systeem, Azure Active Directory kunnen worden gebruikt om de toegang tot de omgeving te beveiligen. In de back-end wordt de toepassing (in het beste ontwerp) benaderd via beheerde identiteiten, hoewel u ook kunt overwegen om Azure Active Directory Users en Azure Key Vault te gebruiken voor het beveiligen van toegang. Daarnaast moet de Cosmos DB-instantie verder worden beveiligd, zodat de enige entiteiten die er naar kunnen lezen en schrijven de verschillende back-enden zijn die in verschillende regio's zijn geïmplementeerd. IP-beperking kan worden toegepast op het account met behulp van de ingebouwde firewall.

Notitie

Vanaf Ignite maart 2021 ondersteunen we nu ook Azure Active Directory RBAC rechtstreeks op de Cosmos DB SQL API.

Volgende stappen

Meer informatie over Azure Cosmos DB:

Meer informatie over Azure Traffic Manager:

Verwante oplossingsideeën:

Gerelateerde volledige architecturen:

Richtlijnen voor gerelateerde architectuur: