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

Άποψη: 57382|Απάντηση: 3

[ASP.NET] ASP.NET Ο πυρήνας (πέντε) βασίζεται σε κατανεμημένες συναλλαγές της ΚΓΠ

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-3-17 18:12:50 | | | |
Αρχές της ΚΓΠ

Η αρχή CAP, γνωστή και ως θεώρημα CAP, αναφέρεται στη συνέπεια, τη διαθεσιμότητα και την ανοχή κατάτμησης σε ένα κατανεμημένο σύστημα. Η αρχή της ΚΓΠ ορίζει ότι αυτά τα τρία στοιχεία μπορούν να επιτύχουν μόνο δύο σημεία ταυτόχρονα.Είναι αδύνατο να πάρεις και τα τρία ταυτόχρονα

2PC &&&3PC κατανεμημένων συναλλαγών
https://www.itsvse.com/thread-9591-1-1.html

Η ουσία της αρχής της ΚΓΠ είναι είτε AP, CP ή AC, αλλά δεν υπάρχει CAP. Εάν δεν υπάρχει αντίγραφο των δεδομένων σε ένα κατανεμημένο σύστημα, τότε το σύστημα πρέπει να πληροί την προϋπόθεση ισχυρής συνέπειας, επειδή υπάρχουν μόνο μοναδικά δεδομένα, δεν θα υπάρχει ασυνέπεια δεδομένων, αυτή τη στιγμή υπάρχουν τα δύο στοιχεία C και P, αλλά εάν το σύστημα έχει κατάσταση διαμερίσματος δικτύου ή διακοπή λειτουργίας, αναπόφευκτα θα οδηγήσει σε μη πρόσβαση σε ορισμένα δεδομένα και η συνθήκη διαθεσιμότητας δεν μπορεί να ικανοποιηθεί, δηλαδή, το σύστημα CP λαμβάνεται σε αυτήν την περίπτωση, αλλάΚΓΠ δεν μπορεί να ικανοποιηθεί ταυτόχρονα

Αναθεώρηση:

ASP.NET Επικύρωση ενοποιημένου μοντέλου ModelState φίλτρου Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Πυρήνας (iii) Δημιουργήστε δυναμικά παρουσίες χρησιμοποιώντας το ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Πυρήνας (2) Επανεκκινήστε την εφαρμογή με κωδικό
https://www.itsvse.com/thread-9480-1-1.html

Το ASP.NET Core (1) χρησιμοποιεί προσωρινή αποθήκευση Redis
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

Το CAP είναι ένας δίαυλος συμβάντων και υλοποίηση σε ένα κατανεμημένο σύστημα (SOA, MicroService).Τελική συνέπειαΤο (Distributed Transactions) είναι μια βιβλιοθήκη C# ανοιχτού κώδικα που είναι ελαφριά, υψηλής απόδοσης και εύκολη στη χρήση.

Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Το Dotnet CAP διαθέτει όλες τις δυνατότητες του Event Bus και το CAP παρέχει έναν πιο βελτιωμένο τρόπο χειρισμού της δημοσίευσης/εγγραφής στο EventBus.

Το MediatR είναι ένα πλαίσιο εγγραφής και δημοσίευσης μηνυμάτων κατά τη διαδικασία που παρέχει τη μέθοδο αποστολής για δημοσίευση σε ένα μόνο πρόγραμμα χειρισμού και τη μέθοδο δημοσίευσης για δημοσίευση σε πολλούς δείκτες χειρισμού, η οποία είναι πολύ βολική στη χρήση. Επί του παρόντος, το .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 και άλλες εκδόσεις, οι οποίες μπορούν να χρησιμοποιηθούν σε όλες τις πλατφόρμες.

Το ASP.NET Core χρησιμοποιεί το ενδιάμεσο μοντέλο MediatR
https://www.itsvse.com/thread-9272-1-1.html

Προεπισκόπηση αρχιτεκτονικής



Το CAP υποστηρίζει ουρές μηνυμάτων όπως Kafka, RabbitMQ, AzureServiceBus, AmazonSQS κ.λπ., και το CAP παρέχει επεκτάσεις για Sql Server, MySql, PostgreSQL και MongoDB ως αποθήκευση βάσης δεδομένων.

Αυτό το άρθρο χρησιμοποιεί το RabbitMQ και τον SQL Server ως ουρές μηνυμάτων και χώρο αποθήκευσης.

Εγκαταστήστε το RabbitMQ

Για συγκεκριμένα σεμινάρια εγκατάστασης, ανατρέξτε στο:

【Πρακτική μάχη】 Οδηγός εγκατάστασης RabbitMQ στα Windows
https://www.itsvse.com/thread-4630-1-1.html

【Εξάσκηση】Το RabbitMQ εγκαθιστά την προσθήκη διαχείρισης ιστού
https://www.itsvse.com/thread-4631-1-1.html
Η προσθήκη λογαριασμού παραλείπεται επίσης, ανατρέξτε στο:

【Εξάσκηση】Κονσόλα rabbitMQ για προσθήκη πληροφοριών λογαριασμού
https://www.itsvse.com/thread-4655-1-1.html
Πρόσθεσα ο ίδιος τον δοκιμαστικό λογαριασμό και το ανώτατο όριο Virtual Hosts, όπως φαίνεται παρακάτω:



Διαφορετικά, το σφάλμα θα είναι το εξής:

ACCESS_REFUSED - Η σύνδεση απορρίφθηκε χρησιμοποιώντας τον μηχανισμό ελέγχου ταυτότητας PLAIN. Για λεπτομέρειες δείτε το αρχείο καταγραφής του μεσίτη.

Κανένα από τα καθορισμένα τελικά σημεία δεν ήταν προσβάσιμο

Το .NET Core ενσωματώνει το CAP

Αρχικά, δημιουργήστε ένα νέο έργο ASP.NET Core που είναι και ο αποστολέας και ο παραλήπτης. Χρησιμοποιήστε την εντολή nuget για να εγκαταστήσετε το πακέτο ως εξής:

Κατά την εκκίνηση, διαμορφώστε τη μέθοδο υπηρεσίας ConfigureServices ως εξής:

Μπορείτε να επισκεφτείτε τον ιστότοπο /cap address για να δείτε τον πίνακα ελέγχου όπως φαίνεται παρακάτω:



Διατήρηση δεδομένων: Το ανώτατο όριο θαΑυτόματη δημιουργίαΤα "Δημοσιευμένα" και "Ληφθέντα" είναι δύο πίνακες τοπικής βάσης δεδομένων

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ [καπάκι]. [Δημοσιεύθηκε] (
        [Id] [bigint] ΌΧΙ ΆΚΥΡΟ,
        [Εκδοχή] [νβαρτσάρ] (20) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Ονομα] [νβαρτσάρ] (200) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Περιεχόμενο] [νβαρτσάρ] (μέγ.) ΜΗΔΕΝΙΚΟ,
        [Επαναλήψεις] [int] ΌΧΙ ΆΚΥΡΟ,
        [Προστέθηκε] [ημερομηνίαώρα2] (7) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Λήγει στις] [ημερομηνίαώρα2] (7) ΆΚΥΡΟ,
        [Όνομα_κατάστασης] [νβαρτσάρ] (50) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
ΠΕΡΙΟΡΙΣΜΌΣ [PK_cap. Δημοσιεύθηκε] ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ ΟΜΑΔΟΠΟΙΗΜΕΝΟ
(
        [id] ASC
)ΜΕ (PAD_INDEX = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, STATISTICS_NORECOMPUTE = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, IGNORE_DUP_KEY = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, ALLOW_ROW_LOCKS = ΕΝΕΡΓΟΠΟΊΗΣΗ, ALLOW_PAGE_LOCKS = ΕΝΕΡΓΟΠΟΊΗΣΗ) ΕΝΕΡΓΟΠΟΙΗΜΈΝΗ [ΚΎΡΙΑ]
) ΣΤΙΣ [ΚΎΡΙΑ] TEXTIMAGE_ON [ΚΎΡΙΑ]
ΠΗΓΑΙΝΩ
ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ [καπάκι]. [Ελήφθη] (
        [Id] [bigint] ΌΧΙ ΆΚΥΡΟ,
        [Εκδοχή] [νβαρτσάρ] (20) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Ονομα] [νβαρτσάρ] (200) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Ομάδα] [νβαρτσάρ] (200) ΆΚΥΡΟ,
        [Περιεχόμενο] [νβαρτσάρ] (μέγ.) ΜΗΔΕΝΙΚΟ,
        [Επαναλήψεις] [int] ΌΧΙ ΆΚΥΡΟ,
        [Προστέθηκε] [ημερομηνίαώρα2] (7) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
        [Λήγει στις] [ημερομηνίαώρα2] (7) ΆΚΥΡΟ,
        [Όνομα_κατάστασης] [νβαρτσάρ] (50) ΔΕΝ ΕΊΝΑΙ ΆΚΥΡΟ,
ΠΕΡΙΟΡΙΣΜΌΣ [PK_cap. Ελήφθη] ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ ΟΜΑΔΟΠΟΙΗΜΕΝΟ
(
        [id] ASC
)ΜΕ (PAD_INDEX = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, STATISTICS_NORECOMPUTE = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, IGNORE_DUP_KEY = ΑΠΕΝΕΡΓΟΠΟΊΗΣΗ, ALLOW_ROW_LOCKS = ΕΝΕΡΓΟΠΟΊΗΣΗ, ALLOW_PAGE_LOCKS = ΕΝΕΡΓΟΠΟΊΗΣΗ) ΕΝΕΡΓΟΠΟΙΗΜΈΝΗ [ΚΎΡΙΑ]
) ΣΤΙΣ [ΚΎΡΙΑ] TEXTIMAGE_ON [ΚΎΡΙΑ]
ΠΗΓΑΙΝΩ


Η μέθοδος ελεγκτή HomeController είναι η εξής:

Όταν ο χρήστης εγγραφεί επιτυχώς, θα σταλούν 3 μηνύματα με διαφορετικά θέματα και στη συνέχεια ο συνδρομητής θα τα καταναλώσει.

Όταν ξεκινήσει το CAP, θα δημιουργήσει μια προεπιλεγμένη ομάδα καταναλωτών, εάν πολλοί καταναλωτές της ίδιας ομάδας καταναλωτών καταναλώνουν το ίδιο μήνυμα θέματος,Μόνο ένας καταναλωτής θα εκτελεστεί。 Αντιθέτως,Εάν οι καταναλωτές ανήκουν όλοι σε διαφορετικές ομάδες καταναλωτών, όλοι οι καταναλωτές εκτελούνται

Δημιουργώντας ένα νέο έργο κονσόλας .NET Core, ως συνδρομητής (καταναλωτής) ή αναφέροντας το πακέτο, ο πίνακας εργαλείων μπορεί να αγνοηθεί.

Εάν βρίσκεται στον Ελεγκτή, προσθέστε [CapSubscribe("")] απευθείας για να εγγραφείτε στα σχετικά μηνύματα.

Εάν η μέθοδός σας δεν βρίσκεται στον ελεγκτή, τότε η κλάση στην οποία εγγράφεστε πρέπει να κληρονομήσει το ICapSubscribe και, στη συνέχεια, να προσθέσει την ετικέτα [CapSubscribe("")].

Ο κωδικός έχει ως εξής:

Ανοίξτε το πρόγραμμα-πελάτη συνδρομής και προσπαθήστε να αποκτήσετε πρόσβαση http://localhost:28116/Home/UserRegister για να στείλετε μηνύματα, το αποτέλεσμα είναι το εξής:



Τόσο η κονσόλα όσο και ο δέκτης του χειριστηρίου ενεργοποιούνται, όπως φαίνεται στην παρακάτω εικόνα:



Προσπαθήστε να ρίξετε μια εξαίρεση χειροκίνητα στη μέθοδο λήψης μηνύματος, ο κωδικός είναι ο εξής:

Το CAP θα δοκιμάσει ξανά αυτόματα τη μέθοδο,Ο αριθμός των επαναλήψεων μετά την αποτυχία είναι 50 από προεπιλογή και το διάστημα επανάληψης μετά την αποτυχία είναι 60 δευτερόλεπτα από προεπιλογή, όπως φαίνεται στο παρακάτω σχήμα:



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

Ζητήματα ανικανότητας διεπαφής
https://www.itsvse.com/thread-6010-1-1.html

Τέλος, επισυνάψτε τον πηγαίο κώδικα:

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






Προηγούμενος:CSV online μετατροπή της σύνταξης Markdown
Επόμενος:HttpClient POST απευθείας για αποστολή αιτημάτων συμπίεσης byte byte (gzip)
Δημοσιεύτηκε στις 2021-3-18 18:11:20 |
Ελάτε να ρίξετε μια ματιά, ευχαριστώ που το μοιραστήκατε
Δημοσιεύτηκε στις 2021-9-22 20:42:18 |
Μάθε να μαθαίνεις...
Δημοσιεύτηκε στις 2021-12-31 15:08:21 |
Μάθηση
Πολύ καλό, πολύ ωραίο
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com