Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 5085|Απάντηση: 1

[Πηγή] Εικονικοί ηθοποιοί: Dapr vs Orleans

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 29/12/2022 2:24:52 μ.μ. | | | |
Την περασμένη εβδομάδα, αποτόλμησα να ασχοληθώ με την ανάπτυξη λογισμικού ερευνώντας την έννοια των εικονικών ηθοποιών. Κατέληξα να ψάχνω σε δύο διαφορετικά πλαίσια: το Dapr και την Ορλεάνη.

Και τα δύο είναι πολύ συνοπτικά έργα με τόνους ενδιαφέρουσες περιπτώσεις χρήσης. Και οι δύο χρησιμοποιούν την ιδέα των «εικονικών» ηθοποιών. Ένας εικονικός παράγοντας είναι μια κατάσταση και μια λογική μονάδα που:

  • Μπορεί να αναγνωριστεί μοναδικά με αναγνωριστικό
  • Είναι μονής κλωστής
  • Μπορεί να είναι στη μνήμη ή μόνιμο - ο κύκλος ζωής του διαχειρίζεται από το πλαίσιο


Μου αρέσει πολύ η ιδέα των εικονικών ηθοποιών και τους βρίσκω πολύ χρήσιμους στην εξερεύνηση της δημιουργίας επεκτάσιμων και αξιόπιστων εργαλείων για τη διαχείριση πολύπλοκων ροών εργασίας εργασιών. Εάν κάθε εργασία είναι ένας εικονικός συμμετέχων ενός νήματος, το πρόβλημα της συνθήκης αγώνα εξαφανίζεται.

Επειδή η Ορλεάνη και το Dapr είναι και τα δύο έργα της Microsoft, οραματίζομαι μια μέρα σε μια αναμέτρηση σε στυλ Western Story στην καφετέρια της Microsoft.

Ορλεάνη

Ξεκίνησα με την Ορλεάνη γιατί ήταν στο ραντάρ μου για λίγο αφού είδα μερικά βίντεο σχετικά με αυτήν στο YouTube. Ξεκίνησε πολύ άσχημα γιατί νόμιζα ότι θα χρησιμοποιούσα την έκδοση 4.x όλων των πακέτων NuGet τους. Ωστόσο, καμία απολύτως από τις τεκμηρίωσή τους δεν λειτουργεί με το πακέτο 4.x. Κατέληξα να χρησιμοποιήσω την έκδοση 3.6.2.

Κόκκοι / Κατάσταση / Χρονόμετρα

Η δημιουργία ενός κόκκου που παρακολουθεί τη δική του κατάσταση και εκτελεί ενέργειες είναι πολύ απλή. Μπόρεσα ακόμη και να ακολουθήσω την τεκμηρίωση για την επιμονή των κόκκων και να δημιουργήσω τη δική μου εφαρμογή CosmosDB (SQL API) του IGrainStorage.

Υπενθυμίσεις

Οι υπενθυμίσεις είναι επίσης εύκολο να ρυθμιστούν. Μέχρι που προσπάθησα να διαμορφώσω την επιμονή στον πραγματικό κόσμο για αυτούς. Σε αυτό το σημείο της έρευνάς μου, προσπαθώ να κρατήσω τα πάντα τακτοποιημένα και να αποθηκεύσω τα πάντα στο ComsosDB. Δυστυχώς, δεν μπορώ να κάνω το πακέτο υπενθύμισης επιμονής της Ορλεάνης να λειτουργήσει καθόλου. Κατέληξα να μεταβώ στο πακέτο AzureStorage. Τώρα λοιπόν τα δεδομένα μου είναι τα μισά στον λογαριασμό SQL API και τα μισά στον λογαριασμό API του πίνακα.

Ροές

Εκεί δεν πήγα καλά. Στην Ορλεάνη, οι ροές αναγνωρίζονται από ένα GUID και έναν προαιρετικό χώρο ονομάτων. Είμαι σίγουρος ότι υπάρχει ένας καλός λόγος για τον οποίο οι ροές πρέπει να αναγνωρίζονται από ένα GUID, αλλά ουάου, αυτό δεν είναι πρακτικό.

Είμαι πολύ απογοητευμένος με τις ροές γιατί μπόρεσα να τις δημιουργήσω εύκολα, αλλά μόλις σταματήσω και επανεκκινήσω το έργο μου και ενεργοποιήσω ένα νέο συμβάν, όλα κολλάνε.

Ακολουθεί μια πολύ πολύτιμη πληροφορία, καθώς μου πήρε 8 ώρες για να αναστρέψω τον κώδικα της Ορλεάνης για να τον καταλάβω:

Όταν ένας κόκκος είναι συνδρομητής ροής, ο κόκκος πρέπει να καλέσει το ResumeAsync στη λαβή συνδρομής με τη μέθοδο OnActivateAsync, διαφορετικά θα διακοπεί με ένα μη αναγνωρισμένο σφάλμα.

Είχα επίσης το πρόβλημα της αντιγραφής της ίδιας συνδρομής, οπότε χρησιμοποίησα τον κώδικα για να διαγράψω όλες τις συνδρομές του κόκκου και στη συνέχεια τον δημιούργησα ξανά:


Άλλα Orleans Gotchas / Συμβουλές

Οι ροές λειτουργούν καλά με τα Κέντρα συμβάντων Azure (μέσω του AddEventHubStreams).

Μην χρησιμοποιείτε / ή άλλους ειδικούς χαρακτήρες στο όνομα Grain του CosmosDB SQL API!

Συμπέρασμα της Ορλεάνης

Μου αρέσει η Ορλεάνη και νομίζω ότι έχει δυνατότητες. Ωστόσο, έχει μια πολύ απότομη καμπύλη εκμάθησης. Λόγω του μακροχρόνιου αγώνα μου με το streaming, δεν έχω χρόνο να μελετήσω πώς λειτουργούν τα clusters/deployments.

Νταπρ

Βρήκα το Dapr αναζητώντας εναλλακτικές λύσεις για την Ορλεάνη. Είναι λίγο περίεργο που είναι επίσης ένα έργο που χρηματοδοτείται από τη Microsoft. Ίσως είναι εδώ για να ακολουθήσουν μια προσέγγιση επιβίωσης του ισχυρότερου. Αν ναι, νομίζω ότι ο Dapr θα είναι επιζών.

Πρώτον, ο σχεδιασμός του Dapr που βασίζεται σε REST/gRPC επιτρέπει στους ηθοποιούς να υλοποιούνται χρησιμοποιώντας οποιαδήποτε γλώσσα προγραμματισμού. Βρήκα επίσης ασήμαντο να τρέχω τα πάντα (συμμετέχοντες, καταστάσεις, χρονόμετρα, υπενθυμίσεις, συμβάντα) σε μία μόνο περίπτωση Redis. Επιπλέον, μου πήρε μόνο περίπου το ένα τρίτο του χρόνου για να αρχίσω να χρησιμοποιώ το Dapr. Ένας τόσο γρήγορος χρόνος εκκίνησης οφείλεται στην εξαιρετική τεκμηρίωση του Dapr.

Ηθοποιοί / Χρονόμετρα / Υπενθυμίσεις

Είπα απλώς ότι η τεκμηρίωση του Dapr είναι εξαιρετική; Λοιπόν, είναι παντού, εκτός από παραδείγματα JavaScript. Περνάω τον περισσότερο χρόνο μου στο Dapr, προσπαθώντας να καταλάβω πώς να καλέσω μεθόδους στους ηθοποιούς. Ο κώδικας για το δείγμα Dapr Javascript έχει ως εξής:

Αυτό είναι σαφώς ξεπερασμένο. Έπρεπε να αφιερώσω πολύ χρόνο για να πείσω αυτές τις τρεις γραμμές μέσω της εξερεύνησης κώδικα δοκιμής/δείγματος του Dapr

Τα παραδείγματα κώδικα για τη λήψη/ρύθμιση κατάστασης έχουν παρόμοια προβλήματα, επομένως δημιούργησα ένα ζήτημα GitHub για αυτά.

Εκτός από αυτά τα μικρά προβλήματα, το στήσιμο των ηθοποιών είναι παιχνιδάκι.

Η ρύθμιση χρονόμετρων και υπενθυμίσεων για το καστ μου είναι επίσης πολύ εύκολη.

Κράτος

Κατάφερα να ρυθμίσω το Dapr ώστε να επιμένει στο Postgres πολύ εύκολα.

Ένα πράγμα που έχω παρατηρήσει είναι ότι μπορεί να υπάρχουν προβλήματα επεκτασιμότητας με τον τρόπο αποθήκευσης των υπενθυμίσεων. Το Dapr αποθηκεύει όλες τις ειδοποιήσεις για έναν συγκεκριμένο τύπο συμμετέχοντα σε έναν μόνο πίνακα JSON. Τι συμβαίνει αν κάποιος έχει έναν τόνο υπενθυμίσεων;



Άλλα Dapr Gotchas / Συμβουλές

Ένα πράγμα που παρατήρησα κατά την περιήγηση στον κώδικα για το JavaScript SDK είναι ότι δεν υπάρχουν καθόλου πολλά σχόλια στη βάση κώδικα. Αυτό καθιστά σχεδόν αδύνατο να καταλάβουμε κάτι. Για παράδειγμα, στη μέθοδο addOrUpdateState του διαχειριστή κατάστασης, υπάρχει μια τρίτη παράμετρος που ονομάζεται updateValueFactory. Εάν δεν υπάρχουν σχόλια στον κώδικα, είναι σχεδόν αδύνατο να πούμε σε τι χρησιμεύει η επανάκληση.

Επίσης, δεν είμαι σίγουρος πόσο μου αρέσει η εντολή "dapr init" που προσπαθεί να ρυθμίσει και να εκτελέσει ένα κοντέινερ redis για μένα. Τι γίνεται αν έχω ήδη ένα δοχείο redis; Τι γίνεται αν θέλω να χρησιμοποιήσω το postgres; Δεν μπορώ να βρω τεκμηρίωση που να εξηγεί πώς να αλλάξω τη δυνατότητα dapr init.

Μια σημείωση για όποιον αντιμετωπίζει προβλήματα με τη χρήση του pubsub. Πρέπει να χρησιμοποιήσετε το "dapr run" για να εκτελέσετε τόσο τον εκδότη όσο και τον συνδρομητή σας:

Για τους ηθοποιούς και το pubsub, σημειώστε ότι είναι σημαντικό να χρησιμοποιήσετε την παράμετρο --app-port για να ενημερώσετε το dapr σε ποια θύρα εκτελείται η υπηρεσία σας. Τα συμβάντα pubsub και οι κλήσεις ηθοποιών αποστέλλονται στην υπηρεσία σας από το πλαϊνό καρότσι Dapr μέσω κλήσεων http, επομένως πρέπει να γνωρίζει πού να τις στείλει:

Δοκίμασα ένα μικρό αυτο-φιλοξενούμενο "σύμπλεγμα" Dapr εκκινώντας την παρουσία συνδρομητή pubsub σε δύο διαφορετικά μηχανήματα στο οικιακό μου δίκτυο. Απλώς λειτούργησε!

Συμπέρασμα Dapr

Αν θέλετε να μάθετε περισσότερες ιδέες για κατανεμημένες εφαρμογές ή εικονικούς ηθοποιούς, σας συνιστώ να ξεκινήσετε με το Dapr. Η Ορλεάνη ήταν ο αρχικός πρωτοπόρος, ενώ ο Dapr ήταν μια επανεκκίνηση που πήγε τα πράγματα στο επόμενο επίπεδο.

Αρχικός σύνδεσμος:Η σύνδεση με υπερσύνδεσμο είναι ορατή.





Προηγούμενος:Προβολή ανάγνωσης . Πληροφορίες περιεχομένου αρχείου PDB
Επόμενος:Το .NET/C# χρησιμοποιεί το Redis για να υλοποιήσει τον αλγόριθμο Bloom που βασίζεται στο BitMap
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 29/12/2022 2:25:28 μ.μ. |
Microsoft Ορλεάνη

Η Ορλεάνη είναι ένα πλαίσιο πολλαπλών πλατφορμών για τη δημιουργία αξιόπιστων, επεκτάσιμων και κατανεμημένων εφαρμογών. Μια κατανεμημένη εφαρμογή ορίζεται ως μια εφαρμογή που εκτείνεται σε πολλαπλές διεργασίες, χρησιμοποιώντας συχνά επικοινωνία peer-to-peer για να υπερβεί τα όρια υλικού. Η Ορλεάνη κλιμακώνεται από έναν μόνο διακομιστή εσωτερικής εγκατάστασης σε εκατοντάδες κατανεμημένες, εξαιρετικά διαθέσιμες εφαρμογές στο cloud. Η Ορλεάνη επεκτείνει γνωστές έννοιες και ιδιωματισμούς C# σε περιβάλλοντα πολλαπλών διακομιστών. Η Ορλεάνη έχει σχεδιαστεί για να είναι ελαστική και επεκτάσιμη. Όταν ένας κεντρικός υπολογιστής συμμετέχει στο σύμπλεγμα, μπορεί να δεχτεί νέες ενεργοποιήσεις. Όταν ένας κεντρικός υπολογιστής εξέρχεται από το σύμπλεγμα λόγω κλιμάκωσης ή αποτυχίας υπολογιστή, η προηγούμενη ενεργοποίηση σε αυτόν τον κεντρικό υπολογιστή ενεργοποιείται ξανά στους υπόλοιπους κεντρικούς υπολογιστές, ανάλογα με τις ανάγκες. Τα συμπλέγματα της Ορλεάνης μπορούν να μειωθούν σε έναν μόνο κεντρικό υπολογιστή. Οι ίδιες ιδιότητες που χρησιμοποιούνται για την ενεργοποίηση της ελαστικής κλιμάκωσης επιτρέπουν επίσης την ανοχή σφαλμάτων. Τα συμπλέγματα εντοπίζουν αυτόματα και ανακάμπτουν γρήγορα από αποτυχίες.

Ένας από τους πρωταρχικούς σχεδιαστικούς στόχους της Ορλεάνης είναι να απλοποιήσει την πολυπλοκότητα της κατανεμημένης ανάπτυξης εφαρμογών παρέχοντας ένα κοινό σύνολο μοτίβων και API. Οι προγραμματιστές που είναι εξοικειωμένοι με την ανάπτυξη εφαρμογών ενός διακομιστή μπορούν εύκολα να χρησιμοποιήσουν την Ορλεάνη για να δημιουργήσουν ανθεκτικές, επεκτάσιμες, εγγενείς υπηρεσίες cloud και άλλες κατανεμημένες εφαρμογές. Ως αποτέλεσμα, η Ορλεάνη αναφέρεται συχνά ως "κατανεμημένο .NET" και είναι το πλαίσιο επιλογής για τη δημιουργία εγγενών εφαρμογών στο cloud. Το Orleans μπορεί να τρέξει οπουδήποτε υποστηρίζει .NET. Αυτό περιλαμβάνει τη φιλοξενία του σε Linux, Windows και macOS. Οι εφαρμογές της Ορλεάνης μπορούν να αναπτυχθούν σε Kubernetes, εικονικές μηχανές και υπηρεσίες PaaS, όπως το Azure App Service και το Azure Container Apps.

Τεκμηρίωση:https://learn.microsoft.com/zh-cn/dotnet/orleans/overview

Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com