2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Mikropalvelut ovat aarkkitehtoninen tyyli(Poiketen monoliittisesta arkkitehtuurista, vertikaalisesta arkkitehtuurista, hajautetusta arkkitehtuurista ja SOA-arkkitehtuurista) sovellukset on jaettu pienempiin, prosessivetoisiin palveluihin.
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.
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.
springcloud tutorial--4 Yksityiskohtainen selitys gatewayn käytöstä zuul_zuul käyttöopas-CSDN-blogi
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.
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;
@EnableCircuitBreaker: käytössä sovelluksessasulake
@HistrixCommand(fallbackMethod="xxxFallback",commandProperties = {
}): Kiinnitysmerkintä lisätään alentamiseen. Täytä kiinnitysehdot kohdassa commandProperties = {}.HystrixPropertiesManagerTarkistaa.
- @HystrixCommand(fallbackMethod = "xxxFallback",commandProperties = {
- //20秒内出现3个请求,失败率为30%,就会触发熔断,30秒内不再发送调用
- // 条件一: 请求数量达到3个
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),
- // 条件二: 每20秒一个判断单位
- @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_INTERRUPT_ON_TIMEOUT,value = "20000"),
- // 条件三: 失败率30%
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "30"),
- // 结果: 熔断后, 30秒内不再请求远程服务
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "30000")
- })
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")
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ä.
- @HystrixCommand(
- commandProperties= {
- @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE"),
- @HystrixProperty(name="execution.isolation.semaphore.maxConcurrentRequests", value="20")
- },
- fallbackMethod = "errMethod"
- )
2), lankapoolin virtaraja
- @HystrixCommand(
- commandProperties = {
- @HystrixProperty(name = "execution.isolation.strategy", value = "THREAD")
- },
- threadPoolKey = "createOrderThreadPool",
- threadPoolProperties = {
- @HystrixProperty(name = "coreSize", value = "20"),
- @HystrixProperty(name = "maxQueueSize", value = "100"),
- @HystrixProperty(name = "maximumSize", value = "30"),
- @HystrixProperty(name = "queueSizeRejectionThreshold", value = "120")
- },
- fallbackMethod = "errMethod"
- )
Huomaa tässä: sisäänjava
Jos 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ä saavuttaaqueueSizeRejectionThreshold
ottaa käyttöön hylkäämisstrategian, jotenmaximumSize
epäonnistunut.josqueueSizeRejectionThreshold > maxQueueSize
, jonojen määrä saavuttaamaxQueueSize
tunnin,maximumSize
on 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.
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ä:
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ää.
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:
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 > downgrade).
Linkin sisällön yhteenveto:
@FeignClient(name="eureka-HA",fallbackFactory=DeptClientServiceFallbackFactory.class)
viitata:
SpringBoot-projektiarkkitehtuurin käytännön toteutus "Gateway zuul construction"-CSDN Blog
viitata:
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.
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.
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.
Seata TCC -tilan harjoitus (osa 2) - Alibaba Cloud Developer CommunitySeata TCC -tilan todellinen taistelu (osa 2)https://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.htmlhttps://www.cnblogs.com/lilpig/p/16613226.html
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.
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.
TCC-tilan edut:
TCC-tilan haitat:
Confirm
jaCancel
Se voi myös epäonnistua, ja sinun on käsiteltävä tätä prosessiaVahva johdonmukaisuus koordinoimalla kunkin osallistujan paikallisten tapahtumien sitoutumista ja peruuttamista.
XA-tilan edut:
XA-tilan haitat:
heikko konsistenssi