Press "Enter" to skip to content

GOTO 2017 • Resilience Engineering in a Microservice Landscape • Maurice Zeijen


[Musica]
grazie mille che fantastico
introduzione quindi cominciamo
come ho detto di cui parlerò
ingegneria della resilienza in un microservizio
paesaggio è quello che facciamo a Bolcom
ma prima lasciami presentarmi il mio
il nome è Marie Sian. Sono stato un Java
sviluppatore per oltre 10 anni e
attualmente sono un architetto di punta
a un proiettile comm, così per quelli che sono
non ho familiarità con bullet bullet molto
diventa rapidamente uno dei più popolari
negozi web e nei Paesi Bassi e in
Belgio e abbiamo circa 8 28 milioni
visite al mese vendono circa 14 milioni
prodotti – circa sette milioni attivi
clienti attivi e ho circa 1200
colleghi e come I 350 nell’IT
dipartimento, quindi, di cosa parlerò?
su prima cosa è la resilienza e perché
abbiamo bisogno di quello che ci interessa allora
vedremo come sta andando la storia
per aiutarci in quell’area e implementarla
tutto per noi e poi lo faremo
uno sguardo ad alcune tecniche di resilienza tramite
una demo interattiva vedrò cosa
succede se non li applichi
tecniche di resilienza e la differenza
quando lo farai finalmente avrò dei consigli
e trucchi che abbiamo imparato a entrambi calma
e vedremo alcune cose operative
e alcune esperienze generali finiscono così
un wrap-up quindi cos’è la resilienza così è
la capacità di una sostanza o di un oggetto
ritornare in forma o il
capacità di recuperare rapidamente da
Difficoltà bene che è il mondo reale come
per esempio di corde elastiche come se fosse
stai saltando e il cavo si allunga
allora quella corda è davvero resiliente
contro quelle forze di tensione e ma
quando ritorna a modellare bene è
è davvero resiliente contro questo
è bello o come te e il tuo
collega sei malato, ne prendi solo due o
tre giorni per recuperare e lui prende circa
una settimana potresti dire di essere di più
resiliente contro l’influenza, per esempio
di quello che è ma siamo in un sistema di identificazione
quindi, cosa significa per IT, è così
la capacità di un sistema di gestire
situazioni impreviste inaspettate senza
utente che nota preferibilmente o almeno
con un grazioso degrado del servizio
e davvero importante che deve essere
in grado di recuperare automaticamente come se fosse
non succede mai che tu non voglia riavviare
la tua applicazione solo perché qualche errore
si è verificato in modo che possa essere davvero ampio
definizione quindi cosa sto andando a parlare
riguardo è questa situazione dove tu hai
un’applicazione come il proiettile Camacho
webshop che è ancora un monolitico
cosa e parla di circa 40 back-end
servizi e lo fa tramite riposo
chiamate dirette ed è per lo più ancora un po ‘
di un’architettura bloccante e in quelle
casi hai bisogno di certa resilienza
tecniche quindi se sei nel eventbus
situazione o un sistema di messaggistica di te
probabilmente ha bisogno di qualcos’altro o di cui hai bisogno
un po ‘meno di queste tecniche, quindi perché
ne abbiamo bisogno
quindi i fallimenti nei sistemi di oggi certamente
con molti microservizi Microsoft
interessante che non sei tu
eccezionale è normale succede molto
sicuramente se hai molti sistemi a
molte cose possono succedere vediamo questo
questo aiuta un po ‘ bene, per esempio
cosa significa la complessità in entrambi
andato bene abbiamo più di 50 utenti
affrontare le applicazioni con cui si sta parlando
circa 120 servizi di back-end e circa 60
Squadre IT che stanno scherzando così
puoi già aspettarti un sacco di problemi
succedendo lì sai che dobbiamo essere
resiliente contro ciò che quindi può
capita bene uno di quei back-end
i servizi semplicemente fallirebbero e andrebbero giù
o forse quella squadra ha implementato una nuova
versione ed è la versione la nuova versione
ha una certa scatola o anche se non lo è
compatibile all’indietro ma può anche esserlo
la rete che può degradare o fallire ma
può anche essere la tua applicazione
avere problemi con quel nuovo cliente
libreria che stai usando per connettersi
il servizio di back-end e il peggio
cosa che può succedere è che un back-end
il servizio diventa lento e la ragione è
quella latenza così
può essere contagioso che puoi diffondere
attraverso il tuo intero microservizio
paesaggio anche a parti che non lo fanno
in realtà avere nulla a che fare direttamente con
il sistema che è in realtà lento e
dimostrerà che più tardi nel
demo quindi dobbiamo essere resilienti e questo
è un esempio del Texas nel 2008 dove a
l’uragano venne dall’uragano Ike e questo
era un bel quartiere sulla costa e
solo una casa è veramente costruita per
resistere a quelle condizioni di uragano e
bene del resto è il risultato che vedi
qui così come ho detto di avere una demo
l’esecuzione è effettivamente in esecuzione sul mio
macchina ora ed è un mini servizio
paesaggio quindi abbiamo questo falso negozio web
e ha una pagina di elenco dei prodotti e lo farò
probabilmente cambiare quei prodotti e questo
parla con un servizio di prodotto per ottenere quelli
prodotti e se si fa clic su un prodotto
si arriva alla pagina dei dettagli del prodotto e
parla con il servizio del prodotto per ottenere
i suoi dettagli sul prodotto ma anche da recensire
servizio per ottenere un numero di recensioni questo
è il negozio di esempio quindi è davvero bello
fiero di esserlo mi piace vedere che possiamo possiamo
clicca su di esso fammi vedere e io ho un
un paio di omaggi oh bello
e nella mia demo posso iniziare a scherzare
il servizio di revisione così posso renderlo lento
Posso farlo fallire Posso spegnerlo e
vedremo cosa succede al
resto del negozio online, quando lo faccio
ma prima ho intenzione di parlare di come
Ho intenzione di andare anche per proteggerlo
come ho detto che useremo la storia
per quello
e questo funziona è una libreria costruita da
Netflix ed è lì per proteggerti
contro latenza e tolleranza ai guasti
difetti e fornisce un mezzo per essere te
conosci bene i tuoi fallimenti e
misure su tutto ciò che fa che
ti dà una grande intuizione e lo faremo
lo vedi più tardi ed è abbastanza
facile da usare e ci sono simili
librerie in diverse lingue o persino
diverse versioni sulla JVM che dovresti
controllali ma questo è tutto basato su
la storia è così isterica dove metti
nella storia bene lo metti nel
applique
che stai cercando di proteggere così qui
andando a cercare di proteggere il back shop
e lo metteremo di fronte
la libreria client quindi la libreria client
aggiunge per lo più in client HTTP e tutti
la chiamata al client HTTP sta per andare
prima le sue gambe
quando la Storia X ha questo flusso di azioni
cose per dare quella protezione e te
non ho bisogno di ricordare questo flusso ora
lo attraverseremo durante il
presentazione quindi iniziamo con
la maggior parte delle cose di base e questa la storia
Comanda a TS quale comando è quello che fa
sta incapsulando la tua chiamata al
risorsa e se tutto va bene
restituirà il risultato al tuo
applicazione e se guardiamo al massimo
modo semplice come si implementa questo e
ci sono modi meno gonfiati per farlo ma
non lo vedremo ora ma
questo è il modo più semplice per farlo è
che crei una classe Khmer che
estende i comandi di cronologia in questo
caso restituisce una lista di riduzioni che dai
campi per tutto ciò che deve fare
la 2d una chiamata e quindi si crea a
costruttore per ottenere tutti quei campi
e tu realizzi un metodo chiamato
la corsa e in quello che fai semplicemente
la chiamata al cliente quindi qui abbiamo a
recensione cliente dice di ottenere recensioni e voi
fornire con l’ ID del prodotto ed è
tornare ad una lista in modo da fare questo per
ogni endpoint non è un comando per a
intero servizio no per ogni endpoint e
se vuoi farlo in un non-blocco
stile perché blocca te
può implementare la storia del
comando osservabile ma non lo farò
guarda che c’è anche molto
buona documentazione lì, così che possa
puoi dare un’occhiata a te stesso ma
prima come eseguirlo tu
crea un nuovo comando purché
tutto ciò di cui ha bisogno e tu dici di eseguire
e questo è il sincrono e il blocco
modo e lo fai ogni volta che tu
voglio fare una chiamata che non riutilizzerai
questo comando è un po ‘strano ma giusto
come funziona Netstlix funziona mistico se tu
voglio fare in un blog asincrono
modo con un futuro, allora si può fare
che tu crei il comando dì
punto Q e poi ottieni un futuro e tu
fai le tue cose con esso è piuttosto un
normale futuro non è calcolabile
futuro quindi puoi probabilmente dimenticarti
abbiamo anche il modo asincrono
usando rx Java e poi in quel caso tu
dì punto osserva
si ottiene un osservabile della lista di
recensioni e fai la tua cosa con la tua
osservabile e questo è il nostro ex Java 1
non esiste ancora il supporto per rxjava 2 o
4 reagire o se sei interessato
speriamo che ad un certo punto inizi
con la storia 2 e lo avrà
che supporto puoi anche fare uno streaming
dove è simile ma poi tu
implementare quel hystrix osservabile
comandi e qui vedi di nuovo punto
osserva ma ora ricevi una richiamata per
ogni recensione che viene su di te no
avere di nuovo una lista di nuovo qui
pressioni non supportate troppo male ma a
sii onesto spesso non ne hai bisogno se
sei in questo stile di applicazione così
non preoccuparti , diamo un’occhiata a questi
tecniche di resilienza che la storia dà
noi prima il fallback
quindi il fallback è il modo di farlo con grazia
fallire e Windows nel passato non era quello
grazioso
sappiamo tutti questo urlo giusto così
obiettivo del fallback è cercare di dare
l’utente che può anche essere diverso
sistema per dare il meglio per dare il meglio
possibile esperienza quando il tuo sistema è
avendo problemi lo sai in diversi
modi e un paio di esempi sei tu
si nasconde la funzionalità è molto semplice
usi un difetto che è chiamato il
fallback statico o si tenta di ottenere un
alternativa che si chiama fermata
fallback o fallback tramite rete e
non sempre un ripiego ha un senso e
lo vedremo in un paio di diapositive
quindi dove succede in questo schema
quindi abbiamo questa chiamata alla risorsa e
quando fallisce quale può essere un’eccezione
allora andiamo al fallback così il
fallback se è implementato e it
non fallisce da solo, quindi stiamo facendo il
fallback molto semplice se il per lavoro
stesso lancia un’eccezione o non lo fai
avere un ripiego allora gireremo il
eccezione come normale quindi ora diamo un’occhiata a
il negozio di dimostrazioni di nuovo così andiamo
guarda un sacco di questi grafici per vedere cosa
sta accadendo nel webshop qui
abbiamo circa una pagina di dettaglio e il
numero di richieste che sta ottenendo e il
stessa cosa per la pagina di lista e sotto
abbiamo la distribuzione delle recensioni su
tutte le pagine di dettaglio quindi la vediamo di più
di loro hanno circa tre recensioni
e se vado di nuovo al negozio, allora noi
posso vedere se vado con i primi prodotti
che ha tre recensioni oh bello così ora
vediamo cosa succede se spengo il
webshop e per dimostrare che è in realtà
qualcosa che funziona sulla mia macchina
avere la buona applicazione di primavera
Sto semplicemente andando a uccidere e ora vediamo
le frecce stanno succedendo non è bello
quindi se vai al webshop di nuovo e io
clicca sul primo prodotto e poi questo
non è quello che vogliamo come non vogliamo
questo è per dare all’utente questa esperienza
non proprio bello, quindi il mio set demo
come ho detto posso abilitare e disabilitare
alcune caratteristiche storiche, quindi facciamolo
impossibile ricadere in questo caso
ora vediamo oh tutte le chiamate sono
successo di nuovo tutto bello ma la recensione
la distribuzione è zero non abbiamo recensioni
da nessuna parte così torniamo al negozio demo
andare al primo prodotto e in effetti esso
funziona di nuovo ma non ne abbiamo
recensioni quindi questo è davvero di base
esempio di un fallback un altro esempio
che applichiamo anche un pettine per proiettili che abbiamo
molti di loro ora ma questo è un esempio
questo si chiama arresto fallito e
si tratta di questo frontespizio su un a
pagina di elenco dei prodotti che abbiamo questo
il titolo viene in realtà dal servizio e
il servizio usa la categoria
sei in ei filtri che avete
applicato all’interno della ricerca per determinare
quale titolo in quale testo vuole
mostra così cosa succede quando
il servizio è semplicemente inattivo o lento o
qualsiasi cosa a cui semplicemente torniamo
qualcosa che abbiamo dato il comando che
era quella categoria e semplicemente mostriamo il
titolo della categoria è davvero facile ma
il cliente probabilmente non se ne accorgerà
come ho detto non fa sempre un fallback
senso e un paio di situazioni in cui
non vuoi ricadere per quello
istanza per un’operazione di scrittura lo farebbe
essere davvero imbarazzante se tu diresti ad a
utente che hai accettato questo ordine quando
in realtà non l’hai fatto perché c’era un
insuccesso quindi basta semplicemente informare
il cliente che che hai fallito
sappi che non vuoi mentire in quel caso
ma può anche esserlo se stai iniziando
qualche scommessa di lavoro o qualcos’altro
sullo sfondo che vuoi informare
quello non ha funzionato
e abbiamo anche notato che all’interno di a
servizio di back-end quindi sicuramente di più il
servizi di base è davvero difficile da definire
un fallback decente così spesso che cosa facciamo
un servizio di back-end è che non abbiamo un
ricaduta semplicemente buttiamo ancora un’ora
o diamo al fallback o un parziale
genera i dati e fornisce alcuni metadati
indietro che informa su di te sa bene
ecco alcuni dati ma non è al 100%
corretto forse vuoi fare qualcosa
con quello almeno tu fallisci velocemente
davvero importante che tu non stia andando
aspettare per timeout in ritardo e altro
le cose in modo in cui è possibile realizzare questo
ripiega di nuovo abbiamo questo ottenere recensioni
comando e hystrix comanda quello
estende il comando di Ezra e tu aggiungi questo
ottieni metodi di fallback che sono e in
In questo caso stiamo restituendo una lista vuota
è davvero semplice cosa succede se non lo fai
avere un ripiego anche in questo caso il suo
fix getterà via il suo runtime settimane
eccezione quindi vuoi prenderlo
da qualche parte e per ottenere il reale
eccezione hai detto che l’eccezione è stata causata
quindi la latenza successiva così ogni chiamata a
la risorsa viene monitorata su come
a lungo sta funzionando così e quando è
correndo troppo a lungo si otterrà un timeout
e se il tempo cosa succede allora
proverò a fare il fallback e bene il
resto lo sai così di nuovo alla nostra demo
in questo caso ho intenzione di fallire
Non farò nessun timeout, vediamo cosa
succede quando lo facciamo, quindi lasciami fare
aumentare la latenza a un anno e mezzo
a due secondi, quindi vediamo un paio di
cose per uno
non siamo processati non stiamo gestendo
tante richieste più è tutto
diventando lento perché questo è il cliente
latenza che vedi qui così otteniamo una latenza
di oltre sette secondi per il
i clienti e qui sotto vediamo il thread
utilizzo e vediamo che il prodotto
la pagina dei dettagli ora utilizza più di o
49:47 minacce non è bello essere
onesto io
intenzionalmente limitato il mio sistema che è
non usare così tante minacce a un normale
sistema dovrebbe fare perché io non voglio che il
cosa per prendere fuoco quindi ha un limite di
50 minacce quindi questo non è proprio questo
non è proprio buono, quindi lasciami prima
fallo recuperare
ora semplicemente imposta un timeout per un secondo
e abilitarlo di nuovo
oh ora vediamo cosa sta succedendo perché
bene dopo un secondo otteniamo un errore e
Non devo tornare indietro abilitato ma noi
vedere che il tempo che il tuo cliente
è ora in attesa è molto meno è ancora
Sono una grande quantità, sono due secondi ma
questo perché stiamo ancora avendo molto
dell’uso delle minacce e questo è quello che sono
andando parlare di prossimo e che siamo noi
voglio impedirlo e impedirlo
useremo Bock in rotta e basso
chattando così qui abbiamo una nave e così
ha le tasche quindi se quel Titanic era uno
del primo ma non lo fecero davvero
implementalo correttamente
in seguito le navi ha avuto più successo ma
le paratie sono bene così Blockheads
nella nave che ha impedito di affondare
quando hai un buco perché l’acqua
non può fluire attraverso l’intera nave
dove abbiamo questa paratia nella
programma Wow se stai eseguendo il
comandi prima di andare al
chiamata risorsa abbiamo un semaforo o un
pool di thread e questo limiterà
il numero di chiamate simultanee che hai
al percorso verso la risorsa, quindi facciamolo
Diciamo che lo impostiamo a 10 che significa che se
10 chiamate sono le nostre sono in quest’area qui
risorsa reticolo quindi arriva l’ undicesimo
e lo rifiuteremo e quando lo faremo
rifiutalo, andremo di nuovo al
fallback quindi ancora un sacco di grafici
il dettaglio del prodotto richiede la latenza di
la pagina dei dettagli del prodotto la distribuzione
ora anche la pagina di elenco e la pagina di elenco
latenza e un uso delle minacce, quindi ora se io
aumentare la latenza vado e
aumentalo davvero molto in alto a 5
secondi vediamo qualcosa di interessante
succede così bene che il dettaglio del prodotto
la pagina diventerà lenta, ma noi sappiamo
anche vedere che la pagina di elenco dei prodotti è
diventando lento
veramente lento in realtà è strano
perché la pagina dell’elenco dei prodotti non lo è
fare qualsiasi cosa con il servizio di revisione
ma tutte le minacce vengono utilizzate da
la pagina dei dettagli del prodotto quindi si
cattivo e questo è dove il tutto
l’effetto a cascata arriva e anche se io
impostalo su un secondo, quindi fammi recuperare
rapidamente
impostalo su un secondo prova ancora
anche ora lo do un po ‘ma anche ora noi
vedi che sta diventando una vasta lista di pagine
lento stiamo usando meno thread
più
ma ancora si sta influenzando il resto
del sistema quindi questo è dove questo
l’effetto a cascata arriva, quindi diciamo
abbiamo questo paesaggio con un paio di
servizi e il servizio di root diventa
lento ha un sacco di latenza di allora
Naturalmente ci si può aspettare un effetto diretto sulla
tutti i servizi che lo chiamano
direttamente ma perché tutti quelli
i pool di connessione si stanno riempiendo in quelli
altri servizi se non ne applicano
resilienza vedrai che tutto il
anche altri endpoint diventano lenti
poi esplode
in modo da avere un grosso problema, naturalmente, questo
è solo quando hai un carico veramente alto
sul tuo sistema e tu non ne hai
cose come il caching o altre attenuazioni
parti in là che lo rendono meno
peggio ma questo non è il perfetto
tempesta così possiamo proteggerci contro usando
una voce di palude, quindi abilitiamo la palude
Intestazione dire dieci minacce timeout su uno
secondo ancora è bene dargli un enorme
quantità di latenza e abilitare così ora
vediamo un’enorme differenza sì, ok
pagina dei dettagli del prodotto ne abbiamo ancora
errori e posso sapere aggiustarlo con
il fallback ma non è più lento di a
secondo, ma la pagina elenco non è interessata
non importa ci sono ancora abbastanza
thread rimasti nel sistema da gestire
quelle richieste quindi questo è questo è enorme
questo è importante
così ho parlato di che bisogna che
hai semafori o pool di minacce così
con i pool di thread di cui voglio parlare
la differenza e puoi averli entrambi
con Erics alla fine per comando tu
puoi scegliere così se vuoi scegliere
quattro minacce ne ha un paio
vantaggi rispetto ai semafori così quando tu
usa le minacce che puoi chiamare
sempre andare via se il tempo cosa
succede che può semplicemente continuare con il suo
altro lavoro e nessun problema e storia
può anche provare a interrompere la propria
minacce a cui sta solo facendo la chiamata
quel cliente e spero che il cliente
vi si chiuderà fare la sua cosa il
lo svantaggio però è che ogni
la minaccia aggiunge un po ‘ di
sovraccarico computazionale e utilizzo della memoria
ma ad essere onesti lo facciamo molto dentro
il nostro webshop abbiamo più di 40 thread
piscine e non notiamo nulla che non abbiamo
problemi con questo va bene un altro
più grande svantaggio è che un thread
pool è più difficile da sintonizzare perché un thread
pool può essere condiviso da più comandi
così semafori sono fantastici perché
hanno un sovraccarico molto basso e
sono anche più facili da sintonizzare perché
ogni comando ha il suo semaforo
sempre però lui avrà ovviamente un
numero di svantaggi che limita solo
le chiamate concorrenti, ma non è così
isolare completamente in modo che la chiamata lo minacci
non posso andare via perché è lo stesso
minaccia deve aspettare il nostro cliente
è finito e l’ interruzione è anche no
possibilità in tal caso, ecco perché
quando vuoi la raccomandazione, allora io
raccomanderei di iniziare con la minaccia
isolamento tranne quando l’ uso della minaccia
è davvero l’overhead è davvero troppo
alto o usando un cliente dove sei tu
conosci un cliente di cui ti fidi e questo
puoi fare il client di una richiesta basata
timeout e se sei in un altro
ambiente asincrono non bloccante
usando questo comando fisso osservabile allora
stai usando il semaforo per impostazione predefinita
perché poi il cliente lo fa per lo più
la gestione delle minacce va bene
quindi prima di andare all’ultimo
la tecnica di resilienza si ferma con il circuito
demolitori volevo guardare le metriche
quella storia sta esponendo, quindi questo è un
esempio di un comando dalla storia
dashboard e ti dà un sacco di
informazioni come informazioni sulla latenza per
che comanda il numero di chiamate che
hanno avuto successo o fallimenti e anche a
vista a grappolo quindi cosa significa all’interno
la nostra panoramica quindi tutti questi diversi
parti della storia stanno generando questi
metriche e sono semplicemente segnalati a
il mondo esterno puoi usarlo e io
voglio darti un esempio di
proiettili reali tornare presentarsi a questo
momento quindi questo è questo è ciò che è
questo succede davvero nel nostro negozio
questa panoramica di tutti i comandi e
puoi scorrere attraverso di noi
avere una quantità enorme di loro e questo
è una vista dal vivo e principalmente usa solo per
dare una sensazione di ciò che sta accadendo con
il tuo sistema se vuoi fare di più
analisi si può andare a più storia o a
vista storica usiamo kevanna per quello
e si spera carichi sì sì, qui vediamo
una panoramica di ciò che sta accadendo con
questo comando oggi questo giorno quindi abbiamo un
numero di esecuzioni che vediamo
fallimenti provenienti da timeout e vediamo
le latenze arrivano da bene questo è
davvero utile perché ottieni un
panoramica completamente nuova di ciò che il tuo
il sistema sta vedendo contro il suo back-end
servizi così ora ho bisogno di sì va bene così
queste metriche sono davvero utili e tu
può usarli per il monitoraggio e la segnalazione
ma sono anche usati per il circuito
interruttore e l’interruttore è come
una miccia in una scatola di fusibili
se è chiuso, sarà una corrente
attraverso ma se si apre allora non lo farà
lascia passare tutto e non hai
potere dove fa questa cosa si adatta così
esegui il comando e poi il
la prima cosa che guarderà è il
interruttore automatico e l’interruttore automatico
determina guardando la salute di
la risorsa se è aperta o meno e se
è malsano quindi si aprirà e
tutto andrà in corto circuito con il
Fall Bank, quindi, come fa questo?
questo lavoro quindi abbiamo tre stati chiusi
aperto e semiaperto quando è chiuso
va tutto bene, ma quando lo vediamo anche noi
molti fallimenti che di default sono il 50% di
tutte le chiamate
se sono un fallimento , si aprirà
e tutto sarà veramente veloce
perché tutto andrà al fobico
immediatamente ma abbiamo bisogno di automaticamente
recuperare così a volte ne proverò uno
richiesta penso ogni paio di secondi
e poi poi entra nel
stati semiaperti e quando richiesto
fallisce torneremo ad aprire ma quando sarà
succede che andremo chiudiamo il
interruttore immediatamente così l’ultima demo
di nuovo tutte le richieste della pagina dei grafici
distribuzione della latenza dei dettagli del prodotto
richiesta per la pagina di lista ma ora anche noi
avere una panoramica dell’interruttore e
di nuovo è l’ uso del thread, quindi ora facciamo
abilita subito certa resilienza
cose ma non un interruttore di circuito ancora oh
non questo lo facciamo un po ‘
lento quindi vediamo ora è che l’errore
percentuale del circuito è il comando
andando su e su e su ma perché io
non hanno ancora abilitato un interruttore automatico
è ancora chiuso, lo sai e lo siamo ancora
vedere questo utilizzo delle minacce di dieci minacce
si, quindi cosa succede quando ora non siamo in grado
l’interruttore così pure un quasi
immediatamente aperto ma la grande differenza
qui è l’uso della minaccia tutto il
le minacce che sai che sono sparite non lo sono
essere usato perché il thread storico
l’interruttore automatico dice bene questo
la cosa non è salutare e nemmeno andare
per provare a chiamarlo e perché non lo è
anche andando a provare a chiamarlo il backend
il servizio in realtà ha un respiro per
recuperare è un bel effetto collaterale ma anche
ogni cliente che colpisce questi comandi
sai che diventeranno fantastici
la prestazione è perfetta così quando noi
riduci di nuovo la latenza, diciamo
Il 20% dovrebbe iniziare a recuperare
un secondo sì, quindi vediamo il circuito
il demolitore chiuso di nuovo abbiamo ancora un
percentuale di errore bassa lasciata così
queste sono tutte le cose che la storia è
facendo questo per noi oggi cerchiamo di entrare in
alcuni suggerimenti e trucchi che abbiamo incontrato
bene bene bene
bene costruendo noi nei nostri sistemi così
per prima cosa assicurati quando inizi con questo
dall’inizio che hai impostato
monitorare una cosa inferiore perché se la tua
gli interruttori automatici sono aperti allora tu
unico modo per sapere che è perché
i clienti iniziano a lamentarsene
alcune funzionalità semplicemente non funzionano
o sono sempre vuoti o qualsiasi cosa tu sappia
se hai un fallback quindi ne hai bisogno
monitoraggio per scoprire cosa sta succedendo
nel vostro sistema e abbiamo effettivamente dividemmo
fino a determinati tipi di monitoraggio noi
avere comandi critici e non critici
perché alcuni comandi come per noi
cercando nel nostro webshop se non lo fai
è così che il nostro webshop no
facciamo davvero molto rendendoli critici
che significa se quegli interruttori di circuito
aperto o il tasso di errore è troppo alto
quindi i nostri operatori ragazzi e il team
responsabile che riceviamo immediatamente
messaggi hey ragazzi avete bisogno di fare
qualcosa ma certe cose come
recensioni non sono abbastanza critici
Vogliamo svegliare qualcuno nel
nel mezzo della notte, quindi in quel caso lo è
solo un servizio non critico e otteniamo a
schermata di avviso da qualche parte su di loro su un
schermo di monitoraggio o qualsiasi altra cosa
la cosa è non dimenticare di configurarli
client quei client HTTP perché loro
avere anche timeout impostazioni ancora
bisogno di impostarli correttamente e anche il
i pool di connessione devono essere sufficientemente grandi
essere in grado di gestire tutte le richieste
questo è qualcosa che è spesso
dimenticato nella nostra azienda quindi perché è così
importante quindi qui hai un normale
esecuzione in cui hai un’applicazione
minaccia chiamando il comando di storia su
quella stessa minaccia e comincerà
questa minaccia storica e fai il vero
chiamare la risorsa se la risorsa è
lento nei suoi cronometraggi sullo storico
livello ma il tempo non è decente
stato impostato sul client allora quella storia
la minaccia è ancora in uso non può essere
rilasciato fino al cliente semplicemente mentre
è fatto così questo causerà
spargimento di carico non necessario se non lo fai
configuralo correttamente e con
semafori è ancora peggio perché
semafori che questa minaccia chiamante non può
vai via così continuerai ad avere questo
problema di latenza totale molto meno perché
stai limitando tramite la voce di debug
sì, ma non è buono così due
le cose che puoi fare puoi fare il suo sesso
tempo scaduto dal timeout del client precedente
hystrix fa bene
l’ unica cosa è che la sua correzione non lo saprà
che è un timeout a causare questo così
restituirà semplicemente un’eccezione e il
le metriche lo vedi anche come normale
fallimento se si fa il client il
timeout subito dopo il suo rischio quindi nella storia
capirò hey questo era un timeout
che bello e lo registrerà anche
come timeout ma puoi anche fare a
cosa diversa ed è implementare a
gancio perché la cronologia è davvero inseribile
e quello che facciamo è che abbiamo questa mappa
la funzione di mappatura è tempo di eccezione
e conosce tutti questi Java comuni
eccezioni di timeout e verrà mappato a
un’eccezione del timer cronologico e in questo modo
anche il suo interruttore sa che questo era un
timeout e questo rende molto più facile
Non ha molta importanza più più
chi va per primo è sempre
registrato come un timeout e un altro
trucco è ciò che puoi fare è fare il
il timeout del client ha sempre lo stesso tempo
ordini da comandare perché poi hai bisogno
per configurare un modello temporale a meno che non sia così
cosa puoi fare nel comando della cronologia
è ottenere le proprietà di tali comandi
puoi ottenere il tempo di esecuzione o il
millisecondi amano davvero tanto
i nomi dei metodi ne ottieni il valore
semplicemente lo passano al tuo cliente
si client deve essere in grado di affrontare
richiede però tempi basati sulle impostazioni
non tutti non tutti fanno la stessa cosa
riprova alcuni clienti tendono a fare
riprova automaticamente devi essere
attento a ciò che non vuoi avere
troppi perché poi hai lo stesso
avere un tempo molto lungo
impostazione per i vostri clienti, quindi cosa succede se tu
voglio davvero che i tentativi lo facciano di più
uno se il secondo fallisce allora
qualcosa probabilmente ha davvero torto
il tuo sistema e lascia che fallisca il prossimo
cosa a comandi gruppi e pool di thread
avere nomi e quei nomi sono davvero
importante qui per cui ne hai bisogno
configurazione dei comandi in modo che abbiano bisogno
di essere unico, ma anche di vederli
ovunque nei vostri sistemi di monitoraggio
e i sistemi di caricamento quindi è necessario
essere veramente descrittivo e dire cosa
comando sta facendo così noi
fare è incorporare l’ID di servizio a
il nome breve di un servizio cosa
stiamo chiamando e il nome del comando e
il nome del comando dovrebbe sempre dire cosa
un comando lo sta facendo ad esempio noi
avere questo contenuto del prodotto servizio pc
servizio che fornisce informazioni sul prodotto
abbiamo questo prodotto medico per ID se
lo vedi allora in un sistema di monitoraggio
sai immediatamente cosa sta succedendo
sintonizzazione molto rapidamente quando sei in sintonia
è davvero importante per la storia di cui hai bisogno
per farlo non puoi ignorarlo e
sicuramente se hai carichi alti o lunghi
latenze e dovresti essere basato sull’ottimizzazione
sulle informazioni di produzione e di cui hai bisogno
comportarsi con un’unità sul comportamento del
risorsa e non essere non su quello che tu
vorrebbe che il timeout fosse così se tu
fai una ricerca sul sondaggio che tu sia
chiamando e si comporta normalmente
avere un timeout di un secondo poi quello
deve essere il timeout per il tuo
comandi ma se non vuoi aspettare a
secondo ma forse solo mezzo secondo poi
è necessario aggiungere un ulteriore livello di
timeout intorno a quello e dire oh non lo farà
voglio solo aspettare un secondo mezzo secondo
altrimenti il ​​timeout darà sempre delle frecce
perché tu sei quello che pensa che il
le risorse sono salutari e di nuovo no
dimentica il tempo mentre declina così ho
questa panoramica di diverse formule per
queste impostazioni di timeout e concomitanti
impostazioni di concorrenza non ho intenzione di andare
tramite loro ora se si scarica il
diapositive puoi dare un’occhiata a loro e
come quelli simili sono anche sullo storico
s– wiki in modo da poter dare un’occhiata a lì
pure e per i timeout del client
qualcosa che ho notato è la connessione
timeout le persone tendono a farlo
secondi un timeout di connessione è quando tu
il timeout se ti serve il tempo a
il servizio deve connettersi da uno
servizio ad un altro servizio di assistenza ma
non occuparsi spesso della chiamata reale
all’interno della nostra rete sono 100 millisecondi
già un tempo molto lungo quindi ti problema
puoi usarlo o anche meno se vai
in un’altra rete può essere a
cosa diversa in quel caso misura
queste impostazioni prima di impostarla
a secondi e per il timeout Reta
l’abbiamo già visto quando non lo sei
utilizzando i tentativi, è possibile impostarlo su
comando time out e se stai usando
riprova un tentativo che puoi
ok, prendi il 99,5% che io risorse
latenza oh dovrebbe essere il più il
latenza delle risorse mediana perché tu
aspetto che la seconda chiamata abbia successo
cose così piccole sulle operazioni quando
lo stai facendo funzionare quando stai correndo
è in produzione vedrai jitter e
fallimento hai già visto che un esempio
dal consiglio negozio convesso ci sarà
essere sempre dei timeout e questo può
a causa della raccolta dei rifiuti o forse a
la nuova macchina si sta avviando ed è così
riscaldando o si può avere diverso
dimensioni del carico utile o talvolta il carico utile
la taglia è semplice da cuocere e ci vuole anche
da gestire a lungo e molti altri
ragioni quindi ad esempio questo è il PC
servizio di nuovo e gestisce circa
200.000 richieste in 30 secondi che cosa fanno
vedi che ha anche circa 250
timeout in quel caso e quando Cronologia X
sta iniziando a segnalare un circuito guasto
il principe degli interruttori è aperto e poi no
reagire in modo eccessivo provando a risintonizzarlo
interruttore prima vedere immediatamente
cosa sta succedendo determina se non lo è
davvero un problema nel servizio back – end
e se si determina che tutto è
bene con il sistema di backend ancora allora
forse vuoi farti raggiungere
sessione quindi alcune esperienze globali a
entrambi comm hanno già impedito un sacco di
piccole interruzioni e un paio di grandi
e per questo dormiamo molto
meglio ora, quindi aiuta davvero il nostro
Operazioni ragazzi sono davvero soddisfatti
questo e la storia in sé è un grande
libreria anche se sta iniziando a ottenere un
un po ‘obsoleto ma in generale
fa bene il suo lavoro si integra davvero
bene con i nostri strumenti perché è
inseribile ed è facile da imparare e
implementare tuttavia la sintonizzazione è spesso
trascurato dalle nostre squadre e non lo è
banale se tu se hai intenzione di fare
così spesso vediamo un timeout errato
impostazioni o dimensioni del pool di thread che sono
troppo grande e anche il cliente è spesso
dimenticato così le cose a cui prestare attenzione se
sei se lo stai facendo e alla fine
probabilmente era per lo più un’organizzazione
sfida rispetto a una tecnica così noi
abbiamo un sacco di squadre quindi dovemmo allenarci
loro
dovevamo far capire al business
che questi fallback sono importanti e
meglio dei grandi messaggi di errore ma in
Alla fine penso che ne valesse davvero la pena
e, probabilmente, si risparmia un sacco di soldi di
salva già un sacco di soldi con questi
grandi interruzioni così da chiudere i fallimenti
davvero non l’ eccezione che abbiamo bisogno di noi
bisogno di trattare con loro sono normali
quindi dobbiamo essere resilienti contro quelli
fallimenti e un paio di tecniche
abbiamo visto di essere più resilienti è quello di
attuare questi fallback gestire
timeout con attenzione anche per i clienti
usa l’ intestazione del blocco alo chattare in
impedire che il dirottamento delle risorse e aggiungere
interruttore per saltare quei pochi tacos
a servizi che non sono sani in nessuno
caso e aggiungendo resilienza alla fine
non ha davvero bisogno di essere davvero difficile
certamente non con le librerie che lo fanno
tutto per te, ecco, non ne sono sicuro
quanto tempo ho per domande ma

Please follow and like us: