Teknologian jakaminen

SpringCloud

2024-07-12

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

1. Mitä ovat mikropalvelut?

1. Peruskäsitteet

Mikropalvelut ovat aarkkitehtoninen tyyli(Poiketen monoliittisesta arkkitehtuurista, vertikaalisesta arkkitehtuurista, hajautetusta arkkitehtuurista ja SOA-arkkitehtuurista) sovellukset on jaettu pienempiin, prosessivetoisiin palveluihin.

2. Mikropalvelujen ominaisuudet

  1. Kevyt: Jaa monimutkaiset järjestelmät tai palvelut pystysuoraan, ja jokainen mikropalvelu keskittyy erityisongelmien ratkaisemiseen.
  2. Matala kytkentä: Jokainen jaettu palvelu on toisistaan ​​riippumaton koodin, resurssien ja ympäristön suhteen, ja niitä voidaan kehittää, testata, ottaa käyttöön ja ylläpitää itsenäisesti, mikä on hyödyllistä järjestelmän vakaudelle (vaikutus vähenee, kun ongelmia esiintyy resurssien arviointi on helpompaa ja vähemmän riskialtista).
  3. Monialustaiset: Eri mikropalvelut voivat käyttää eri kehityskieliä ja toimia eri ympäristöissä.

2. Mikä SpringCloud on?

1. Peruskäsitteet:

Kevätpilvi on aMikropalvelukehys , joka tarjoaa valikoiman hajautettuja järjestelmäratkaisuja. Tarjoaa ominaisuuksia, kuten mikropalvelujen kehittämisen ja käyttöönoton, palvelun rekisteröinnin ja löytämisen, palvelunhallinnan sekä palvelun käytön ja ylläpidon komponentoinnin kautta.

2. Yleisesti käytetyt komponentit:

1)Spring Cloud Netflix:

Eureka: rekisteröintikeskus

Nauha: kuormituksen tasapainotus

Teeskentely: etäpuhelu

Hystrix: huoltokatkaisija

Zuul/Gateway: Gateway

2)Spring Cloud Config: Keskitetty määritysten hallintatyökalu, sovelluskokoonpanon ulkoinen tallennus, voidaan käyttää kevään tai ei-kevätsovelluksiin.

3)Spring Cloud Bus: tapahtuma- ja viestiväylä, joita käytetään tilan muutosten tai konfiguraatiomuutostapahtumien levittämiseen klusterissa.

4)Spring Cloud Consul: Palvelun etsintä- ja määritystyökalu, integroitu saumattomasti Docker-säilöihin.

5)Spring Cloud Security: Tietoturvatyökalupaketti, joka tukee sovellusten suojausta ja todennusta.

6)Spring Cloud Sleuth: hajautettu puheluketjun jäljitys, yhteensopiva Zipkin-, HTrace- ja ELK-jäljityksen kanssa.

7)Spring Cloud Cluster: Johtajan valinta, joka toteutetaan eläintarhanhoitajan, Redisin ja konsulin abstraktin avulla.

8)Spring Cloud Data Flow: Microservice-orkesteri, helppokäyttöinen vedä ja pudota -käyttöliittymän tai REST API:n kautta.

9)Spring Cloud Stream: Kevyt tapahtumapohjainen mikropalvelukehys, jolla voit nopeasti rakentaa sovelluksia, jotka yhdistetään ulkoisiin järjestelmiin.

10)Spring Cloud Task: Lyhytaikainen mikropalvelukehys, jolla voit nopeasti rakentaa sovelluksia, jotka suorittavat erätietojen käsittelytehtävät.

3. SpringCloud-komponenttien käytön vaiheet

springcloud-opastus--3 Microservice-katkaisijamekanismi, yksityiskohtainen selitys katkaisijan käytöstä hystrix_Java-katkaisijan konfigurointi-CSDN-blogi.

springcloud tutorial--4 Yksityiskohtainen selitys gatewayn käytöstä zuul_zuul käyttöopas-CSDN-blogi

1. Hystrix (sulake, alempi laatu, virranrajoitus)

1) Mitä se tekee?

olla olemassahajautetuissa järjestelmissä , jos palvelusolmu epäonnistuu tai verkossa tapahtuu poikkeavuus, soittaja voi olla estetty ja odottaa. Jos aikakatkaisu on asetettu pitkäksi, soittajan resurssit voivat olla lopussa.Tämä puolestaan ​​johtaa resurssien ehtymiseen soittajan ylävirran järjestelmässä, mikä lopulta johtaajärjestelmän lumivyöry . Katkaisijat voivat tehokkaasti estää huoltovyöryjä.

Jos kohtaat äkillisen liikenteen lisääntymisen, yleinen lähestymistapa onLiiketoimintaan kuulumattomat toiminnotPalvelun heikkenemistoimenpiteitä käytetään suojelemaan ydinliiketoimintojen normaalia palvelua, kun taas ydintoiminnallisten palveluiden osalta on otettava käyttöön nykyiset rajoittavat toimenpiteet.

2) Tapahtuuko se asiakas- vai palvelinpuolella?

Huollon katkaisija:yleisesti Se tapahtuu palvelinpuolella (tarkoituksena on sallia soittajan epäonnistuminen nopeasti). (Joskus se voidaan myös määrittää asiakkaalle epäonnistumaan nopeasti, kun tiettyä palvelua kutsuttaessa havaitaan poikkeus);
Palvelun heikkeneminen: Yleisesti ottaen huomioon verkkosivuston pyyntökuormituksen, palvelua ei enää kutsuta (joskus se voidaan määrittää myös palvelimen puolella, kun järjestelmä on tehnyt sen). äkillinen liikenne, se ydintoiminnot on alennettu suojaamaan ydintoimintoja);

Virranrajoitus: tapahtuu yleensä palvelinpuolella;

3) Kuinka käyttää

  • Sulaminen:

@EnableCircuitBreaker: käytössä sovelluksessasulake

@HistrixCommand(fallbackMethod="xxxFallback",commandProperties = {
}): Kiinnitysmerkintä lisätään alentamiseen. Täytä kiinnitysehdot kohdassa commandProperties = {}.HystrixPropertiesManagerTarkistaa.

  1. @HystrixCommand(fallbackMethod = "xxxFallback",commandProperties = {
  2. //20秒内出现3个请求,失败率为30%,就会触发熔断,30秒内不再发送调用
  3. // 条件一: 请求数量达到3个
  4. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),
  5. // 条件二: 每20秒一个判断单位
  6. @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_INTERRUPT_ON_TIMEOUT,value = "20000"),
  7. // 条件三: 失败率30%
  8. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "30"),
  9. // 结果: 熔断后, 30秒内不再请求远程服务
  10. @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "30000")
  11. })
  • Vähennä:

Luo uusi xxxFallbackFactory-luokka toteuttaaksesi FallbackFactory ja ohittaaksesi luontimenetelmän.

@FeignCliend(fallbackFactory=xxxFallbackFactory.class): Histrix on integroitu Feigniin

Tai määritä varamenetelmä suoraan menetelmässä: @HistrixCommand(fallbackMethod="xxxFallback")

  • Rajoitus:

        1、Nykyinen rajoitusstrategia:

1), semaforin virtaraja

Semaforia käytetään ohjaamaan samanaikaisten säikeiden määrää. Määritä sisäisten virtuaalisten lisenssien määrä rakentajan kautta.

Jos käytetään semaforien eristystekniikkaa, palvelun oma säie soittaa suoraan riippuvaan palveluun Kun jokainen säike on läpäissyt tarkistuspisteen, semaforien määrä vähenee yhdellä on 0, se ei ole enää Säie saa kulkea, mutta varalogiikka suoritetaan suoraan ja palautetaan suoraan sanottuna.

Semafori voidaan ymmärtää alaskuri, laskuri laskee parhaillaan käsiteltävien pyyntöjen määrän Kun laskurin arvo saavuttaa asetetun arvon, myöhempiä pyyntöjä ei hyväksytä (tai alennetaan), ja sinun on odotettava, kunnes laskurin arvo on pienempi kuin asetettu arvo, ennen kuin seuraavat pyynnöt voidaan tehdä. käsitellä.

  1. @HystrixCommand(
  2. commandProperties= {
  3. @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE"),
  4. @HystrixProperty(name="execution.isolation.semaphore.maxConcurrentRequests", value="20")
  5. },
  6. fallbackMethod = "errMethod"
  7. )

2), lankapoolin virtaraja

  1. @HystrixCommand(
  2. commandProperties = {
  3. @HystrixProperty(name = "execution.isolation.strategy", value = "THREAD")
  4. },
  5. threadPoolKey = "createOrderThreadPool",
  6. threadPoolProperties = {
  7. @HystrixProperty(name = "coreSize", value = "20"),
  8. @HystrixProperty(name = "maxQueueSize", value = "100"),
  9. @HystrixProperty(name = "maximumSize", value = "30"),
  10. @HystrixProperty(name = "queueSizeRejectionThreshold", value = "120")
  11. },
  12. fallbackMethod = "errMethod"
  13. )

Huomaa tässä: sisäänjavaJos säikeiden määrä ylittääcoreSize, säikeiden luontipyynnöt tulevat jonoon ensin. Jos jono on täynnä, säikeiden luomista jatketaan, kunnes säikeiden määrä saavuttaamaximumSize ja hyväksy sitten hylkäysstrategia.Mutta hystrixin konfiguroimassa säikeryhmässä on lisäparametriqueueSizeRejectionThreshold,josqueueSizeRejectionThreshold < maxQueueSize, jonojen määrä saavuttaaqueueSizeRejectionThresholdottaa käyttöön hylkäämisstrategian, jotenmaximumSize epäonnistunut.josqueueSizeRejectionThreshold > maxQueueSize, jonojen määrä saavuttaamaxQueueSizetunnin,maximumSizeon voimassa, järjestelmä jatkaa säikeiden luomista, kunnes numero saavuttaamaximumSize

      2. Ero semaforivirran rajoituksen ja lankapoolivirran rajoituksen välillä:

1) Suorituskykytaso: Semafori käyttää alkuperäistä lankaa ja sen suorituskyvyn kulutus on alhainen;

2) Järjestelmän vakauden taso: Säikevarastot ovat eristettyjä, eivätkä ongelmat itsessään vaikuta muihin säieryhmiin;

3) Synkroninen ja asynkroninen: Koska semafori on alkuperäinen käytetty lanka, se on synkroninen ja estävä.

        3. Nykyiset rajoittavan strategian käyttöskenaariot:

Kun pyyntöjen määrä on erittäin intensiivinen ja säikeen eristyksen ylimääräinen kuormitus on suhteellisen korkea, on suositeltavaa käyttää semaforeja kuormituksen vähentämiseksi. On suositeltavaa käyttää säievarastomenetelmää muissa skenaarioissa.

4) Mitä eroa näillä kolmella on?

Virran rajoitus on vain virtarajoitus Niin kauan kuin liikennerajaa ei ylitetä, palvelu on edelleen käytettävissä (eri kuin katkaisija) eikä sitä tarvitse alentaa (soittajan käsiteltäväksi voidaan antaa myös liikennerajan ylityspoikkeus). omillaan). Joten puhutaan vain erosta katkaisijan ja alennuksen välillä:

  • erilaisia ​​käsitteitä

Katkaisija tarkoittaa, että palvelu kokonaisuutena ei ole käytettävissä (keskittyy itsesuojeluun), alentaminen tarkoittaa seuraavaksi parhaan vaihtoehdon ottamista (keskittyy alimman rivin suojaamiseen) ja virtarajoitus viittaa liikenteen määrään, jota ei voida ylittää.

  • Erilaisia ​​laukaisumekanismeja

Oletusarvoisesti, jos hystrix havaitsee, että pyynnön epäonnistumisprosentti ylittää 50 % 10 sekunnin sisällä, se laukaisee katkaisijamekanismin. Sen jälkeen pyyntöä mikropalvelulle yritetään uudelleen 5 sekunnin välein. Jos mikropalvelu ei pysty vastaamaan, katkaisijamekanismi jatkuu. Jos mikropalvelu on tavoitettavissa, katkaisijamekanismi kytkeytyy pois päältä ja normaalit pyynnöt palautetaan.

Oletusarvoisesti hystrix laukaisee alennusmekanismin seuraavilla neljällä ehdolla:

  1. Menetelmä heittää HystrixBadRequestExceptionin
  2. Menetelmän puhelun aikakatkaisu
  3. Kytke virrankatkaisin päälle kaapataksesi puhelun
  4. Säievarasto tai jono tai semafori on täynnä
  • Erilaiset omistussuhteet

Katkaisijamekanismia voidaan kutsua katkaisijan aikana, mutta katkaisijamekanismia ei yleensä kutsuta alasvaihdon aikana.Koska katkaisija käynnistyy kokonaisvaltaisesta näkökulmasta ja deaktivoi palvelut varmistaakseen järjestelmän vakauden, kun taas alentaminen on seuraavaksi paras ja tarjoaa taatun ratkaisun, joten niiden omistussuhteet ovat erilaiset (katkaisija &gt; downgrade).

2. Feign ja RestTemplate

Linkin sisällön yhteenveto:

  1. Lisää aloitusriippuvuus;
  2. Lisää huomautus: @EnableFeignClients;
  3. Luo Feign-käyttöliittymä:

@FeignClient(name="eureka-HA",fallbackFactory=DeptClientServiceFallbackFactory.class)

springcloud-opetusohjelma -- 1. Luo nopeasti aloitustason demo, lue tämä artikkeli_Ye Juyan-GitCode avoimen lähdekoodin yhteisöSeuraa minua ilman pitkiä puheita ja aloita ensimmäinen Spring Cloud -kokemuksesi Ensinnäkin, käy läpi mikropalvelujen peruskomponentit: [Kuva tästä] Tuottaja: Palvelun tarjoaminen Kuluttaja: Kuluttajapalvelu Palvelun rekisteröinti/löytökeskus: Palvelun rekisteröinti, löytäminen, seuranta. ymmärtää springcloud-mikropalveluiden arkkitehtoninen perusta: tuottaja (asiakas), kuluttaja (asiakas), palvelun rekisteröinti/löytökeskus (palvelin) Ye Juyan GitCode avoimen lähdekoodin yhteisöicon-default.png?t=N7T8https://gitcode.csdn.net/65e840841a836825ed78b9d0.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzI1MTQ3NijotmZpjnjxi 3MjA1Mjk0NzAsInVzZXJuYW1lIjoicXFfMTk5NTIwMjkifQ.7co5oRDfDrxtdqIsV-9AjJacdbURh-cikj5Rtxt7Z1c

3. Zuulin käyttö

viitata:

SpringBoot-projektiarkkitehtuurin käytännön toteutus "Gateway zuul construction"-CSDN Blog

4. Eurekan rekisteröintikeskuksen käyttö

viitata:

SpringBoot-projektiarkkitehtuuri todellinen taistelu "emoprojektin rakentaminen ja rekisteröintikeskuksen rakentaminen"_java rakentaminen springboot-emoprojektin käynnistys-CSDN-blogi

4. Miten SpringCloud toimii

1. Eurekan toimintaperiaate:

  1. Palvelun rekisteröinti: Palveluntarjoaja lähettää käynnistyessään Eureka-palvelimelle rekisteröintipyynnön, joka sisältää palvelun IP-osoitteen, portin numeron, palvelun nimen ja muut tiedot. Vastaanotettuaan rekisteröintipyynnön Eureka-palvelin tallentaa palvelutiedot muistiin ja tarjoaa ulkoisen palvelun rekisteröintitietojen kyselytoiminnon.

  2. Palvelun etsintä: Kun palvelun kuluttajan on soitettava muihin palveluihin, se lähettää palvelunetsintäpyynnön Eureka-palvelimelle saadakseen luettelon tarvittavista palveluista. Pyynnön saatuaan Eureka-palvelin palauttaa luettelon vastaavan palvelun esiintymistä sisältäen IP-osoitteen, portin numeron ja muut palvelun tiedot. Palvelun kuluttaja valitsee yhden kutsuttavan palveluinstanssin (kuormituksen tasapainotus) palautetun instanssiluettelon perusteella.

  3. Sydämen kuntotarkastus: Palveluntarjoaja lähettää säännöllisesti sykepaketteja Eureka-palvelimelle todistaakseen, että sen palvelu toimii normaalisti. Jos Eureka-palvelin ei vastaanota sykepakettia palveluesiintymältä tietyn ajan kuluessa, se katsoo palveluilmentymän olevan alas ja poistaa sen palveluluettelosta.

5. SpringCloudin taustalla oleva lähdekoodi

1. Gateway Zuul -lähdekoodi

SpringBoot-projektiarkkitehtuurin käytännön toteutus "Gateway zuul construction"-CSDN Blog Artikkelia on katsottu ja luettu 227 kertaa. Luku 3 Gateway Zuul -rakennus Esipuhe: 1. Päätoiminnot Zuul tarjoaa pääasiassa dynaamista reititystä (sisäänrakennettu nauhatoteutus) ja suodatusta (voidaan käyttää yhtenäisenä todennussuodattimena, harmaasävyjulkaisusuodattimena, mustavalkoisen listan IP-suodattimena, palveluvirtaa rajoittavana suodattimena) (Voidaan toteuttaa Sentinel-toiminnolla) 2. Ero kevätpilvi GateWaysta on, että se on kahden avoimen lähdekoodin organisaation tarjoama yhdyskäytäväratkaisu. kevätpilvi GateWay käyttää estävää APIa, sisäänrakennettua virtaa rajoittavaa suodatinta, tukee pitkiä yhteyksiä (kuten verkkopistorasia) ja on parempi kuin Zuul skenaarioissa, joissa on korkea samanaikaisuus ja hidas taustapalvelun vastaus...https://blog.csdn.net/qq_19952029/article/details/124285479

2. Rekisteröintikeskuksen Eureka-lähdekoodi

3. Katkaisija Histrix-lähdekoodi

4. Configuration center Config lähdekoodi

5. Kuormituksen tasapainotusnauhan lähdekoodi

6. Mikropalvelu kutsuu feign-lähdekoodia

6. Miten SpringCloud toteuttaa hajautettuja tapahtumia

Seata TCC -tilan harjoitus (osa 2) - Alibaba Cloud Developer CommunitySeata TCC -tilan todellinen taistelu (osa 2)icon-default.png?t=N7T8https://developer.aliyun.com/article/1053737?spm=5176.26934562.main.1.799c6a03T45SJ9Yllä oleva blogikirjoitus ei ratkaise keskeytysongelmaa, joka voidaan arvioida eri tilaindikaattoreiden perusteella.

https://www.cnblogs.com/lilpig/p/16613226.htmlicon-default.png?t=N7T8https://www.cnblogs.com/lilpig/p/16613226.html

1. TCC-tilan rooli

TM: Tapahtumanhallinta, luotu @GlobalTransaction-merkinnällä.

TC: Koordinaattori

RM: Osallistuja

Koko prosessi on:

TM välittää maailmanlaajuiset tapahtumasi ja rekisteröityy TC:hen ennen suorittamisen aloittamista
TM aloittaa jokaisen haaratapahtuman suorittamisen globaalissa tapahtumassa ja RM rekisteröi ja raportoi haaratapahtumat ja suoritustilan TC:lle
Kun haaratapahtuman suorittaminen on suoritettu loppuun, TM käynnistää TC:lle pyynnön maailmanlaajuisen tapahtuman sitomiseksi tai peruuttamiseksi.

2. TCC-resurssien varauksen, lähettämisen ja palautuksen merkitys.

Varaus tarkoittaa tietokantaresurssin lukitsemista ja päivittämistä välitilaan ja sen muuttamista sitten tehokkaaseen tilaan, kun toisen vaiheen vahvistus suoritetaan vahvistuksen jälkeen.Joten varausvaihe ja sitoumusten palautusvaiheKaikki liittyvät tietokantojen käyttöön, joten voi esiintyä myös manuaalista käsittelyä vaativia vahvistus- ja palautusvirheitä, jotka voidaan ratkaista tallentamalla lokeja, kompensoimalla uudelleenyrityksiä jne.

3. TCC:n edut ja haitat

TCC-tilan edut

  1. Suora toimittaminen yhdessä vaiheessa, ei DB-lukkoja, ei muita lukkoja, hyvä suorituskyky
  2. Varaus- ja palautuslogiikka on itse kirjoittama, eikä se ole riippuvainen tietokannasta. Sitä voidaan käyttää ei-tapahtumatietokannassa.

TCC-tilan haitat

  1. Koodaus on monimutkaista
  2. Heikosti johdonmukainen
  3. koskaConfirmjaCancelSe voi myös epäonnistua, ja sinun on käsiteltävä tätä prosessia
  4. Jotkut yritykset eivät sovellu TCC-malliin. Esimerkiksi tilauksen tekeminen on uuden rivin lisäämistä.

4. XA-tila

Vahva johdonmukaisuus koordinoimalla kunkin osallistujan paikallisten tapahtumien sitoutumista ja peruuttamista.

XA-tilan edut

  1. Helppo toteuttaa, koska useimmat tietokannat tukevat jo XA-tapahtumia, Seatan tarvitsee vain tehdä yksinkertainen pakkaus
  2. vahva johdonmukaisuus

XA-tilan haitat

  1. Jokaisen tapahtuman on odotettava, että kaikki tapahtuman käsittely on saatu päätökseen ja varaa tietokannan lukot, mikä johtaa huonoon suorituskykyyn ja alhaiseen käytettävyyteen.
  2. Sitä ei voi käyttää, jos tietokanta ei tue XA-tapahtumia

5. AT-tila

heikko konsistenssi