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

Grain Mall Practical Notes-27-Distributed Components-SpringCloud-Gateway-Creation

2024-07-12

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

Το κύριο περιεχόμενο αυτής της ενότητας είναι η δημιουργία της μονάδας πύλης, η καταχώρηση της πύλης στο Nacos και η διαμόρφωση της δρομολόγησης για δοκιμή.

1. Δημιουργήστε μια μονάδα πύλης

Κάντε δεξί κλικ στο έργοNew->Module, δημιουργήστε μια νέα ενότητα, όνομα μονάδας gulimall-gateway

Εισαγάγετε την περιγραφή της εικόνας εδώ

Συμπληρώστε διάφορες πληροφορίες.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Επιλέξτε Εξάρτηση πύλης.

Εισαγάγετε την περιγραφή της εικόνας εδώ
Κάντε κλικ στο Create για να δημιουργήσετε τη μονάδα.

2. Διαμόρφωση υπηρεσίας πύλης

1. Βασιστείτε στην κοινή μονάδα

		<dependency>
            <groupId>com.atguigu.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

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

2. Ξεκινήστε την ανακάλυψη υπηρεσίας

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

@EnableDiscoveryClient
  • 1

3. Δημιουργήστε αρχείο ρυθμίσεων

Δημιουργήστε τρία νέα αρχεία διαμόρφωσης στον κατάλογο πόρων.

① εφαρμογή.ιδιότητες

Διαμόρφωση πληροφοριών σχετικά με το κέντρο εγγραφής Nacos.

server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
  • 1
  • 2
  • 3

② bootstrap.properties

Διαμόρφωση των σχετικών πληροφοριών του κέντρου διαμόρφωσης Nacos Σημειώστε ότι πρέπει να δημιουργηθεί εκ των προτέρων ένας χώρος ονομάτων στο Nacos Όλα τα αρχεία διαμόρφωσης της μονάδας πύλης είναι αποθηκευμένα σε αυτόν τον χώρο ονομάτων.

Εισαγάγετε την περιγραφή της εικόνας εδώ

spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
  • 1
  • 2
  • 3

③ application.yml

Σε αυτό το αρχείο, γράψτε τη διαμόρφωση δρομολόγησης πύλης Δείτε την επόμενη ενότητα για λεπτομέρειες.

3. Διαμόρφωση δρομολόγησης πύλης

1. Διαμόρφωση δρομολόγησης

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

Ο ρόλος της πύλης είναι να προωθήσει τα λαμβανόμενα αιτήματα στις αντίστοιχες υπηρεσίες σύμφωνα με τους κανόνες που έχει διαμορφώσει η πύλη.

Για τη διευκόλυνση της επίδειξης, με την προϋπόθεση ότι υπάρχει τέτοια ζήτηση, όταν η ακόλουθη διεύθυνση URL εισαχθεί στο πρόγραμμα περιήγησης, το αίτημα θα προωθηθεί στο Baidu.

http://localhost/?url=baidu
  • 1

Όταν η ακόλουθη διεύθυνση URL εισαχθεί στο πρόγραμμα περιήγησης, το αίτημα θα προωθηθεί στην Tencent.

http://localhost/?url=qq
  • 1

Πώς να γράψετε ένα αρχείο ρυθμίσεων;

Αποθετήριο Spring Cloud GatewayΕπίσημη τεκμηρίωση, ανατρέξτε στη μορφή του.

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

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ανατρέξτε σε αυτό το έγγραφο για διαμόρφωση.

εφαρμογή.yml

spring:
  cloud:
    gateway:
      routes:
        - id: baidu_test
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        - id: qq_test
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Εδώ ορίζονται δύο κανόνες δρομολόγησης για τη χρήση παραμέτρων ερωτήματοςurlΗ τιμή καθορίζει το URI-στόχο στο οποίο πρέπει να προωθηθεί το αίτημα.

  • spring.cloud.gateway.routes: Αυτή είναι η λίστα διαμόρφωσης δρομολόγησης του Spring Cloud Gateway.

  • καθεroutesΤο στοιχείο ορίζει έναν κανόνα δρομολόγησης.

  • id: Κάθε κανόνας δρομολόγησης απαιτεί ένα μοναδικό αναγνωριστικό για τον εντοπισμό και τη διαχείριση διαδρομών.

  • uri : Όταν ο κανόνας δρομολόγησης ταιριάζει, το αίτημα θα προωθηθεί σε αυτήν τη διεύθυνση URI.εδώhttps://www.baidu.comκαιhttps://www.qq.comΟι διευθύνσεις URL των ιστότοπων Baidu και Tencent καθορίζονται αντίστοιχα.

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

    • Query=url,baidu: Αυτός ο ισχυρισμός υποδεικνύει ότι εάν το αίτημα περιέχει αurlπαράμετρος ερωτήματος και η τιμή της είναι ίση μεbaidu, τότε αυτός ο κανόνας δρομολόγησης θα ενεργοποιηθεί και το αίτημα θα προωθηθεί στοhttps://www.baidu.com

    • Query=url,qq: Ομοίως, εάν η παράμετρος ερωτήματοςurlΗ τιμή είναιqq, το αίτημα θα προωθηθεί στοhttps://www.qq.com

Με αυτόν τον τρόπο, όταν η εφαρμογή σας λαμβάνει ένα μήνυμα μεurl=baiduήurl=qqΌταν ζητάτε παραμέτρους ερωτήματος, το Spring Cloud Gateway θα μεταφέρει το αίτημα στον αντίστοιχο ιστότοπο σύμφωνα με τους παραπάνω κανόνες.

2. Επαλήθευση

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

http://localhost/?url=baidu
  • 1

Εισαγάγετε την περιγραφή της εικόνας εδώ

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

αρχείο καταγραφής σφαλμάτων

Θα αναφερθεί ένα σφάλμα κατά την εκκίνηση του Gateway.

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-07-11 15:57:32.988 ERROR 27224 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Εισαγάγετε την περιγραφή της εικόνας εδώ

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

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

Εισαγάγετε την περιγραφή της εικόνας εδώ

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
  • 1