Lezen in het Engels

Delen via


Orleans Voordelen

De belangrijkste voordelen hiervan Orleans zijn:

  • Productiviteit van ontwikkelaars, zelfs voor niet-deskundige programmeurs.
  • Transparante schaalbaarheid standaard zonder speciale inspanningen van de programmeur.

Productiviteit van ontwikkelaars

Het Orleans programmeermodel verhoogt de productiviteit van zowel deskundige als niet-deskundige programmeurs door de volgende belangrijke abstracties, garanties en systeemservices te bieden.

Vertrouwd OOP-paradigma (objectgeoriënteerd programmeren)

Korrels zijn .NET-klassen die gedeclareerde .NET-graaninterfaces implementeren met asynchrone methoden. Korrels lijken de programmeur als externe objecten waarvan de methoden rechtstreeks kunnen worden aangeroepen. Dit biedt de programmeur het vertrouwde OOP-paradigma door methode-aanroepen om te zetten in berichten, ze naar de juiste eindpunten te routeren, de methoden van de doelkorrel aan te roepen en transparant te omgaan met fouten en hoekcases.

Uitvoering van korrels met één thread

De runtime garandeert dat een grain nooit op meer dan één thread tegelijk wordt uitgevoerd. In combinatie met de isolatie van andere korrels heeft de programmeur nooit te maken met gelijktijdigheid op graanniveau en hoeft hij nooit vergrendelingen of andere synchronisatiemechanismen te gebruiken om de toegang tot gedeelde gegevens te beheren. Deze functie maakt de ontwikkeling van gedistribueerde toepassingen alleen geschikt voor niet-deskundige programmeurs.

Transparante activering

De runtime activeert alleen een korrel wanneer er een bericht is dat moet worden verwerkt. Dit scheidt het idee van het maken van een verwijzing naar een korrel, die zichtbaar is voor en wordt beheerd door toepassingscode en fysieke activering van het graan in het geheugen, wat transparant is voor de toepassing. Dit is vergelijkbaar met het virtuele geheugen waarin wordt bepaald wanneer een korrel moet worden 'uitgelicht' (gedeactiveerd) of 'page in' (activeren). De toepassing heeft ononderbroken toegang tot de volledige 'geheugenruimte' van logisch gemaakte korrels, ongeacht of ze zich op een bepaald moment in het fysieke geheugen bevinden.

Transparante activering maakt dynamische, adaptieve taakverdeling mogelijk via plaatsing en migratie van korrels in de pool met hardwareresources. Deze functie is een aanzienlijke verbetering van het traditionele actormodel, waarin de levensduur van de actor wordt beheerd door toepassingen.

Locatietransparantie

Een korrelverwijzing (proxyobject) die de programmeur gebruikt om de methoden van het graan aan te roepen of door te geven aan andere onderdelen, bevat alleen de logische identiteit van het graan. De vertaling van de logische identiteit van het graan naar de fysieke locatie en de bijbehorende routering van berichten wordt transparant uitgevoerd door de Orleans runtime.

Toepassingscode communiceert met korrels terwijl u zich niet bewust bent van hun fysieke locatie, wat na verloop van tijd kan veranderen als gevolg van fouten of resourcebeheer of omdat een graan wordt gedeactiveerd op het moment dat deze wordt aangeroepen.

Transparante integratie met een permanente winkel

Orleans staat declaratieve toewijzing van de in-memory status van een graan toe aan een permanente opslag. Updates worden gesynchroniseerd, waardoor bellers alleen resultaten ontvangen nadat de permanente status is bijgewerkt. Het uitbreiden en/of aanpassen van de set bestaande beschikbare providers voor permanente opslag is eenvoudig.

Automatische doorgifte van fouten

De runtime verzendt automatisch niet-verwerkte fouten door in de aanroepketen met de semantiek van asynchrone en gedistribueerde try/catch. Als gevolg hiervan gaan fouten niet verloren in een toepassing. Hierdoor kan de programmeur foutafhandelingslogica op de juiste plaatsen plaatsen, zonder dat het tijdrovende werk van het handmatig doorgeven van fouten op elk niveau.

Transparante schaalbaarheid standaard

Het Orleans programmeermodel is ontworpen om de programmeur te helpen bij het omlaag brengen van een pad naar waarschijnlijk succes bij het schalen van een toepassing of service via verschillende ordes van grootte. Dit wordt gedaan door bewezen best practices en patronen op te nemen en door een efficiënte implementatie van de systeemfunctionaliteit op lager niveau te bieden.

Hier volgen enkele belangrijke factoren die schaalbaarheid en prestaties mogelijk maken:

Impliciete fijnmazige partitionering van de toepassingsstatus

Door korrels te gebruiken als rechtstreeks adresseerbare entiteiten, wordt de algehele status van de toepassing impliciet opgesplitst door de programmeur. Hoewel het programmeermodel niet voorschrijft hoe groot of klein een graan moet zijn, is het in de Orleans meeste gevallen zinvol om een relatief groot aantal korrels ( miljoenen of meer) te hebben, waarbij elk een natuurlijke entiteit van de toepassing vertegenwoordigt, zoals een gebruikersaccount of een inkooporder.

Omdat korrels individueel adresseerbaar zijn en hun fysieke locatie die door de runtime wordt geabstraheerd, Orleans heeft een enorme flexibiliteit bij het verdelen van de belasting en het omgaan met hot spots transparant en algemeen zonder enige gedachte van de ontwikkelaar van de toepassing.

Adaptief resourcebeheer

Korrels gaan niet uit van de lokaliteit van andere korrels terwijl ze ermee communiceren. Vanwege deze locatietransparantie kan de runtime de toewijzing van beschikbare hardwarebronnen dynamisch beheren en aanpassen. De runtime doet dit door nauwkeurige beslissingen te nemen over plaatsing en migratie van korrels in het rekencluster in reactie op belastings- en communicatiepatronen, zonder binnenkomende aanvragen te mislukken. Door meerdere replica's van een bepaald graan te maken, kan de runtime de doorvoer van het graan verhogen zonder wijzigingen aan te brengen in de toepassingscode.

Multiplexed communication

Korrels hebben Orleans logische eindpunten en berichten worden over een vaste set van all-to-all fysieke verbindingen (TCP-sockets) ge multiplexeerd. Hierdoor kan de runtime miljoenen adresseerbare entiteiten hosten met een lage overhead van het besturingssysteem per korrel. Bovendien worden voor activering en deactivering van een korrel geen kosten in rekening gebracht voor het registreren/ongedaan maken van de registratie van een fysiek eindpunt, zoals een TCP-poort of HTTP-URL of zelfs het sluiten van een TCP-verbinding.

Efficiënte planning

De runtime plant de uitvoering van een groot aantal korrels met één thread met behulp van de .NET Thread-pool, die sterk is geoptimaliseerd voor prestaties. Met graancode die is geschreven in de niet-blokkerende, vervolgstijl (een vereiste van het Orleans programmeermodel), wordt toepassingscode uitgevoerd op een zeer efficiënte "coöperatieve" multithreaded manier zonder conflicten. Hierdoor kan het systeem hoge doorvoer bereiken en worden uitgevoerd met een zeer hoog CPU-gebruik (tot 90%+) met een grote stabiliteit.

Het feit dat de groei van het aantal korrels in het systeem en een toename van de belasting niet leidt tot extra threads of andere osprimitief, helpt schaalbaarheid van afzonderlijke knooppunten en het hele systeem.

Expliciete asynchroonheid

Het Orleans programmeermodel maakt de asynchrone aard van een gedistribueerde toepassing expliciet en begeleidt programmeurs om niet-blokkerende asynchrone code te schrijven. In combinatie met asynchrone berichten en efficiënte planning maakt dit een grote mate van gedistribueerde parallelle uitvoering en algehele doorvoer mogelijk zonder expliciet gebruik van multithreading.