Λειτουργίες και εξαρτήσεις υπηρεσιών διαχείρισης →
Εξαρτήσεις από την υπηρεσία
1) Γιατί το χρειάζεστε
Κάθε πλατφόρμα παραγωγής αποτελεί καταμέτρηση: χρήστες → Edge/API → υπηρεσίες τομέα → στροφές/ροές → DB/caches → εξωτερικούς παρόχους (πληρωμές, KYC, πάροχοι παιχνιδιών). Ένα σφάλμα στο ένα άκρο του γραφήματος συχνά «περπατάει» σε όλο το δίκτυο: οι καθυστερήσεις αυξάνονται, οι ρετράι ενεργοποιούνται, οι ουρές κλείνονται, οι αστοχίες κλεισίματος συμβαίνουν. Η διαχείριση της εξάρτησης μειώνει την «ακτίνα έκρηξης» και καθιστά προβλέψιμες τις εκλύσεις.
Στόχοι:- Δείτε το πλήρες γράφημα των κλήσεων και κατανοήστε ποιος εξαρτάται από ποιον.
- Πρόληψη αστοχιών καταρράκτη και «καταιγίδα αναδρομής».
- Εκδόσεις σχεδίων με βάση τη συμβατότητα και την προώθηση της SLO.
- Αύξηση MTTR: Βρείτε την πραγματική αιτία της ρίζας γρηγορότερα.
2) Τύποι εξαρτήσεων
Συγχρονισμένη (RPC: REST/gRPC/GraphQL): σκληρή συνδεσιμότητα ανά καθυστέρηση/διαθεσιμότητα. Χρειαζόμαστε χρονοδιαγράμματα, διαλείμματα, ανακατασκευή του προϋπολογισμού.
Ασύγχρονη (Event/Stream: Kafka/Rabbit/Pulsar): πιο σταθερή συνδεσιμότητα, αλλά υπάρχει καθυστέρηση/καθυστέρηση και σημασιολογία παράδοσης (τουλάχιστον μία φορά, idempotency).
Αποθήκευση (DB/Cache/Object store): κοινοί πόροι → περιεχόμενο, όρια σύνδεσης/IOPS, έξωση, αντιγραφή.
Εξωτερικοί πάροχοι (πάροχοι PSP/KYC/παιχνιδιών): ποσοστώσεις, κλήσεις διοδίων, παράθυρα υπηρεσιών, νόμιμες SLA.
Λειτουργία (απελευθερώσεις, phicheflags, ρυθμίσεις): έμμεσες εξαρτήσεις μέσω ρυθμίσεων, μυστικών, schema registry.
3) Κατάλογος υπηρεσιών και γραφήματα εξάρτησης
Τι καθορίζουμε στον κατάλογο (Backstage/Service Catalog/CMDB):- Ιδιοκτήτες (Squad/chat/On-call rota), repo, περιβάλλον, αντικείμενα.
- Συμβάσεις API (OpenAPI/AsyncAPI), εκδόσεις, συμβατότητα (back/forward).
- Εισερχόμενες/εξερχόμενες εξαρτήσεις (ανάντη/κατάντη) με τύπο (sync/async), κρισιμότητα, προσδοκίες SLO.
- Προϋπολογισμός χρονικού περιθωρίου/υποχώρησης, διακόπτες, δεξαμενές στεγανών.
- Στοιχεία για τις ποσοστώσεις και τα όρια της εξωτερικής ολοκλήρωσης.
- «Υπηρεσίες: πληρωμές-api»
- Ανάντη: 'προφίλ χρήστη' (sync), 'βαθμολογία κινδύνου' (async).
- Κατάντη: 'PSP-X' (sync, квота 2k RPS), 'ledger' (async).
- SLO: p99 ≤ 300ms, 99. 9% uptime.
- Timeouts: 200 ms έως 'PSP-X', 150 ms έως 'προφίλ χρήστη'.
- Ρετράι: 2 με εκθετική καθυστέρηση, νευρικότητα.
- Διακόπτης: άνοιγμα για 30s σε σφάλματα 5 %/10s.
4) Προπαγάνδα SLO και «προϋπολογισμός καθυστέρησης»
Με μια αλυσίδα συγχρονισμένων κλήσεων, το σύνολο SLO σχηματίζεται από το άθροισμα των καθυστερήσεων και των πιθανοτήτων αστοχίας.
Αρχές:- Ο προϋπολογισμός της αίτησης διαιρείται από πάνω προς τα κάτω: front-end SLO 500 ms → Edge 50 ms → API 150 ms → domain services 200 ms → provider 100 ms.
- Timeouts «out are shorter that in»: ο καλών έχει ένα timeout λιγότερο από το συνολικό εσωτερικό timeout έτσι ώστε οι πόροι να ενημερώνονται, και οι κλήσεις ζόμπι δεν συσσωρεύονται.
- Retrai μόνο για ασφαλείς κωδικούς/εξαιρέσεις και με νευρικότητα· δεν υπάρχουν retrays για χρονοδιαγράμματα συμφόρησης (άλλως «καταιγίδα»).
5) Συμβάσεις και διαλειτουργικότητα
Έκδοση API: SemVer για συμβάσεις· αλλαγές συμβατές προς τα πίσω μέσω των «προαιρετικών» πεδίων, επεκτάσεις σχημάτων· διαγραφή - μόνο μέσω της «παρωχημένης περιόδου».
Συμβάσεις με γνώμονα τον καταναλωτή (ΚΕΕΛΠΝΟ): Δοκιμές καταναλωτή (παρόμοιες με το σύμφωνο) κατά παρόχου CI· η απελευθέρωση εμποδίζεται εάν δεν είναι συμβατή.
Σχήμα εγγραφής (Async): έκδοση θεμάτων/γεγονότων, εξέλιξη σχημάτων (Avro/JSON-Schema), can-read-old/can-write-new policy.
6) Πρότυπα μηχανικής σταθερότητας
Χρονοδιάγραμμα: διαχωρισμός των ΕΕΔ επιχειρήσεων από τις τεχνικές προσδοκίες. κάθε εξερχόμενη σύνδεση αποτελεί ρητό χρονικό περιθώριο.
Removes + backoff + jitter: όχι περισσότερες από 2-3 απόπειρες, δεδομένης της ταυτότητας.
Διακόπτης κυκλώματος: «ταχεία πτώση» σε κατάντη υποβάθμιση. Ημι-ανοικτή δίκη.
Διάφραγμα (απομόνωση της δεξαμενής): για διαφορετικά κατάντη - χωριστές δεξαμενές ρευμάτων/δαπέδων/συνδέσεων.
Όριο ταχύτητας/κουβάς διαρροής: ώστε να μην θανατώνονται κατάντη στις κορυφές.
Idempotency & deduplication: κλείδα ταυτότητας επιπέδου αιτήματος/μηνύματος· ο παππούς-δερμάτινος και η ουρά υποχώρησης.
Αποθήκευση και θύλακες: τοπικές/κατανεμημένες κρύπτες, status states state stale-while-revalidate, υποβάθμιση περιεχομένου.
outbound:
psp-x:
timeout_ms: 200 retries: 2 retry_on: [5xx, connect_error]
backoff: exponential jitter: true circuit_breaker:
error_rate_threshold: 0. 05 window_s: 10 open_s: 30 pool: dedicated-psp (max_conns: 200)
7) Παρατηρησιμότητα εξαρτήσεων
Κατανεμημένα ίχνη (TraceID, αποσκευές): βλέπε τη διαδρομή του αιτήματος από συνδέσμους. εκτείνεται σε εξερχόμενες κλήσεις με "ετικέτες ομοτίμων. υπηρεσία "," retriby "," timeout ".
ανά εξάρτηση: 'outbound _ latency _ p99', 'outbound _ erry _ rate', 'open _ circuit', 'retry _ coun Метрики,' queue _ lag '.
- SLO και εσφαλμένος έγχρωμος χάρτης υπηρεσιών με κωδικό ακμής.
- «Κορυφαίες εξαρτήσεις προβλημάτων Ν» την τελευταία εβδομάδα.
- «Ακτίνα έκρηξης» - κατάλογος υπηρεσιών που θα επηρεαστούν από την πτώση του X.
- Καταγραφές συσχέτισης: συμπεριλαμβάνονται τα 'trace _ id '/' span _ id' στα αρχεία καταγραφής.
8) Διαχείριση ελευθέρωσης με επίγνωση της εξάρτησης
Αγωγοί με επίγνωση της εξάρτησης: Η απελευθέρωση του παρόχου εμποδίζεται εάν οι δοκιμές CDC για τους καταναλωτές είναι κόκκινες.
Σταδιακή ένταξη (phicheflags): νέα πεδία/τελικά σημεία → για το 1% των καταναλωτών → 10% → 100%.
Canary releases: ελέγχουμε τις βασικές εξαρτήσεις και τον «προϋπολογισμό καθυστέρησης» στο μερίδιο της κυκλοφορίας.
Συμβατότητα των συστημάτων: ο παραγωγός γράφει «vNew», οι καταναλωτές διαβάζουν «vOld/vNew». μετά τη μετάβαση - «συλλογή απορριμμάτων» παλαιών αγροκτημάτων.
9) Περιστατικά και κλιμακώσεις ανά στήλη
Ορίζουμε τον «πραγματικό ένοχο»: συναγερμό-συσχέτιση - αν το 'PSP-X' έχει υποβαθμιστεί, δεν σελιδοποιούμε ολόκληρο τον «θάμνο πληρωμής», αλλά τον ιδιοκτήτη της ενσωμάτωσης.
Αυτοαποικοδόμηση: phicheflag «ελάχιστη κατάσταση» (λιγότερο βαριά τελικά σημεία, κομμένες δέσμες, μη κρίσιμα χαρακτηριστικά απενεργοποίησης).
Φρουρά από καταρράκτες: περιορισμός του παραλληλισμού, απενεργοποίηση των ρετρών σε ένα καυτό κλαδί, άνοιγμα του διακόπτη εκ των προτέρων (προ-ανοικτό).
- Διαγνωστική: τι ταμπλό/μετρήσεις, πώς να ελέγξετε ποσοστώσεις/όρια.
- Ενέργειες: μείωση RPS, μετάβαση σε εφεδρικό πάροχο, προσωρινή δυνατότητα αποκρίσεων κρυφής μνήμης.
- Rollback και επικύρωση: παράμετροι επιστροφής, βεβαιωθείτε ότι ο κανόνας είναι p95/p99 και ρυθμός σφάλματος.
10) Πίνακας κρίσιμης σημασίας για την εξάρτηση
Αξιολόγηση κάθε συνδέσμου κατά μήκος των αξόνων: Κανόνες:- Για «κρίσιμη» - διπλή πρόβλεψη, διακόπτες, μεμονωμένες ομάδες, δοκιμές χάους.
- Για την «υψηλή» - τουλάχιστον υποβάθμιση και το «πράσινο κουμπί» για να απενεργοποιηθεί η λειτουργία.
- Για «μέτρια/χαμηλή» - όρια επαναπροσδιορισμού και προϋπολογισμός αναμονής.
11) Διαδικασία: από την απογραφή στη λειτουργία
1. Χαρτογράφηση γραφημάτων: συλλογή πραγματικών κλήσεων (ίχνη) + δηλωτικών εξαρτήσεων από τον κατάλογο.
2. Ορισμός ιδιοκτητών: για κάθε υπηρεσία και εξωτερική ολοκλήρωση - υπεύθυνη εφημερία.
3. Καθορισμός των SLO και των προϋπολογισμών: καθυστέρηση/σφάλματα, χρονοδιαγράμματα/retrays/pools.
4. Τυποποίηση συμβάσεων: OpenAPI/AsyncAPI, σχήματα και CDC.
5. Ενεργοποίηση προτύπων σταθερότητας: χρονοδιαγράμματα/επαναλήψεις/κύκλωμα/διάφραγμα.
6. Ρύθμιση πινάκων και ειδοποιήσεων ανά εξάρτηση.
7. Εγκατάσταση πυλών απελευθέρωσης: μπλοκ από CDC/συμβατότητα/καναρίνι.
8. Κανονικές ημέρες παιχνιδιού: πειράματα χάους στην πτώση των ακμών κλειδιών.
9. Μεταθανάτια με επίκεντρο την επικοινωνία: τι ενίσχυσε τον καταρράκτη, πώς να περιορίσει την ακτίνα.
12) Προειδοποιήσεις για τον εθισμό (ιδέες του κανόνα)
Συγχρονισμένες κατάντη ροές:- ' outbound _ error _ rate {to =» X»}> 3% FOR 10m' → warning; '> 5% FOR 5m' → critical.
- ' outbound _ p99 _ latency {to =» X»}> SLO1. 3 ΓΙΑ 10m '→ προειδοποίηση.
- ' circuit _ open {to =» X «} = = 1 FOR 1m '→ σελίδα στον ιδιοκτήτη ολοκλήρωσης.
- ' retry _ rate {to =» X «}> baseline2 FOR 5m '+ 'outbound _ rps> 0' → storm risk.
- ' consumer _ lag {topic =» Y»} ανάπτυξη> κατώφλι FOR 10m' + 'hpa at max' → крит.
- "χρήση _ ποσόστωσης {πάροχος =" PSP-X "}> 90% παράθυρο '→ προειδοποίηση, διαδρομές αυτόματου διακόπτη.
13) Αντι-μοτίβα
"Μια κοινή δεξαμενή ροής για όλα τα κατάντη. "Σύνολο: εμπλοκή κεφαλής γραμμής. Διαιρείται η δεξαμενή.
Χωρίς χρονοδιαγράμματα/με ατελείωτες επαναλήψεις. Έτσι γεννιέται μια καταιγίδα.
Τυφλά retrays από μη ιδεώδεις χειρουργικές επεμβάσεις. Διπλά διαγραφές/στοιχήματα.
Κρυμμένη «κοινή DB» ως σημείο σύνδεσης. Έντονος ανταγωνισμός και εμπόδια.
Η έκδοση API αλλάζει χωρίς CDC και απορρίπτει το σχέδιο. Η μάζα των αλιευμάτων πέφτει.
Παρατηρησιμότητα μόνο από υπηρεσίες και όχι από συνδέσεις. Δεν είναι ορατό πού σπάει η αλυσίδα.
14) Ταμπλό: ελάχιστο σύνολο
Χάρτης υπηρεσιών: διαδραστικός χάρτης υπηρεσιών με μετρήσεις άκρων (καθυστέρηση/σφάλμα/όγκος).
Ανάντη/κατάντη επισκόπηση: για τον ιδιοκτήτη της υπηρεσίας - εισερχόμενες εξαρτήσεις (που καλούν), εξερχόμενος (που καλεί), «κορυφαία προβλήματα».
Drilldown: ειδική κάρτα σύνδεσης: p50/p95/p99, σφάλματα κλάσης, ποσοστό ανοικτού διακόπτη, retrays, κοινοπραξία σύνδεσης, ποσοστώσεις/κόστος.
Πλαίσιο απελευθέρωσης: σχολιασμοί των κυκλοφοριών/phicheflags σε γραφήματα εξάρτησης.
15) Κατάλογος ελέγχου εφαρμογής
- Κατάλογος υπηρεσιών με ιδιοκτήτες και συμβάσεις (OpenAPI/AsyncAPI).
- Πλήρες διάγραμμα εξαρτήσεων από ίχνη (επικαιροποίηση καθημερινά).
- SLO ανά υπηρεσία και «προϋπολογισμοί καθυστέρησης» κατά μήκος της αλυσίδας.
- Ρητά χρονικά περιθώρια, εκνευριστικές υποχωρήσεις, διακόπτες, απομόνωση διαφραγμάτων.
- Δοκιμές CDC σε CI ως πύλη απελευθέρωσης.
- Ταμπλό ανά εξάρτηση και κάρτα υπηρεσίας.
- Προειδοποιήσεις για τις άκρες + καταστολή από την αιτία της ρίζας.
- Ημέρες παιχνιδιού: πάροχος/σύμπλεγμα/θεματικός έλεγχος πτώσης και υποβάθμισης.
- Σχέδιο υποβάθμισης: ποια χαρακτηριστικά απενεργοποιούμε, ποια κρύπτες ενεργοποιούμε.
- Τακτικές μεταθέσεις με δράσεις για τη μείωση της συνδεσιμότητας.
16) KPI ποιότητας διαχείρισης εξάρτησης
MTTR εξάρτησης: διάμεση ανάκτηση πλευρών.
Δείκτης ακτίνας έκρηξης: ο μέσος αριθμός επηρεαζόμενων υπηρεσιών σε περίπτωση πτώσης.
Βαθμολογία ζεύξης: το ποσοστό των συγχρονισμένων εξαρτήσεων μεταξύ όλων· πτωτική τάση.
CDC Pass Rate:% των απελευθερώσεων χωρίς παραβίαση σύμβασης.
Επανάληψη καταιγίδων/μηνιαίου στόχου → 0.
Κόστος εξωτερικών κλήσεων: κόστος εξωτερικών κλήσεων ανά 1k RPS (βλέπε επιπτώσεις της αποθήκευσης σε θήκη/θύλακες).
17) Γρήγορη εκκίνηση (αθετήσεις)
Χρονοδιάγραμμα: 70-80% του προϋπολογισμού σύνδεσης. ζητούν ανώτερο χρονικό όριο <άθροισμα εσωτερικού.
Retrai: max 2, μόνο στο idempotent 5xx/network, με backoff + jitter.
Διακόπτης: όριο 5% σφαλμάτων σε 10 s, ανοικτό = 30 s, ημι-ανοικτά δείγματα.
Διάφραγμα: ειδικές δεξαμενές/όρια σύνδεσης ανά κατάντη.
CDC: Υποχρεωτικό για όλα τα δημόσια API και θέματα.
Προτίμηση Async: όπου είναι δυνατόν - μετάβαση σε γεγονότα/ουρές (αποσύνδεση στο χρόνο).
18) ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ
Ε: Τι είναι πιο σημαντικό: μια υποχώρηση ή ένας διακόπτης
A: Και τα δύο. Το ρετράι σώζεται από βραχυπρόθεσμες αποτυχίες, ο διακόπτης προστατεύει από μόνιμη υποβάθμιση και καταιγίδες.
Ε: Πώς γνωρίζετε ότι η σύνδεση είναι «πολύ εύθραυστη»
A: Υψηλή συσχέτιση σφάλματος, χαμηλό περιθώριο χρονικού περιθωρίου, συχνές επανασυσκευασίες, χωρίς θύλακες/κρύπτες, σύγχρονες μακριές αλυσίδες.
Ε: Γιατί το ΚΕΕΛΠΝΟ να έχει δοκιμές ενσωμάτωσης
A: Το ΚΕΕΛΠΝΟ αποτυπώνει τις προσδοκίες των καταναλωτών και διακόπτει την απελευθέρωση του παρόχου όταν είναι ασυμβίβαστο - πριν ο κώδικας μπει στην παραγωγή.