Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 5085|Vastaus: 1

[Lähde] Virtuaalinäyttelijät: Dapr vs Orléans

[Kopioi linkki]
Julkaistu 29.12.2022 14.24.52 | | | |
Viime viikon aikana olen ryhtynyt ohjelmistokehitykseen tutkimalla virtuaalisten toimijoiden käsitettä. Päädyin tutkimaan kahta eri viitekehystä: Dapr ja Orleans.

Molemmat ovat hyvin ytimekkäitä projekteja, joissa on paljon mielenkiintoisia käyttötapauksia. Molemmat käyttävät "virtuaalisten" toimijoiden ideaa. Virtuaalinen toimija on tila- ja logiikkayksikkö, joka:

  • Se voidaan tunnistaa yksikäsitteisesti ID:n perusteella
  • Se on yksisäikeinen
  • Voi olla muistissa tai pysyvä – sen elinkaari on hallinnassa kehyksen toimesta


Pidän todella virtuaalisten toimijoiden ideasta ja koen niiden olevan erittäin hyödyllisiä skaalautuvien ja luotettavien työkalujen rakentamisessa monimutkaisten tehtävätyönkulkujen hallintaan. Jos jokainen tehtävä on yksisäikeinen virtuaalinen osallistuja, kilpailun kuntoongelma katoaa.

Koska Orleans ja Dapr ovat molemmat Microsoftin projekteja, näen mielessäni päivän Western Story -tyylisessä kohtaamisessa Microsoftin ruokasalissa.

Orléans

Aloitin Orleansista, koska se on ollut mielessäni jo jonkin aikaa nähtyäni siitä videoita YouTubessa. Se alkoi todella huonosti, koska luulin käyttäväni kaikkien heidän NuGet-pakettiensa 4.x-versiota. Kuitenkaan mikään heidän dokumentaatiostaan ei toimi 4.x-paketin kanssa. Päädyin käyttämään versiota 3.6.2.

Jyvät / Tila / Ajastimet

Jyvän luominen, joka seuraa omaa tilaansa ja suorittaa toimintoja, on hyvin yksinkertaista. Pystyin jopa seuraamaan rakeen pysyvyyden dokumentaatiota ja luomaan oman CosmosDB (SQL API) -toteutukseni IGrainStoragesta.

Muistutukset

Muistutukset on myös helppo asettaa. Kunnes yritin konfiguroida niille todellisen maailman pysyvyyttä. Tässä vaiheessa tutkimustani yritän pitää kaiken siistinä ja säilyttää kaiken ComsosDB:ssä. Valitettavasti en saa Orleansin muistutusjatkuvuuspakettia toimimaan lainkaan. Lopulta jouduin vaihtamaan AzureStorage-pakettiin. Nyt tietoni ovat puolet SQL API -tilillä ja puolet taulukko-API-tilillä.

Virrat

Siinä kohtaa en mennyt hyvin. Orleansissa virtaukset tunnistetaan GUID:lla ja valinnaisella nimiavaruudella. Olen varma, että on hyvä syy siihen, miksi striimit täytyy tunnistaa GUID:lla, mutta vau, se on epäkäytännöllistä.

Olen todella turhautunut striimeihin, koska pystyin luomaan ne helposti, mutta kun pysäytän ja käynnistän projektin uudelleen ja käynnistän uuden tapahtuman, kaikki kaatuu.

Tätä seuraa erittäin arvokas tieto, sillä Orleansin koodin käänteissuunnitteluun meni 8 tuntia selvittääkseni sen:

Kun vilja on striimin tilaaja, sen täytyy kutsua ResumeAsync tilauskahvassa OnActivateAsync-menetelmässään, muuten kaadut tunnistamattomalla virheellä.

Minulla oli myös ongelma, että sama tilaus kopioitui, joten käytin koodia poistaakseni kaikki viljan tilaukset ja loin sen uudelleen:


Muita Orleansin pointteja / vinkkejä

Streams toimii hyvin Azure Event Hubsin kanssa (AddEventHubStreamsin kautta).

Älä käytä / tai muita erikoismerkkejä CosmosDB:n SQL-API:n Grain-nimessä!

Orleansin johtopäätös

Pidän Orleansista ja uskon, että siinä on potentiaalia. Kuitenkin oppimiskäyrä on hyvin jyrkkä. Pitkän striimauskamppailuni vuoksi minulla ei ole aikaa opiskella klusterit/käyttöönottojen toimintaa.

Dapr

Löysin Daprin etsimällä vaihtoehtoja Orléansille. On hieman outoa, että kyseessä on myös Microsoftin sponsoroima projekti. Ehkä he ovat täällä ottamassa selviytymisen vahvimman lähestymistavan. Jos kyllä, uskon että Dapr on selviytyjä.

Ensinnäkin Daprin REST/gRPC-pohjainen suunnittelu mahdollistaa aktorien toteuttamisen millä tahansa ohjelmointikielellä. Minusta oli myös helppoa ajaa kaikki (osallistujat, tilat, ajastimet, muistutukset, tapahtumat) yhdellä Redis-instanssilla. Lisäksi Daprin käytön aloittaminen kesti vain noin kolmanneksen ajasta. Näin nopea käynnistysaika johtuu Daprin erinomaisesta dokumentaatiosta.

Näyttelijät / ajastimet / muistutukset

Sanoinko juuri, että Daprin dokumentaatio on erinomaista? No, sitä on kaikkialla, paitsi JavaScript-esimerkeissä. Vietän suurimman osan ajastani Daprin parissa, yrittäen selvittää, miten kutsua menetelmiä näyttelijöille. Dapr Javascriptin näytteen koodi on seuraava:

Tämä on selvästi vanhentunutta. Jouduin käyttämään paljon aikaa näiden kolmen rivin houkutteluun Daprin testi- ja esimerkkikooditutkimuksen läpi

Koodiesimerkeissä tilan saamiseen/asettamiseen on samanlaisia ongelmia, joten loin niille GitHub-ongelman.

Pienten ongelmien lisäksi näyttelijöiden asettaminen on lastenleikkiä.

Ajastimien ja muistutusten asettaminen kipsilleni on myös hyvin helppoa.

Valtio

Pystyin konfiguroimaan Daprin pysymään Postgresilla hyvin helposti.

Yksi asia, jonka olen huomannut, on että muistutusten tallennuksessa saattaa olla skaalautuvuusongelmia. Dapr tallentaa kaikki tietyn osallistujatyypin hälytykset yhteen JSON-taulukkoon. Mitä tapahtuu, jos jollakulla on valtavasti muistutuksia?



Muut Daprin Pointchat / Vinkkejä

Yksi asia, jonka huomasin selaillessani JavaScript SDK:n koodia, on se, että koodipohjassa ei ole juuri lainkaan kommentteja. Tämä tekee lähes mahdottomaksi selvittää jotain. Esimerkiksi tilanhallinnan addOrUpdateState-metodissa on kolmas parametri nimeltä updateValueFactory. Jos koodissa ei ole kommentteja, on lähes mahdotonta sanoa, mihin takaisinsoitto on tarkoitettu.

En myöskään ole varma, kuinka paljon pidän "dapr init" -komennosta, joka yrittää asettaa ja ajaa redis-konttia minulle. Entä jos minulla on jo Redis-purkki? Entä jos haluan käyttää postgresia sen sijaan? En löydä dokumentaatiota, joka selittäisi, miten dapr init -ominaisuutta voisi muuttaa.

Huomio kaikille, joilla on vaikeuksia käyttää pubsubia. Sinun täytyy käyttää "dapr runia" ajaaksesi sekä julkaisijasi että tilaajasi:

Aktoreille ja pubsubille on tärkeää käyttää --app-port-parametria, jotta dapr tietää, millä portilla palvelusi toimii. Pubsub-tapahtumat ja näyttelijäpuhelut lähetetään palvelullesi Dapr Sidecarista http-puheluiden kautta, joten sen täytyy tietää, minne ne lähettää:

Testasin pientä Daprin itse isännöimää "klusteria" käynnistämällä pubsub-tilaaja-instanssini kahdella eri koneella kotiverkossani. Se vain toimi!

Dapr-johtopäätös

Jos haluat tietää lisää ideoita hajautetuista sovelluksista tai virtuaalisista toimijoista, suosittelen aloittamaan Daprista. Orleans oli alkuperäinen edelläkävijä, kun taas Dapr oli uudelleenkäynnistys, joka vei asiat uudelle tasolle.

Alkuperäinen linkki:Hyperlinkin kirjautuminen on näkyvissä.





Edellinen:Katso lukemista. PDB-tiedoston sisältötiedot
Seuraava:.NET/C# käyttää Redisiä Bloom-algoritmin toteuttamiseen BitMapin pohjalta
 Vuokraisäntä| Julkaistu 29.12.2022 14.25.28 |
Microsoft Orleans

Orleans on monialustainen kehys luotettaviden, skaalautuvien ja hajautettavien sovellusten rakentamiseen. Hajautettu sovellus määritellään sovellukseksi, joka kattaa useita prosesseja ja käyttää usein vertaisverkkoviestintää laitteistorajojen ylittämiseen. Orleans skaalautuu yhdestä paikallisesta palvelimesta satoihin hajautettuihin, erittäin saatavilla oleviin pilvisovelluksiin. Orleans laajentaa tuttuja käsitteitä ja C#-tyyliä monipalvelinympäristöihin. Orleans on suunniteltu joustavaksi ja skaalautuvaksi. Kun isäntä liittyy klusteriin, se voi hyväksyä uusia aktivointeja. Kun isäntä poistuu klusterista skaalautumisen tai tietokoneen vian vuoksi, kyseisen isännän aiempi aktivointi aktivoituu uudelleen muilla isännöillä tarpeen mukaan. Orleansin klusterit voidaan skaalata yhdeksi isännäksi. Samat ominaisuudet, joita käytetään elastisen skaalaamisen mahdollistamiseen, mahdollistavat myös vikasietoisuuden. Klusterit havaitsevat vikat automaattisesti ja palautuvat niistä nopeasti.

Yksi Orleansin keskeisistä suunnittelutavoitteista on yksinkertaistaa hajautetun sovelluskehityksen monimutkaisuutta tarjoamalla yhteinen joukko malleja ja rajapintoja. Kehittäjät, jotka ovat perehtyneet yksipalvelinsovelluskehitykseen, voivat helposti käyttää Orleansia rakentaakseen kestäviä, skaalautuvia, pilvipohjaisia palveluita ja muita hajautettuja sovelluksia. Tämän seurauksena Orleansia kutsutaan usein "hajautetuksi .NET:ksi", ja se on suosittu kehys pilvipohjaisten sovellusten rakentamiseen. Orleans voi pyöriä missä tahansa, missä tukee .NET:iä. Tähän sisältyy sen isännöinti Linuxilla, Windowsilla ja macOS:llä. Orleans-sovelluksia voidaan ottaa käyttöön Kubernetesissa, virtuaalikoneissa ja PaaS-palveluissa, kuten Azure App Servicessä ja Azure Container Appsissa.

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

Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com