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

πύλη

2024-07-12

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

βασικές έννοιες πύλης

1. Διαδρομή
Η δρομολόγηση είναι το πιο βασικό μέρος της πύλης Οι πληροφορίες δρομολόγησης περιλαμβάνουν ένα αναγνωριστικό, ένα URI προορισμού, ένα σύνολο εργοστασίων διαβεβαίωσης και ένα σύνολο φίλτρων. Εάν ο ισχυρισμός είναι αληθής, η ζητούμενη διεύθυνση URL ταιριάζει με τη διαμορφωμένη διαδρομή.
2. Κατηγορήματα
     Η λειτουργία Assert επιτρέπειΟι προγραμματιστές ορίζουναγώναςστο αίτημα HttpΟποιεσδήποτε πληροφορίες, όπως κεφαλίδες και παράμετροι αιτημάτων κ.λπ.
3. Φίλτρο
Το φίλτρο χωρίζεται σε Φίλτρο πύλης και Καθολικό φίλτρο. Το φίλτρο μπορεί να επεξεργαστεί αιτήματα και απαντήσεις.


πύλη γρήγορη εκκίνηση

1. Εισαγάγετε τις εξαρτήσεις
Σημείωση: Θα έρθει σε διένεξη με τις εξαρτήσεις του spring-webmvc, επομένως το spring-webmvc πρέπει να εξαιρεθεί.
2. Γράψτε το αρχείο διαμόρφωσης yml
server.port = 8088 είναι Θύρα πρόσβασης πύλης
Spring.application.name είναι Το όνομα υπηρεσίας της τρέχουσας υπηρεσίας πύλης
Οι κανόνες δρομολόγησης ορίζονται παρακάτω gateway.routes:
id είναι το όνομα αυτού του κανόνα δρομολόγησης Μπορεί να υπάρχουν πολλοί κανόνες δρομολόγησης στο gateway.routes
url: Πρόσβαση στην υπηρεσία της τρέχουσας πύλης, Σε ποια διεύθυνση url να προωθηθεί;, Πρώτα απ 'όλα, δεν μπορώ να προωθήσω όλα τα αιτήματα στην πύλη Πρέπει να πληρούνται ορισμένες προϋποθέσεις.
κατηγορήματα: όταν Το αίτημα φτάνει στην τρέχουσα πύλη(Ετσι Αυτό το αίτημα πρέπει να φέρει τον αριθμό θύρας IP + της τρέχουσας πύλης. πληροφορίες, ακολουθούμενες από κάθετο /, ώστε η πύλη να μπορεί προεπιλογή ότι αυτές οι πληροφορίες είναι διαθέσιμες,Αυτές οι πληροφορίες δεν χρειάζεται να λαμβάνονται υπόψη σε κατηγορήματα), Εάν η διεύθυνση URL μετά τον αριθμό θύρας ξεκινά με /order-serv/**,Ετσι Απλώς προωθήστε τη θύρα ip + του παραπάνω url . και κάθετο /Όλες οι επόμενες διαδρομές δεν θα αφαιρεθούν, στη συνέχεια προωθείται στη διεύθυνση http://localhost:8020/order-serv/order/add
(order-serv είναι το όνομα της υπηρεσίας που εμποδίζει την υπηρεσία παραγγελίας να έχει διεύθυνση που ξεκινά με /order/add και η υπηρεσία αποθέματος έχει επίσης διεύθυνση που ξεκινά από /order/add, έτσι Τα αιτήματα που αποστέλλονται στην πύλη φέρουν το όνομα της υπηρεσίας που πρόκειται να προωθηθεί.),αλλά Δεν υπάρχει /order-serv/ στο αίτημα που έλαβε η υπηρεσία παραγγελιών., μόνο το αίτημα που αποστέλλεται είναι http://localhost:8020/order/add, ώστε να μπορεί να ληφθεί. Αφήστε την πύλη να αφαιρέσει τη διαδρομή του πρώτου στρώματος, φιλτράρετε τα προθέματα μέσω φίλτρων
Εάν ο ισχυρισμός δεν ικανοποιηθεί, θα αναφερθεί ένα σφάλμα 404.


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

Μπορούμε εύκολα να λύσουμε αυτά τα προβλήματα ενσωματώνοντας το gateway και το nacos

Ενσωματώστε το Nacos

1. Συνεχίστε να εισάγετε τις εξαρτήσεις του nacos
2. Συνεχίστε να γράφετε το αρχείο διαμόρφωσης yml
(1) Για να ενσωματώσετε το nacos, απλώς καταχωρήστε την τρέχουσα υπηρεσία πύλης στο nacos και γράψτε τη διεύθυνση υπηρεσίας nacos και τον κωδικό πρόσβασης λογαριασμού
(2) Αλλάξτε τη διεύθυνση της υπηρεσίας που θα προωθηθεί στους κανόνες δρομολόγησης στο όνομα υπηρεσίας "παραγγελία-υπηρεσία" (url: order-service) και επειδή πρέπει να χρησιμοποιήσετε τη στρατηγική εξισορρόπησης φορτίου της κορδέλας που συνοδεύει το nacos, οπότε Προσθέστε lb:// μπροστά, lb σημαίνει εξισορρόπηση φορτίου ισορροπίας φορτίου.
gatewayΗ πύλη θα αντικαταστήσει ολόκληρη την "παραγγελία-υπηρεσία" με τη διεύθυνση IP μιας από τις υπηρεσίες παραγγελίας (επειδή η πύλη θα τραβάει τακτικά τη λίστα διευθύνσεων IP των διαφόρων υπηρεσιών που είναι καταχωρημένες στο nacos)
Αυτό επιλύει το πρόβλημα ότι όταν γίνεται μετεγκατάσταση του διακομιστή, αλλάζει η διεύθυνση IP ή ο διακομιστής αναπτύσσεται σε ένα σύμπλεγμα, το nginx πρέπει να χρησιμοποιηθεί για αντιστροφή διακομιστή μεσολάβησης και εξισορρόπηση φορτίου.
Συντομευμένοι κανόνες δρομολόγησης: Η συμφωνία είναι μεγαλύτερη από τη διαμόρφωση
(1) Αφού ενεργοποιήσετε τη λειτουργία αυτόματης αναγνώρισης υπηρεσιών nacos, δεν χρειάζεται να γράψετε κανόνες διεκδίκησης.
(2) Όταν ένα αίτημα που αποστέλλεται στην πύλη ξεκινά με ένα όνομα υπηρεσίας καταχωρημένο στο nacos, θα προωθηθεί αυτόματα σε έναν διακομιστή αυτής της υπηρεσίας και η διαδρομή πρώτου επιπέδου θα φιλτραριστεί αυτόματα (μειονέκτημα: οι κανόνες δρομολόγησης δεν είναι ευέλικτοι αρκετά)
Αυτή τη στιγμή, εφόσον έχετε πρόσβαση σε αυτό σύμφωνα με τη μορφή διεύθυνσης πύλης/μικροϋπηρεσίας/διεπαφής, μπορείτε να λάβετε μια επιτυχημένη απάντηση.


εργοστάσιο διεκδίκησης

Η πραγματοποίηση ισχυρισμών με βάση τη διεύθυνση URL είναι το ενσωματωμένο εργοστάσιο διαβεβαίωσης της πύλης.



Εργοστάσιο βεβαίωσης προσαρμοσμένης δρομολόγησης

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

προσαρμόστε Ένα εργοστάσιο διαβεβαίωσης που βασίζεται σε παραμέτρους αιτήματος ερωτήματος, Πρέπει να κληρονομήσετε την κλάση AbstractRoutePredicateFactory και να ξαναγράψετε τη λογική της μεθόδου εφαρμογής. Στη μέθοδο εφαρμογής, μπορείτε να λάβετε το αντικείμενο ServerHttpRequest μέσω του exchange.getRequest(), ώστε να μπορείτε να λάβετε τις παραμέτρους αιτήματος, τη μέθοδο αιτήματος, την κεφαλίδα αιτήματος και άλλες πληροφορίες.
1. Πρέπει να είναι ανοιξιάτικο συστατικό, δηλαδή φασόλι
2. Η κλάση πρέπει να προστεθεί RoutePredicateFactory ως τέλος
3. Πρέπει να κληρονομηθεί AbstractRoutePredicateFactory
4. Πρέπει να δηλώσετε μια στατική εσωτερική κλάση και να δηλώσετε χαρακτηριστικά για να λάβετε τις αντίστοιχες πληροφορίες βεβαίωσης στο αρχείο διαμόρφωσης.
5. Ανάγκη συνδυασμού συντόμευσηFieldOrder Δένω
6. Χρησιμοποιήστε την εφαρμογή για να κρίνετε λογικά εάν η αλήθεια είναι μια επιτυχημένη αντιστοίχιση ή η ψευδής είναι μια αποτυχημένη αντιστοίχιση.


Φίλτρο (πρώτα φιλτράρετε και μετά δρομολόγηση)

(1) Αρχικά επεξεργαστείτε τη διεύθυνση URL που ζητήσατε μέσω του φίλτρου ή προσθέστε, διαγράψτε και τροποποιήστε ορισμένες πληροφορίες, όπως κεφαλίδες αιτημάτων, cookie κ.λπ.

(2) Στη συνέχεια, δρομολογήστε στον αντίστοιχο διακομιστή μέσω της λίστας υπηρεσιών nacos

Ο ρόλος του φίλτρου: Όταν ένα αίτημα έρχεται στην πύλη, μπορούμε να επεξεργαστούμε το αίτημα με επιχειρηματική λογική.

για παράδειγμα:

(1) Περάστε το φίλτρο από το μπροστινό μέροςΑφαιρέστε το πρώτο στρώμα μονοπατιών

(2) Μπορείτε να προσθέσετε μια κεφαλίδα αιτήματος σε όλα τα αιτήματα που έρχονται στην πύλη και, στη συνέχεια, να ορίσετε το περιεχόμενο μέσα.

(3) Μπορείτε να ορίσετε ένα cookie για όλα τα αιτήματα που έρχονται στην πύλη κ.λπ.

Για λεπτομέρειες σχετικά με όλα τα ενσωματωμένα φίλτρα, επισκεφτείτε τον επίσημο ιστότοπο

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gatewayfilter-factories

Ακολουθούν μερικά παραδείγματα κώδικα:

Η δοκιμαστική διεύθυνση αποστέλλεται στην πύλη πύλης

Περάστε στην ακόλουθη διεύθυνση @GetMapping μέσω διαδρομών και τον ακόλουθο κώδικα για να λάβετε το αίτημα και να απαντήσετε

παράδειγμα 1:

Παράδειγμα 2
Παράδειγμα 3
Η προηγούμενη διεύθυνση URL αποστέλλεται στην πύλη, φιλτράρεται και έχει το πρόθεμα /mall-order. Αυτή τη στιγμή, για να μπορεί ο διακομιστής να λαμβάνει απαντήσεις, πρέπει να ρυθμιστεί έτσι ώστε όλα τα αιτήματα που αποστέλλονται να φέρουν /mall-order.Με αυτόν τον τρόπο, ο διακομιστής μπορεί κανονικά να λαμβάνει αιτήματα που δρομολογούνται από την πύλη.
Παράδειγμα 4
Τα αιτήματα που αποστέλλονται στην τρέχουσα πύλη θα δρομολογούνται στον ιστότοπο του Baidu
Το 302 είναι ο κωδικός κατάστασης απόκρισης μετά την ανακατεύθυνση


Προσαρμοσμένα φίλτρα



παγκόσμιο φίλτρο

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


Προσαρμοσμένα καθολικά φίλτρα (κλειδιά)

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

Εναλλακτικά, μπορείτε να προσαρμόσετε τα καθολικά φίλτρα για να καθορίσετε τη σύνδεση χρήστη και τα δικαιώματα.

Η προσαρμογή των καθολικών φίλτρων είναι πολύ εύκολη
1. Ορίστε μια κλάση και αφήστε την στο κοντέινερ springIOC για διαχείριση, δηλαδή προσθέστε σχολιασμούς ελατηρίου. @Compenent
2. Κληρονομήστε τη διεπαφή GlobalFilter, για να ξαναγράψετε τη μέθοδο φίλτρου μέσα, χρειάζεται μόνο να γράψετε το σώμα της μεθόδου μέσα.
3. Ανταλλαγή παραμέτρωνσε Περιέχει Μπείτε σε αυτήν την πύληΖητούνται όλες οι πληροφορίες, αφαιρέστε τη διεύθυνση url, τις κεφαλίδες, τα cookie, τις παραμέτρους διαδρομής και άλλες πληροφορίες και, στη συνέχεια, εκτελέστε τις αντίστοιχες επιχειρησιακή επεξεργασία
4. επιστροφή chain.filter(exchange) Απελευθερώστε το αίτημα


Αίτημα καταγραφής

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



διαμόρφωση πύλης μεταξύ τομέων

Cross-domain: Όταν το αίτημα http δεν βρίσκεται στην ίδια IP + την ίδια θύρα, ονομάζεται cross-domain.

(Μόνο η ίδια IP + η ίδια θύρα ονομάζεται ο ίδιος τομέας και και οι δύο ικανοποιούνται ότι βρίσκονται στον ίδιο τομέα)

1. Διαμόρφωση μέσω yml , διαμορφωμένο στο επόμενο επίπεδο πύλης

Το περιεχόμενο διαμόρφωσης μπορεί να τροποποιηθεί μεταξύ τομέων μόνοι σας
2. Ορισμός μέσω της κλάσης διαμόρφωσης


φρουρός σε συνδυασμό με πύλη πύλης

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

ο φρουρός χωρίζεται σε δύο μέρη
Προϋπόθεση: κατεβάστε το πρόγραμμα-πελάτη φρουρού από τον απομακρυσμένο διακομιστή, εγκαταστήστε το και εκτελέστε το
Η υπηρεσία πύλης απαιτεί μόνο:
Το αρχείο διαμόρφωσης της υπηρεσίας πύλης συν τη θύρα IP +, τον κωδικό πρόσβασης του λογαριασμού του πελάτη φρουρού
Με αυτόν τον τρόπο, ενσωματώνεται η υποβάθμιση ελέγχου ροής του φρουρού.
Ο φρουρός έχει ειδικούς κανόνες για τις υπηρεσίες πύλης, η διεπαφή του είναι διαφορετική από τη διεπαφή υποβάθμισης ελέγχου ροής για μεθόδους (είσοδοι υπηρεσίας) στον ελεγκτή.
Μπορείτε να περιορίσετε την τρέχουσα ροή με βάση αυτούς τους κανόνες στο εργοστάσιο βεβαίωσης.
Η ροή μπορεί να περιοριστεί με βάση μια συγκεκριμένη IP, όνομα απομακρυσμένου τομέα, κεφαλίδα αιτήματος, παραμέτρους στη διεύθυνση URL και τιμή cookie.


Προσαρμόστε το περιεχόμενο απόκρισης του φρουρού σε συνδυασμό με την πύλη

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

Εάν τέτοιο περιεχόμενο δεν είναι αυτό που θέλουμε, πρέπει να προσαρμόσουμε τον τρόπο απόκρισης σε εξαιρέσεις.Υπάρχουν δύο τρόποι

Μέθοδος 1: (απλή)

 

Στη διαμόρφωση yml, γράψτε το παραπάνω περιεχόμενο σε επίπεδα,

άνοιξη . σύννεφο . φρουρός . scg . εναλλακτική . απάντηση σώμα = "{"code":403,"mes":" Τρέχον όριο "}'
Το περιεχόμενο μετά το σώμα απάντησης είναι το προσαρμοσμένο περιεχόμενο απόκρισης (σε μορφή json) , το περιεχόμενο που γράφτηκε είναι το περιεχόμενο της απάντησης
Τρόπος 2:

Ορίστε τον κωδικό κατάστασης απόκρισης, τον τύπο απόκρισης (σε μορφή json) και το περιεχόμενο απόκρισης ("Υποβαθμισμένο!")



Gateway υψηλή διαθεσιμότητα