Teknologian jakaminen

Grain Mall -tutkimusmuistiinpanot - 22 - Hajautetut komponentit - SpringCloud - OpenFeign Test -etäpuhelu

2024-07-11

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


Opimme rekisteröintikeskuksesta edellisessä osiossa. Tiedämme, että ennen kuin palvelin A soittaa palvelimelle B, se saa rekisteröintikeskukselta palvelun B IP:n, ja sitten palvelin A tekee pyynnön palvelulle B.

Joten miten palvelin A tekee pyynnön palvelulle B?

Tämä on tärkein tässä osiossa käsiteltävä kysymys.

Tässä projektissa OpenFeign-komponenttia käytetään palveluiden välisten puheluiden suorittamiseen. OpenFeign on HTTP-pyyntöjen kapselointi.

1. OpenFeignin esittely

OpenFeign on deklaratiivinen HTTP-asiakas, jonka tarkoitus on helpottaa etäpuheluita.

Feign tarjoaa mallin HTTP-pyynnöille kirjoittamalla yksinkertaisen käyttöliittymän ja lisäämällä huomautuksia, voit määrittää HTTP-pyynnön parametrit, muodon, osoitteen ja muut tiedot.

Feign integroi Ribbonin (kuormituksen tasapainotus) ja Hystrixin (palvelun katkeaminen), joten meidän ei enää tarvitse käyttää näitä kahta komponenttia erikseen.

SpringCloudFeign laajentaa tukea SpringMVC-merkintöille, jotka perustuvat NetflixFeigniin. Sen toteutuksessa meidän tarvitsee vain luoda käyttöliittymä ja määrittää se merkintöjen avulla täydentääksemme palveluntarjoajan liittämisen. Yksinkertaisti SpringCloudRibbonin itsekapseloidun palvelupuheluasiakkaan kehitystä.

2. OpenFeignin käytön vaiheet

1. Kohtauksen kuvaus

Käytämme skenaariopohjaista ongelmaa oppiaksemme OpenFeignin käytön, olettaen会员服务Soittaa优惠券服务Käyttöliittymä, joka palauttaa jäsenen kuponkitiedot, joita voidaan käyttää.

Tämän kupongin käyttöliittymä on seuraava. Tämä on testausrajapinta, eikä sillä ole todellista liiketoimintalogiikkaa.
Lisää kuvan kuvaus tähän

	@RequestMapping("member/list")
    public R list(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("慢100减80");

        return R.ok().put("page", Arrays.asList(couponEntity));
    }