Κοινή χρήση τεχνολογίας

SpringCloud

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Τι είναι οι μικροϋπηρεσίες;

1. Βασικές έννοιες

Οι μικροϋπηρεσίες είναι ααρχιτεκτονικό στυλ(Διαφορετικά από τη μονολιθική αρχιτεκτονική, την κατακόρυφη αρχιτεκτονική, την κατανεμημένη αρχιτεκτονική και την αρχιτεκτονική SOA), οι εφαρμογές χωρίζονται σε μικρότερες υπηρεσίες που βασίζονται σε διαδικασίες.

2. Χαρακτηριστικά μικροϋπηρεσιών

  1. Ελαφρύ: Διαχωρίστε σύνθετα συστήματα ή υπηρεσίες κατακόρυφα και κάθε microservice εστιάζει στην επίλυση ειδικών προβλημάτων.
  2. Χαμηλή σύζευξη: Κάθε υπηρεσία διαχωρισμού είναι ανεξάρτητη μεταξύ τους όσον αφορά τον κώδικα, τους πόρους και το περιβάλλον και μπορεί να αναπτυχθεί, δοκιμαστεί, αναπτυχθεί και συντηρηθεί ανεξάρτητα, κάτι που είναι ευεργετικό για τη σταθερότητα του συστήματος (ο αντίκτυπος μειώνεται όταν υπάρχουν προβλήματα συμβαίνουν) και η αξιολόγηση πόρων επέκτασης (επέκταση πόρων) είναι πιο βολική και λιγότερο επικίνδυνη).
  3. Cross-platform: Διαφορετικές μικροϋπηρεσίες μπορούν να χρησιμοποιούν διαφορετικές γλώσσες ανάπτυξης και να εκτελούνται σε διαφορετικά περιβάλλοντα.

2. Τι είναι το SpringCloud;

1. Βασικές έννοιες:

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

2. Συστατικά που χρησιμοποιούνται συνήθως:

1)Spring Cloud Netflix:

Eureka: κέντρο εγγραφής

Κορδέλα: εξισορρόπηση φορτίου

Προσποιηση: τηλεκληση

Hystrix: διακόπτης κυκλώματος σέρβις

Zuul/Gateway: Πύλη

2)Spring Cloud Config: Κεντρικό εργαλείο διαχείρισης διαμόρφωσης, εξωτερική αποθήκευση της διαμόρφωσης εφαρμογής, μπορεί να χρησιμοποιηθεί για εφαρμογές Spring ή μη Spring.

3)Spring Cloud Bus: Δίαυλος συμβάντων και μηνυμάτων, που χρησιμοποιούνται για τη διάδοση αλλαγών κατάστασης ή γεγονότων αλλαγής διαμόρφωσης στο σύμπλεγμα.

4)Spring Cloud Consul: Εργαλείο ανακάλυψης και διαμόρφωσης υπηρεσιών, ενσωματωμένο άψογα με δοχεία Docker.

5)Spring Cloud Security: Μια εργαλειοθήκη ασφαλείας που παρέχει υποστήριξη για την ασφάλεια και τον έλεγχο ταυτότητας εφαρμογών.

6)Spring Cloud Sleuth: κατανεμημένη ανίχνευση αλυσίδας κλήσεων, συμβατή με την ανίχνευση Zipkin, HTrace και ELK.

7)Spring Cloud Cluster: Εκλογή αρχηγού, που υλοποιείται μέσω της αφαίρεσης των Zookeeper, Redis και Consul.

8)Spring Cloud Data Flow: Ενορχήστρωση μικροϋπηρεσιών, εύκολη στη χρήση μέσω της διεπαφής μεταφοράς και απόθεσης ή REST API.

9)Spring Cloud Stream: Ένα ελαφρύ πλαίσιο μικροϋπηρεσιών που βασίζεται σε συμβάντα για γρήγορη δημιουργία εφαρμογών που συνδέονται με εξωτερικά συστήματα.

10)Spring Cloud Task: Ένα βραχυπρόθεσμο πλαίσιο μικροϋπηρεσιών για τη γρήγορη δημιουργία εφαρμογών που ολοκληρώνουν εργασίες επεξεργασίας δεδομένων παρτίδας.

3. Βήματα για τη χρήση στοιχείων SpringCloud

Springcloud tutorial--3 Μηχανισμός διακόπτη κυκλώματος Microservice, λεπτομερής επεξήγηση της χρήσης του διακόπτη κυκλώματος hystrix_How to configuration java breaker-CSDN blog.

Springcloud tutorial--4 Λεπτομερής επεξήγηση της χρήσης του gateway zuul_zuul tutorial χρήσης-CSDN

1. Hystrix (ασφάλεια, υποβάθμιση, περιορισμός ρεύματος)

1) Τι κάνει;

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

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

2) Συμβαίνει στην πλευρά του πελάτη ή στην πλευρά του διακομιστή;

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

Περιορισμός ρεύματος: συνήθως εμφανίζεται στην πλευρά του διακομιστή.

3) Τρόπος χρήσης

  • Κατάρρευση:

@EnableCircuitBreaker: ενεργοποιημένο στην εφαρμογήασφάλεια ηλεκτρική

@HistrixCommand(fallbackMethod="xxxFallback",commandProperties = {
}): Ο σχολιασμός σύντηξης προστίθεται στον σχολιασμό υποβάθμισης Συμπληρώστε τις συνθήκες σύντηξης στην εντολή Ιδιότητες = {}.HystrixPropertiesManagerΕλεγχος.

  1. @HystrixCommand(fallbackMethod = "xxxFallback",commandProperties = {
  2. //20秒内出现3个请求,失败率为30%,就会触发熔断,30秒内不再发送调用
  3. // 条件一: 请求数量达到3个
  4. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),
  5. // 条件二: 每20秒一个判断单位
  6. @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_INTERRUPT_ON_TIMEOUT,value = "20000"),
  7. // 条件三: 失败率30%
  8. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "30"),
  9. // 结果: 熔断后, 30秒内不再请求远程服务
  10. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "30000")
  11. })
  • Κατηφορικός:

Δημιουργήστε μια νέα κλάση xxxFallbackFactory για να εφαρμόσετε το FallbackFactory και να παρακάμψετε τη μέθοδο δημιουργίας Η μέθοδος υποβάθμισης ορίζεται στη δημιουργία.

@FeignCliend(fallbackFactory=xxxFallbackFactory.class): Το Histrix είναι ενσωματωμένο στο Feign

Ή καθορίστε την εναλλακτική μέθοδο απευθείας στη μέθοδο: @HistrixCommand(fallbackMethod="xxxFallback")

  • Περιορισμός:

        1、Τρέχουσα στρατηγική περιορισμού:

1), όριο ρεύματος σηματοφόρου

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

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

Ένας σηματοφόρος μπορεί να νοηθεί ως αμετρητής, ο μετρητής μετράει τον αριθμό των αιτημάτων που επεξεργάζονται αυτήν τη στιγμή Όταν η τιμή του μετρητή φτάσει την καθορισμένη τιμή, τα επόμενα αιτήματα δεν θα γίνουν δεκτά (ή θα υποβαθμιστούν) και θα πρέπει να περιμένετε έως ότου η τιμή του μετρητή είναι μικρότερη από την καθορισμένη τιμή προτού μπορέσουν τα επόμενα αιτήματα. υποβάλλονται σε επεξεργασία.

  1. @HystrixCommand(
  2. commandProperties= {
  3. @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE"),
  4. @HystrixProperty(name="execution.isolation.semaphore.maxConcurrentRequests", value="20")
  5. },
  6. fallbackMethod = "errMethod"
  7. )

2), όριο ρεύματος πισίνας νήματος

  1. @HystrixCommand(
  2. commandProperties = {
  3. @HystrixProperty(name = "execution.isolation.strategy", value = "THREAD")
  4. },
  5. threadPoolKey = "createOrderThreadPool",
  6. threadPoolProperties = {
  7. @HystrixProperty(name = "coreSize", value = "20"),
  8. @HystrixProperty(name = "maxQueueSize", value = "100"),
  9. @HystrixProperty(name = "maximumSize", value = "30"),
  10. @HystrixProperty(name = "queueSizeRejectionThreshold", value = "120")
  11. },
  12. fallbackMethod = "errMethod"
  13. )

Σημείωση εδώ: injavaΣτη δεξαμενή νημάτων, εάν ο αριθμός των νημάτων υπερβαίνειcoreSize, τα αιτήματα δημιουργίας νημάτων θα εισέλθουν πρώτα στην ουρά αν η ουρά είναι γεμάτη, τα νήματα θα συνεχίσουν να δημιουργούνται μέχρι να φτάσει ο αριθμός των νημάτων.maximumSize , και στη συνέχεια υιοθετήστε τη στρατηγική απόρριψης.Αλλά υπάρχει μια πρόσθετη παράμετρος στο νήμα που έχει διαμορφωθεί από το hystrixqueueSizeRejectionThreshold,ανqueueSizeRejectionThreshold < maxQueueSize, ο αριθμός των ουρών φτάνειqueueSizeRejectionThresholdθα υιοθετήσει τη στρατηγική απόρριψης, άραmaximumSize απέτυχε.ανqueueSizeRejectionThreshold > maxQueueSize, ο αριθμός των ουρών φτάνειmaxQueueSizeώρα,maximumSizeείναι έγκυρο, το σύστημα θα συνεχίσει να δημιουργεί νήματα μέχρι να φτάσει ο αριθμόςmaximumSize

      2. Η διαφορά μεταξύ περιορισμού ρεύματος σηματοφόρου και περιορισμού ρεύματος συγκέντρωσης νήματος:

1) Επίπεδο απόδοσης: Ο σηματοφόρος χρησιμοποιεί το αρχικό νήμα και έχει χαμηλή κατανάλωση απόδοσης.

2) Επίπεδο σταθερότητας συστήματος: Οι ομάδες νημάτων είναι απομονωμένες και τα προβλήματα από μόνα τους δεν θα επηρεάσουν άλλες ομάδες νημάτων.

3) Σύγχρονο και ασύγχρονο: Επειδή ο σηματοφόρος είναι το αρχικό νήμα που χρησιμοποιείται, είναι σύγχρονο και μπλοκάρει.

        3. Τρέχοντα σενάρια χρήσης περιοριστικής στρατηγικής:

Όταν ο όγκος αιτημάτων είναι πολύ έντονος και η επιβάρυνση της απομόνωσης νημάτων είναι σχετικά υψηλή, συνιστάται η χρήση σηματοφόρων για τη μείωση του φόρτου. Αυτή η κατάσταση χρησιμοποιείται συνήθως για την αντιμετώπιση αιτημάτων εκτός δικτύου (χωρίς κλήση εξωτερικών υπηρεσιών). Συνιστάται η χρήση της μεθόδου thread pool σε άλλα σενάρια.

4) Ποια είναι η διαφορά μεταξύ των τριών;

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

  • διαφορετικές έννοιες

Ο διακόπτης κυκλώματος σημαίνει ότι η υπηρεσία στο σύνολό της δεν είναι διαθέσιμη (εστίαση στην αυτοπροστασία), η υποβάθμιση σημαίνει ότι η επόμενη καλύτερη επιλογή (εστίαση στην προστασία της κατώτατης γραμμής) και ο περιορισμός ρεύματος αναφέρεται στην ποσότητα της κίνησης που δεν μπορεί να ξεπεραστεί.

  • Διαφορετικοί μηχανισμοί ενεργοποίησης

Από προεπιλογή, εάν το hystrix ανιχνεύσει ότι το ποσοστό αποτυχίας αιτήματος υπερβαίνει το 50% μέσα σε 10 δευτερόλεπτα, θα ενεργοποιήσει τον μηχανισμό του διακόπτη κυκλώματος. Μετά από αυτό, το αίτημα προς το microservice επαναλαμβάνεται κάθε 5 δευτερόλεπτα. Εάν η μικρουπηρεσία είναι προσβάσιμη, ο μηχανισμός του διακόπτη κυκλώματος απενεργοποιείται και οι κανονικές αιτήσεις αποκαθίστανται.

Από προεπιλογή, το hystrix θα ενεργοποιήσει τον μηχανισμό υποβάθμισης υπό τις ακόλουθες 4 συνθήκες:

  1. Η μέθοδος ρίχνει το HystrixBadRequestException
  2. Λήξη χρονικού ορίου κλήσης μεθόδου
  3. Ενεργοποιήστε τον διακόπτη κυκλώματος για να υποκλέψετε την κλήση
  4. Το thread pool ή η ουρά ή ο σηματοφόρος είναι γεμάτο
  • Διαφορετικές σχέσεις ιδιοκτησίας

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

2. Feign and RestTemplate

Σύνοψη περιεχομένου συνδέσμου:

  1. Προσθήκη εξάρτησης εκκίνησης.
  2. Προσθήκη σχολιασμού: @EnableFeignClients;
  3. Δημιουργία διεπαφής Feign:

@FeignClient(name="eureka-HA",fallbackFactory=DeptClientServiceFallbackFactory.class)

Εκμάθηση Springcloud-- 1. Δημιουργήστε γρήγορα μια επίδειξη αρχικού επιπέδου, απλώς διαβάστε αυτό το άρθρο_Κοινότητα ανοιχτού κώδικα Ye Juyan-GitCodeΧωρίς περαιτέρω καθυστέρηση, ακολουθήστε με και ξεκινήστε την πρώτη σας εμπειρία στο Spring Cloud Πρώτα, ελέγξτε τα βασικά στοιχεία των μικροϋπηρεσιών: [Εικόνα εδώ] Παραγωγός: Παροχή υπηρεσίας Καταναλωτής: Υπηρεσία καταναλωτή Καταχώρηση/ανακάλυψη υπηρεσίας: Εγγραφή υπηρεσίας, ανακάλυψη, παρακολούθηση Λοιπόν, πρώτα. κατανοήστε το αρχιτεκτονικό θεμέλιο των μικρουπηρεσιών Springcloud: παραγωγός (πελάτης), καταναλωτής (πελάτης), κέντρο εγγραφής/ανακάλυψης υπηρεσιών (διακομιστής) κοινότητα ανοιχτού κώδικα Ye Juyan GitCodeicon-default.png?t=N7T8https://gitcode.csdn.net/65e840841a836825ed78b9d0.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzI1MTQh3wLcJMj0 E3MjA1Mjk0NzAsInVzZXJuYW1lIjoicXFfMTk5NTIwMjkifQ.7co5oRDfDrxtdqIsV-9AjJacdbURh-cikj5Rtxt7Z1c

3. Χρήση Zuul

αναφέρομαι σε:

Πρακτική εφαρμογή αρχιτεκτονικής έργου SpringBoot "Gateway zuul construction"-CSDN Blog

4. Χρήση κέντρου εγγραφής Eureka

αναφέρομαι σε:

Αρχιτεκτονική του έργου SpringBoot πραγματική μάχη "κατασκευή γονικού έργου και κατασκευή κέντρου εγγραφής"_java κατασκευή Springboot γονικό έργο εκκίνησης-ιστολόγιο CSDN

4. Πώς λειτουργεί το SpringCloud

1. Αρχή λειτουργίας του Eureka:

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

  2. Ανακάλυψη υπηρεσίας: Όταν ένας καταναλωτής υπηρεσίας χρειάζεται να καλέσει άλλες υπηρεσίες, θα στείλει ένα αίτημα ανακάλυψης υπηρεσίας στον διακομιστή Eureka για να λάβει μια λίστα με παρουσίες των απαιτούμενων υπηρεσιών. Μετά τη λήψη του αιτήματος, ο διακομιστής Eureka θα επιστρέψει μια λίστα με παρουσίες της αντίστοιχης υπηρεσίας, συμπεριλαμβανομένης της διεύθυνσης IP, του αριθμού θύρας και άλλων πληροφοριών της υπηρεσίας. Ο καταναλωτής υπηρεσίας επιλέγει μία από τις περιπτώσεις υπηρεσίας που θα καλέσει (εξισορρόπηση φορτίου) με βάση τη λίστα παρουσιών που επιστρέφεται.

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

5. Υποκείμενος πηγαίος κώδικας SpringCloud

1. Πηγαίος κώδικας Gateway Zuul

Πρακτική εφαρμογή αρχιτεκτονικής έργου SpringBoot "Gateway zuul construction"-CSDN Blog Το άρθρο προβλήθηκε και διαβάστηκε 227 φορές. Κεφάλαιο 3 Πρόλογος κατασκευής πύλης Zuul: 1. Βασικές λειτουργίες Το Zuul παρέχει κυρίως δυναμική δρομολόγηση (ενσωματωμένη εφαρμογή κορδέλας) και φιλτράρισμα (μπορεί να χρησιμοποιηθεί ως ενοποιημένο φίλτρο ελέγχου ταυτότητας, φίλτρο δημοσίευσης σε κλίμακα του γκρι, φίλτρο IP ασπρόμαυρης λίστας, φίλτρο περιορισμού ρεύματος υπηρεσίας) (Μπορεί να υλοποιηθεί με το Sentinel)) λειτουργία 2. Η διαφορά από το Spring cloud GateWay είναι ότι είναι μια λύση πύλης που παρέχεται από δύο διαφορετικούς οργανισμούς ανοιχτού κώδικα. Spring cloud GateWay χρησιμοποιεί μη αποκλειστικό API, ενσωματωμένο φίλτρο περιορισμού ρεύματος, υποστηρίζει μεγάλες συνδέσεις (όπως πρίζες ιστού) και είναι καλύτερο από το Zuul σε σενάρια υψηλής ταυτόχρονης απόδοσης και αργής απόκρισης υπηρεσίας back-end...https://blog.csdn.net/qq_19952029/article/details/124285479

2. Κέντρο εγγραφής Πηγαίος κώδικας Eureka

3. Πηγαίος κώδικας Histrix διακόπτη κυκλώματος

4. Κέντρο διαμόρφωσης Πηγαίος κώδικας διαμόρφωσης

5. Πηγαίος κώδικας κορδέλας εξισορρόπησης φορτίου

6. Η Microservice καλεί τον πηγαίο κώδικα του Feign

6. Πώς υλοποιεί το SpringCloud κατανεμημένες συναλλαγές

Πρακτική λειτουργίας Seata TCC (Μέρος 2)-Alibaba Cloud Developer CommunityΠραγματική μάχη σε λειτουργία Seata TCC (Μέρος 2)icon-default.png?t=N7T8https://developer.aliyun.com/article/1053737?spm=5176.26934562.main.1.799c6a03T45SJ9Η παραπάνω ανάρτηση ιστολογίου δεν λύνει το πρόβλημα της αναστολής, το οποίο μπορεί να κριθεί από διαφορετικούς δείκτες κατάστασης.

https://www.cnblogs.com/lilpig/p/16613226.htmlicon-default.png?t=N7T8https://www.cnblogs.com/lilpig/p/16613226.html

1. Ρόλος λειτουργίας TCC

TM: Διαχείριση συναλλαγών, που δημιουργήθηκε με τον σχολιασμό @GlobalTransaction.

TC: Συντονιστής

RM: Συμμετέχων

Η όλη διαδικασία είναι:

Το TM διαμεσολαβεί τις καθολικές συναλλαγές σας και καταχωρεί στο TC πριν από την έναρξη της εκτέλεσης
Η TM ξεκινά να εκτελεί κάθε συναλλαγή υποκαταστήματος στην καθολική συναλλαγή και η RM καταγράφει και αναφέρει τις συναλλαγές υποκαταστήματος και την κατάσταση εκτέλεσης στην TC
Μετά την ολοκλήρωση της εκτέλεσης της συναλλαγής υποκαταστήματος, η TM εκκινεί ένα αίτημα προς την TC για δέσμευση ή ανάκληση της συνολικής συναλλαγής.

2. Η έννοια της δέσμευσης, υποβολής και επαναφοράς πόρων TCC.

Κράτηση σημαίνει κλείδωμα και ενημέρωση του πόρου της βάσης δεδομένων σε μια ενδιάμεση κατάσταση και, στη συνέχεια, αλλαγή του στην πραγματική κατάσταση όταν εκτελείται η δέσμευση δεύτερου σταδίου μετά την επιβεβαίωση.Έτσι, η φάση της κράτησης και η φάση επαναφοράς δεσμεύσεωνΌλα περιλαμβάνουν λειτουργικές βάσεις δεδομένων, επομένως ενδέχεται να υπάρχουν επίσης αποτυχίες επιβεβαίωσης και επαναφοράς που απαιτούν μη αυτόματη επεξεργασία, οι οποίες μπορούν να επιλυθούν με εγγραφή αρχείων καταγραφής, αντιστάθμιση επαναλήψεων κ.λπ.

3. Πλεονεκτήματα και μειονεκτήματα του TCC

Πλεονεκτήματα της λειτουργίας TCC

  1. Άμεση υποβολή σε ένα στάδιο, χωρίς κλειδαριές DB, χωρίς άλλες κλειδαριές, καλή απόδοση
  2. Η λογική κράτησης και ανάκτησης είναι γραμμένη από εσάς και δεν εξαρτάται από τη βάση δεδομένων. Μπορεί να χρησιμοποιηθεί σε βάσεις δεδομένων χωρίς συναλλαγές.

Μειονεκτήματα της λειτουργίας TCC

  1. Η κωδικοποίηση είναι πολύπλοκη
  2. Ασθενώς συνεπής
  3. επειδήConfirmκαιCancelΜπορεί επίσης να αποτύχει και πρέπει να αντιμετωπίσετε αυτή τη διαδικασία
  4. Ορισμένες επιχειρήσεις δεν είναι κατάλληλες για το μοντέλο TCC. Για παράδειγμα, η τοποθέτηση μιας παραγγελίας είναι μια διαδικασία προσθήκης μιας νέας σειράς.

4. Λειτουργία XA

Ισχυρή συνέπεια, με συντονισμό όταν δεσμεύονται και ανατρέπονται οι τοπικές συναλλαγές κάθε συμμετέχοντα.

Πλεονεκτήματα της λειτουργίας XA

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

Μειονεκτήματα της λειτουργίας XA

  1. Κάθε συναλλαγή πρέπει να περιμένει να ολοκληρωθεί όλη η επεξεργασία συναλλαγών, καταλαμβάνοντας κλειδώματα βάσης δεδομένων, με αποτέλεσμα κακή απόδοση και χαμηλή διαθεσιμότητα.
  2. Δεν μπορεί να χρησιμοποιηθεί εάν η βάση δεδομένων δεν υποστηρίζει συναλλαγές XA

5. Λειτουργία AT

αδύναμη συνοχή