See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 5085|Vastuse: 1

[Allikas] Virtuaalnäitlejad: Dapr vs Orleans

[Kopeeri link]
Postitatud 29.12.2022 14:24:52 | | | |
Viimase nädala jooksul olen sukeldunud tarkvaraarendusse, uurides virtuaalsete näitlejate kontseptsiooni. Lõpuks uurisin kahte erinevat raamistikku: Dapr ja Orleans.

Mõlemad on väga lühikesed projektid, millel on palju huvitavaid kasutusjuhtumeid. Mõlemad kasutavad "virtuaalsete" näitlejate ideed. Virtuaalne aktor on oleku- ja loogikaüksus, mis:

  • Seda saab unikaalselt tuvastada ID järgi
  • See on ühe keermega
  • Võib olla mälus või püsiv – selle elutsüklit haldab raamistik


Mulle väga meeldib virtuaalsete aktorite idee ja leian, et need aitavad mul uurida skaleeritavaid ja usaldusväärseid tööriistu keeruliste töövoogude haldamiseks. Kui iga ülesanne on ühe lõimega virtuaalne osaleja, kaob võistluse tingimuste probleem.

Kuna Orleans ja Dapr on mõlemad Microsofti projektid, kujutan ette päeva Western Story stiilis vastasseisus Microsofti sööklas.

Orleans

Alustasin Orleansiga, sest see on juba mõnda aega minu radaril olnud pärast seda, kui nägin YouTube'is selle kohta videoid. Algus oli väga halb, sest arvasin, et kasutan kõigi nende NuGet pakettide 4.x versiooni. Kuid absoluutselt ükski nende dokumentatsioonist ei tööta 4.x paketiga. Lõpuks kasutasin versiooni 3.6.2.

Terad / Olek / Taimerid

Tera loomine, mis jälgib oma olekut ja sooritab tegevusi, on väga lihtne. Sain isegi jälgida terade püsivuse dokumentatsiooni ja luua oma CosmosDB (SQL API) rakenduse IGrainStorage'ile.

Meeldetuletusi

Meeldetuletusi on samuti lihtne seadistada. Kuni proovisin nende jaoks reaalse maailma püsivust seadistada. Praeguses uurimisetapis püüan hoida kõik korras ja hoida kõik ComsosDB-s. Kahjuks ei saa ma Orleansi meeldetuletus-püsivuse paketti üldse tööle. Lõpuks pidin üle minema AzureStorage paketile. Nüüd on mu andmed pool SQL API kontol ja pool tabeli API kontol.

Ojad

Seal ei läinud mul hästi. Orleansis identifitseeritakse vooge GUID-i ja valikulise nimeruumiga. Kindlasti on hea põhjus, miks vooge tuleb GUID-iga tuvastada, aga vau, see on ebapraktiline.

Olen voogedastuste suhtes väga pettunud, sest sain neid lihtsalt luua, aga kui ma peatun ja taaskäivitan projekti ning käivitan uue sündmuse, jookseb kõik kokku.

Sellele järgneb väga väärtuslik info, sest mul kulus 8 tundi, et Orleansi koodi tagurpidi insenerida, et see välja selgitada:

Kui teravili on voogu tellija, peab tera OnActivateAsync meetodis tellimiskontol kutsuma ResumeAsync'i, vastasel juhul jookseb kokku tuvastamata veaga.

Mul oli ka probleem, et sama tellimus dubleeriti, nii et kustutasin koodi kõigi Graini tellimuste kustutamiseks ja taastasin selle:


Muud Orleansi Mõistatused / Nõuanded

Streams töötab hästi Azure Event Hubsiga (AddEventHubStreamsi kaudu).

Ära kasuta / ega muid erimärke CosmosDB SQL API Grain nimes!

Orleansi järeldus

Mulle meeldib Orleans ja arvan, et seal on potentsiaali. Siiski on sellel väga järsk õppimiskõver. Pikaajalise võitluse tõttu voogedastusega pole mul aega uurida, kuidas klastrid/juurutused töötavad.

Dapr

Leidsin Dapri, otsides alternatiive Orleansile. On veidi kummaline, et see on ka Microsofti toetatud projekt. Võib-olla on nad siin, et rakendada ellujäämisvõime lähenemist. Kui jah, siis arvan, et Dapr jääb ellu.

Esiteks võimaldab Dapr'i REST/gRPC-põhine disain aktorite rakendamist mistahes programmeerimiskeeles. Leidsin ka, et on lihtne käivitada kõik (osalejad, staatused, taimerid, meeldetuletused, sündmused) ühes Redis instantsis. Lisaks kulus mul Dapr'i kasutamiseks vaid umbes kolmandik ajast. Nii kiire käivitamisaeg on tänu Dapri suurepärasele dokumentatsioonile.

Näitlejad / taimerid / meeldetuletused

Kas ma just ütlesin, et Dapri dokumentatsioon on suurepärane? Noh, see on kõikjal, välja arvatud JavaScripti näidetes. Veedan suurema osa ajast Dapriga, püüdes välja mõelda, kuidas kutsuda meetodeid näitlejate pealt. Dapr Javascripti näidise kood on järgmine:

See on selgelt aegunud. Pidin palju aega kulutama, et neid kolme rida läbi Dapr'i testi/näidiskoodi uurimise läbi veenda

Koodinäited oleku saamiseks/seadistamiseks on sarnased probleemid, seega lõin neile GitHubi probleemi.

Välja arvatud need väikesed probleemid, on näitlejate ülesseadmine lihtne.

Taimerite ja meeldetuletuste seadistamine minu kipsile on samuti väga lihtne.

Osariik

Sain Dapri väga lihtsalt seadistada nii, et see püsiks Postgresiga.

Üks asi, mida olen märganud, on see, et meeldetuletuste salvestamisel võib esineda skaleeritavuse probleeme. Dapr salvestab kõik teavitused konkreetse osalejatüübi kohta ühte JSON-massiivi. Mis juhtub, kui kellelgi on palju meeldetuletusi?



Muud Dapr'i küsimused / nõuanded

Üks asi, mida märkasin JavaScripti SDK koodi sirvides, oli see, et koodibaasis pole üldse palju kommentaare. See teeb peaaegu võimatuks midagi välja selgitada. Näiteks olekuhalduri meetodis addOrUpdateState on kolmas parameeter nimega updateValueFactory. Kui koodis pole kommentaare, on peaaegu võimatu aru saada, milleks tagasikutsumine on.

Ma pole ka kindel, kui väga mulle meeldib käsk "dapr init", mis üritab minu jaoks Redis konteinerit seadistada ja käivitada. Mis siis, kui mul on juba Redis konteiner? Mis siis, kui ma tahan kasutada postgres'i? Ma ei leia dokumentatsiooni, mis selgitaks, kuidas dapr init funktsiooni muuta.

Märkus kõigile, kellel on raskusi pubsubi kasutamisega. Pead kasutama "dapr run" funktsiooni, et käitada nii oma kirjastajat kui ka tellijat:

Actorsi ja pubsubi puhul tuleb meeles pidada, et on oluline kasutada --app-port parameetrit, et dapr teaks, millisel pordil su teenus töötab. pubsubi üritused ja näitlejate kõned saadetakse teie teenusele Dapr sidecar'ist HTTP-kõnede kaudu, seega peab see teadma, kuhu neid saata:

Testisin väikest Dapri isehostitud "klastrit", käivitades pubsubi tellijate instantsi kahel erineval arvutil koduvõrgus. See lihtsalt toimis!

Dapri kokkuvõte

Kui soovid rohkem teada hajutatud rakenduste või virtuaalsete aktorite kohta, soovitan alustada Daprist. Orleans oli algne teerajaja, samas kui Dapr oli taaskäivitamine, mis viis asjad järgmisele tasemele.

Originaallink:Hüperlingi sisselogimine on nähtav.





Eelmine:Vaata lugemist . PDB faili sisu info
Järgmine:.NET/C# kasutab Redist Bloomi algoritmi rakendamiseks, mis põhineb BitMapil
 Üürileandja| Postitatud 29.12.2022 14:25:28 |
Microsoft Orleans

Orleans on platvormideülene raamistik usaldusväärsete, skaleeritavate ja hajutatud rakenduste loomiseks. Hajutatud rakendus on defineeritud kui rakendus, mis hõlmab mitut protsessi, sageli kasutades peer-to-peer suhtlust, et ületada riistvara piire. Orleans skaleerub ühest kohapealsest serverist sadade hajutatud ja väga kättesaadavate pilverakendusteni. Orleans laiendab tuttavaid mõisteid ja C# idioome ka mitme serveriga keskkondadesse. Orleans on loodud elastseks ja skaleeritavaks. Kui host liitub klastriga, saab ta vastu võtta uusi aktiveerimisi. Kui host väljub klastrist skaleerumise või arvutirikke tõttu, aktiveeritakse eelmine aktiveerimine ülejäänud hostidel vastavalt vajadusele. Orleansi klastreid saab vähendada üheks peremeheks. Samad omadused, mis võimaldavad elastset skaleerimist, võimaldavad ka tõrkekindlust. Klastrid tuvastavad rikete automaatselt ja taastuvad kiiresti.

Üks Orleansi peamisi disainieesmärke on lihtsustada hajutatud rakenduste arenduse keerukust, pakkudes ühist mustrite ja API-de komplekti. Arendajad, kes on kursis ühe serveri rakenduste arendusega, saavad Orleansi hõlpsasti kasutada vastupidavate, skaleeritavate, pilvepõhiste teenuste ja teiste hajutatud rakenduste loomiseks. Seetõttu nimetatakse Orleansit sageli "hajutatud .NET-iks" ning see on pilvepõhiste rakenduste loomiseks eelistatud raamistik. Orleans saab töötada kõikjal, kus .NET toetatakse. See hõlmab selle majutamist Linuxis, Windowsis ja macOS-is. Orleansi rakendusi saab juurutada Kubernetes'is, virtuaalmasinates ja PaaS teenustes nagu Azure App Service ja Azure Container Apps.

Dokumentatsioon:https://learn.microsoft.com/zh-cn/dotnet/orleans/overview

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com