Teknologian jakaminen

Grain Mallin käytännön huomautuksia - 27 - Hajautetut komponentit - SpringCloud - Gateway - Luominen

2024-07-12

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

Tämän osan pääsisältö on luoda yhdyskäytävämoduuli, rekisteröidä yhdyskäytävä Nacosiin ja määrittää reititys testausta varten.

1. Luo yhdyskäytävämoduuli

Napsauta projektia hiiren kakkospainikkeellaNew->Module, luo uusi moduuli, moduulin nimi gulimall-gateway

Lisää kuvan kuvaus tähän

Täytä erilaisia ​​tietoja.

Lisää kuvan kuvaus tähän

Valitse Gateway-riippuvuus.

Lisää kuvan kuvaus tähän
Luo moduuli napsauttamalla Luo.

2. Yhdyskäytäväpalvelun konfigurointi

1. Riippuu yleisestä moduulista

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

Koska yhdyskäytäväpalvelun on käytettävä myös rekisteröintikeskusta ja konfigurointikeskusta, se vaatii siihen liittyviä pakettiriippuvuuksia, jotka saadaan luottamalla yhteiseen moduuliin.

2. Aloita palvelun etsiminen

Lisäämällä merkintöjä käynnistysluokkaan, palvelu voidaan rekisteröidä rekisteröintikeskukseen käynnistyksen jälkeen.

@EnableDiscoveryClient
  • 1

3. Luo asetustiedosto

Luo kolme uutta määritystiedostoa resurssihakemistoon.

① sovellus.ominaisuudet

Määritä Nacos-rekisteröintikeskukseen liittyvät tiedot.

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

② bootstrap.properties

Määritä Nacos-määrityskeskuksen olennaiset tiedot. Huomaa, että Nacosiin on luotava etukäteen kaikki yhdyskäytävämoduulin konfiguraatiotiedostot.

Lisää kuvan kuvaus tähän

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

Kirjoita tähän tiedostoon yhdyskäytävän reititysmääritykset. Katso lisätietoja seuraavasta osasta.

3. Yhdyskäytävän reitityksen määritys

1. Reitityksen määritys

Tässä osassa otamme kaksi varsinaista vaatimusta esimerkkinä harjoitellaksemme yhdyskäytävän konfigurointia.

Yhdyskäytävän tehtävänä on välittää vastaanotetut pyynnöt vastaaville palveluille yhdyskäytävän konfiguroimien sääntöjen mukaisesti.

Esittelyn helpottamiseksi, jos tällainen kysyntä on olemassa, pyyntö välitetään Baidulle, kun seuraava URL-osoite syötetään selaimeen.

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

Kun seuraava URL-osoite syötetään selaimeen, pyyntö välitetään Tencentille.

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

Kuinka kirjoittaa asetustiedosto?

Varasto Spring Cloud GatewayVirallinen dokumentaatio, katso sen muotoa.

Koska meidän on suoritettava vastaava edelleenlähetys URL-osoitteen kyselyehtojen perusteella, löydämme Gatewayn kyselyn määritysasiakirjan.

Lisää kuvan kuvaus tähän

Katso tästä asiakirjasta määritykset.

application.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

Tässä määritellään kaksi reitityssääntöä kyselyparametrien käyttöä vartenurlArvo määrittää kohde-URI:n, johon pyyntö tulee välittää.

  • spring.cloud.gateway.routes: Tämä on Spring Cloud Gatewayn reititysmääritysluettelo.

  • jokainenroutesKohde määrittää reitityssäännön.

  • id: Jokainen reitityssääntö vaatii yksilöllisen tunnuksen reittien tunnistamista ja hallintaa varten.

  • uri : Kun reitityssääntö täsmää, pyyntö välitetään tähän URI-osoitteeseen.tässähttps://www.baidu.comjahttps://www.qq.comBaidu- ja Tencent-verkkosivustojen URL-osoitteet on määritetty vastaavasti.

  • predicates : Tämä on reitityssäännön väiteluettelo, jota käytetään määrittämään, tuleeko tätä reitityssääntöä soveltaa. Väitteet ovat lausekkeita, jotka arvioidaan pyynnön metatietojen perusteella.

    • Query=url,baidu: Tämä väite osoittaa, että jos pyyntö sisältää aurlkyselyparametri, ja sen arvo on yhtä suuri kuinbaidu, tämä reitityssääntö käynnistyy ja pyyntö välitetään osoitteeseenhttps://www.baidu.com

    • Query=url,qq: Samoin, jos kyselyparametriurlArvo onqq, pyyntö välitetään osoitteeseenhttps://www.qq.com

Tällä tavalla, kun sovelluksesi vastaanottaa viestin kanssaurl=baidutaiurl=qqPyydettäessä kyselyparametreja Spring Cloud Gateway välittää pyynnön vastaavalle verkkosivustolle yllä olevien sääntöjen mukaisesti.

2. Vahvistus

Siirry selaimessasi seuraavaan osoitteeseen.

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

Lisää kuvan kuvaus tähän

Jos sinulla on yllä oleva liitäntä, se tarkoittaa, että yhdyskäytävän palvelun kokoonpano ja reititysmääritykset ovat normaaleja.

virheloki

Virhe ilmoitetaan Gatewayn käynnistyksen aikana.

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

Lisää kuvan kuvaus tähän

Syynä on se, että Gateway-moduuli on riippuvainen yleisestä ja yhteinen moduuli ilmoittaa olevansa riippuvainen mybatisista. Mybatis-paketti etsii tietokantaan liittyviä konfiguraatioita käynnistyksen yhteydessä, ja Gateway-projekti ei vaadi tietokantaa, joten asiaankuuluvaa kokoonpanoa ei ole. .

Ratkaisu on kertoa yhdyskäytävämoduulille, että tietokantaan liittyviä määrityksiä ei tarvitse etsiä käynnistyksen yhteydessä ja että voit sulkea pois asiaankuuluvat pakettiriippuvuudet ilmoittamalla käynnistysluokan huomautuksessa.

Lisää kuvan kuvaus tähän

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
  • 1