Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u workloadarchitecturen ontwerpt, moet u branchepatronen gebruiken die veelvoorkomende uitdagingen aanpakken. Patronen kunnen u helpen opzettelijke afwegingen te maken binnen workloads en te optimaliseren voor uw gewenste resultaat. Ze kunnen ook helpen bij het beperken van risico's die afkomstig zijn van specifieke problemen, die van invloed kunnen zijn op betrouwbaarheid, beveiliging, kosten en bewerkingen. Als dit niet wordt verzacht, leiden risico's uiteindelijk tot inefficiënties in de prestaties. Deze patronen worden ondersteund door echte ervaring, zijn ontworpen voor cloudschaal- en operationele modellen en zijn inherent leverancierneutraal. Het gebruik van bekende patronen als een manier om uw workloadontwerp te standaardiseren, is een onderdeel van operationele uitmuntendheid.
Veel ontwerppatronen ondersteunen rechtstreeks een of meer architectuurpijlers. Ontwerppatronen die ondersteuning bieden voor de pijler Prestatie-efficiëntie hebben betrekking op schaalbaarheid, het afstemmen van prestaties, het prioritiseren van taken en het verwijderen van knelpunten.
De volgende tabel bevat een overzicht van architectuurontwerppatronen die de doelstellingen van prestatie-efficiëntie ondersteunen.
| Patroon | Samenvatting |
|---|---|
| Asynchrone aanvraag-antwoord | Verbetert de reactiesnelheid en schaalbaarheid van systemen door de aanvraag- en antwoordfasen van interacties te ontkoppelen voor processen die geen onmiddellijke antwoorden nodig hebben. Met behulp van een asynchroon patroon kunt u gelijktijdigheid aan de serverzijde maximaliseren. U kunt dit patroon gebruiken om te plannen dat werk moet worden voltooid als capaciteit toestaat. |
| Back-ends voor front-ends | Individualiseert de servicelaag van een workload door afzonderlijke services te maken die exclusief zijn voor een specifieke front-endinterface. Met deze scheiding kunt u optimaliseren op manieren die mogelijk niet mogelijk zijn met een gedeelde servicelaag. Wanneer u afzonderlijke clients anders verwerkt, kunt u de prestaties optimaliseren voor de beperkingen en functionaliteit van een specifieke client. |
| Schot | Introduceert segmentatie tussen onderdelen om de straalstraal van storingen te isoleren. Met dit ontwerp kan elke schot afzonderlijk schaalbaar zijn om te voldoen aan de behoeften van de taak die is ingekapseld in het schot. |
| Cache-Aside | Optimaliseert de toegang tot regelmatig gelezen gegevens door een cache te introduceren die op aanvraag wordt ingevuld. De cache wordt vervolgens gebruikt voor volgende aanvragen voor dezelfde gegevens. Dit patroon is vooral nuttig bij gegevens met veel leesbewerkingen die niet vaak worden gewijzigd en die een bepaalde hoeveelheid veroudering kunnen verdragen. Het doel van deze implementatie is om in het algemeen betere prestaties in het systeem te bieden door dit type gegevens naar een cache te offloaden in plaats van het gegevensarchief ervan te verkrijgen. |
| Choreografie | Coördineert het gedrag van autonome gedistribueerde onderdelen in een workload met behulp van gedecentraliseerde, gebeurtenisgestuurde communicatie. Dit patroon kan een alternatief bieden wanneer prestatieknelpunten optreden in een gecentraliseerde indelingstopologie. |
| Vermogenschakelaar | Hiermee voorkomt u continue aanvragen voor een storing of een niet-beschikbare afhankelijkheid. Een benadering voor opnieuw proberen op fouten kan leiden tot overmatig resourcegebruik tijdens het herstel van afhankelijkheden en kan ook de prestaties overbelasten van een afhankelijkheid die het herstel probeert uit te voeren. |
| Claimcontrole | Scheidt gegevens van de berichtenstroom en biedt een manier om de gegevens met betrekking tot een bericht afzonderlijk op te halen. Dit patroon verbetert de efficiëntie en prestaties van berichtuitgevers, abonnees en de berichtenbus zelf wanneer het systeem grote nettoladingen van gegevens verwerkt. Het werkt door de grootte van berichten te verkleinen en ervoor te zorgen dat gebruikers alleen nettoladinggegevens ophalen indien nodig en op een opportune tijd. |
| Concurrerende consumenten | Hiermee wordt gedistribueerde en gelijktijdige verwerking toegepast om items in een wachtrij efficiënt te verwerken. Dit model biedt ondersteuning voor het distribueren van de belasting over alle consumentenknooppunten en dynamische schaalaanpassing die is gebaseerd op de diepte van de wachtrij. |
| Consolidatie van berekenbronnen | Optimaliseert en consolideert rekenresources door de dichtheid te verhogen. Dit patroon combineert meerdere toepassingen of onderdelen van een workload in een gedeelde infrastructuur. Deze samenvoeging maximaliseert het gebruik van rekenresources met behulp van reserveknooppuntcapaciteit om overprovisioning te verminderen. Containerorchestrators zijn een veelvoorkomend voorbeeld. Grote (verticaal geschaalde) rekeninstanties worden vaak gebruikt in de resourcegroep voor deze infrastructuren. |
| CQRS (Command and Query Responsibility Segregation) | Hiermee worden de lees- en schrijfbewerkingen van het gegevensmodel van een toepassing gescheiden. Deze scheiding maakt gerichte prestaties en schaaloptimalisaties mogelijk voor het specifieke doel van elke bewerking. Dit ontwerp is het handigst in toepassingen met een hoge lees-naar-schrijfverhouding. |
| Implementatiestempels | Biedt een benadering voor het vrijgeven van een specifieke versie van een toepassing en de bijbehorende infrastructuur als een gecontroleerde implementatie-eenheid, op basis van de veronderstelling dat dezelfde of verschillende versies gelijktijdig worden geïmplementeerd. Dit patroon is vaak afgestemd op de gedefinieerde schaaleenheden in uw workload: omdat extra capaciteit nodig is dan wat één schaaleenheid biedt, wordt er een extra implementatiestempel geïmplementeerd voor uitschalen. |
| Gebeurtenisbronnen | Behandelt statuswijziging als reeks gebeurtenissen, waarbij deze worden vastgelegd in een onveranderbaar, alleen toevoeglogboek. Afhankelijk van uw workload kan dit patroon, meestal gecombineerd met CQRS, een geschikt domeinontwerp en strategische momentopnamen, de prestaties verbeteren. Prestatieverbeteringen worden veroorzaakt door de atomische bewerkingen voor alleen-toevoegen en het vermijden van databasevergrendeling voor schrijf- en leesbewerkingen. |
| Federatieve identiteit | Hiermee wordt een vertrouwensrelatie gedelegeerd aan een id-provider die zich buiten de werkbelasting voor het beheren van gebruikers en verificatie biedt voor uw toepassing. Wanneer u gebruikersbeheer en verificatie offload, kunt u toepassingsbronnen besteden aan andere prioriteiten. |
| Portier | Offloads aanvraagverwerking die specifiek is bedoeld voor afdwinging van beveiliging en toegangsbeheer voor en na het doorsturen van de aanvraag naar een back-endknooppunt. Dit patroon wordt vaak gebruikt om beperking op gatewayniveau te implementeren in plaats van snelheidscontroles op knooppuntniveau te implementeren. Het coördineren van de snelheidsstatus tussen alle knooppunten is niet inherent presterend. |
| Gatewayaggregatie | Vereenvoudigt clientinteracties met uw workload door aanroepen naar meerdere back-endservices in één aanvraag samen te voegen. Dit ontwerp kan minder latentie veroorzaken dan een ontwerp waarin de client meerdere verbindingen tot stand brengt. Caching is ook gebruikelijk in aggregatie-implementaties, omdat hiermee aanroepen naar back-endsystemen worden geminimaliseerd. |
| Offloading van gateway | Offload aanvraagverwerking naar een gatewayapparaat voor en na het doorsturen van de aanvraag naar een back-endknooppunt. Door een offloading-gateway toe te voegen aan het aanvraagproces, kunt u minder resources per knooppunt gebruiken, omdat de functionaliteit is gecentraliseerd op de gateway. U kunt de implementatie van de offloaded functionaliteit onafhankelijk van de toepassingscode optimaliseren. Offloaded platform-geleverde functionaliteit is waarschijnlijk al zeer goed presterend. |
| Gatewayroutering | Hiermee worden binnenkomende netwerkaanvragen naar verschillende back-endsystemen gerouteerd op basis van aanvraagintenties, bedrijfslogica en beschikbaarheid van back-ends. Met gatewayroutering kunt u verkeer verdelen over knooppunten in uw systeem om de belasting te verdelen. |
| Geode | Hiermee worden systemen geïmplementeerd die werken in actief-actief-beschikbaarheidsmodi in meerdere geografische gebieden. Dit patroon maakt gebruik van gegevensreplicatie ter ondersteuning van het ideale dat elke client verbinding kan maken met een geografisch exemplaar. U kunt deze gebruiken om uw toepassing te bedienen vanuit een regio die zich het dichtst bij uw gedistribueerde gebruikersbestand bevindt. Dit vermindert de latentie door verkeer op lange afstand te elimineren en omdat u alleen infrastructuur deelt tussen gebruikers die momenteel dezelfde geografische locatie gebruiken. |
| Statuseindpuntbewaking | Biedt een manier om de status of status van een systeem te bewaken door een eindpunt weer te geven dat speciaal voor dat doel is ontworpen. U kunt deze eindpunten gebruiken om de taakverdeling te verbeteren door verkeer te routeren naar alleen knooppunten die als in orde zijn geverifieerd. Met extra configuratie kunt u ook metrische gegevens ophalen over de beschikbare knooppuntcapaciteit. |
| Indextabel | Optimaliseert het ophalen van gegevens in gedistribueerde gegevensarchieven door clients in staat te stellen metagegevens op te zoeken, zodat gegevens rechtstreeks kunnen worden opgehaald, waardoor het niet nodig is om volledige gegevensopslagscans uit te voeren. Clients worden verwezen naar hun shard, partitie of eindpunt, waardoor dynamische gegevenspartitionering voor prestatieoptimalisatie mogelijk is. |
| Gerealiseerde weergave | Maakt gebruik van vooraf samengestelde weergaven van gegevens om het ophalen van gegevens te optimaliseren. In de gerealiseerde weergaven worden de resultaten van complexe berekeningen of query's opgeslagen zonder dat de database-engine of client voor elke aanvraag opnieuw hoeft te worden gecomputeerd. Dit ontwerp vermindert het totale resourceverbruik. |
| Prioriteitswachtrij | Zorgt ervoor dat items met een hogere prioriteit worden verwerkt en voltooid voor items met een lagere prioriteit. Door items te scheiden op basis van bedrijfsprioriteit kunt u zich richten op prestatie-inspanningen voor het meest tijdgevoelige werk. |
| Uitgever/abonnee | Koppelt onderdelen van een architectuur los door directe client-naar-service- of client-naar-services-communicatie te vervangen door communicatie via een tussenliggende berichtenbroker of event bus. Door de ontkoppeling van uitgevers van consumenten kunt u de rekenkracht en code optimaliseren voor de taak die de consument moet uitvoeren voor het specifieke bericht. |
| Load Leveling op basis van wachtrij | Hiermee bepaalt u het niveau van binnenkomende aanvragen of taken door ze in een wachtrij te bufferen en de wachtrijprocessor deze in een bepaald tempo te laten verwerken. Deze benadering maakt opzettelijk ontwerp mogelijk voor doorvoerprestaties, omdat de opname van aanvragen niet hoeft te correleren met de snelheid waarin ze worden verwerkt. |
| Scheduler Agent Supervisor | Verdeelt en herdistribueert taken efficiënt over een systeem op basis van factoren die in het systeem kunnen worden waargenomen. Dit patroon maakt gebruik van metrische gegevens over prestaties en capaciteit om het huidige gebruik te detecteren en taken te routeren naar een agent met capaciteit. U kunt het ook gebruiken om prioriteit te geven aan de uitvoering van werk met een hogere prioriteit boven werk met een lagere prioriteit. |
| Sharding | Hiermee wordt de belasting naar een specifieke logische bestemming om een specifieke aanvraag af te handelen, waardoor colocatie voor optimalisatie mogelijk is. Wanneer u sharding gebruikt in uw schaalstrategie, worden de gegevens of verwerking geïsoleerd van een shard, zodat deze alleen concurreren voor resources met andere aanvragen die naar die shard worden omgeleid. U kunt ook sharding gebruiken om te optimaliseren op basis van geografie. |
| Zijspan | Breidt de functionaliteit van een toepassing uit door niet-primaire of kruislingse taken in te kapselen in een secundair proces dat naast de hoofdtoepassing bestaat. U kunt kruislingse taken verplaatsen naar één proces dat kan worden geschaald op meerdere exemplaren van het hoofdproces. Hierdoor hoeft u geen dubbele functionaliteit te implementeren voor elk exemplaar van de toepassing. |
| Hosting van statische inhoud | Optimaliseert de levering van statische inhoud aan workloadclients met behulp van een hostingplatform dat voor dat doel is ontworpen. Het offloaden van verantwoordelijkheid voor een externe host helpt congestie te beperken en stelt u in staat uw toepassingsplatform alleen te gebruiken om bedrijfslogica te leveren. |
| Snelheidsbeperking | Hiermee worden limieten opgelegd voor de snelheid of doorvoer van binnenkomende aanvragen voor een resource of onderdeel. Wanneer het systeem onder hoge vraag staat, helpt dit patroon congestie te beperken die kan leiden tot knelpunten in de prestaties. U kunt het ook gebruiken om proactief lawaaierige buurscenario's te voorkomen. |
| Valetsleutel | Hiermee verleent u beperkte toegang tot een resource zonder een tussenliggende resource te gebruiken om de toegang te proxyn. Als u dit doet, wordt de verwerking als een exclusieve relatie tussen de client en de resource geladen zonder dat hiervoor een ambassadeuronderdeel nodig is dat alle clientaanvragen op een performante manier moet verwerken. Het voordeel van het gebruik van dit patroon is het belangrijkst wanneer de proxy geen waarde toevoegt aan de transactie. |
Volgende stappen
Bekijk de ontwerppatronen voor architectuur die ondersteuning bieden voor de andere pijlers van Azure Well-Architected Framework: