Press "Enter" to skip to content

GOTO 2013 • The Smallest Distributed System • Mathias Meyer


benvenuto voglio parlare del
il più piccolo sistema distribuito e probabilmente
nel senso letterale tanto quanto nel
senso fisico è davvero molto piccolo
il mio nome è con l’ammiratore che vado da a
roid rage su Twitter non c’è
relazione a tutti agli steroidi nel suo nome
io lavoro per una piccola compagnia a Berlino
chiamato travestimento I è un kanay ospitato
sistema di integrazione continua e
iniziato come un’idea molto semplice
originariamente era alla fine del 2010
c’era il Github era in aumento per
condivisione e collaborazione su open source
progetto ma non c’era nessuna piattaforma intorno
che ha dato ai progetti la possibilità di correre
i loro test per farvi sapere in che cosa
integrazione continua ben integrata
piattaforma che farebbe ogni volta che un nuovo
commesso entrato o quando qualcuno
ha contribuito con una patch che avrebbe preso quello
patch eseguirlo e dire tutto era
verde con quello con quella cosa noi
iniziato come un progetto open source
fondamentalmente una piattaforma di targeting aperto
fonte del prodotto tanto quanto il nostro codice
essendo open source ma da allora
trasferito in uno spazio commerciale così come
segnalazione di progetti privati, ma questo è
non proprio di cosa si tratta oggi io
voglio tornare al 2011 2011 è stato quando abbiamo
abbiamo visto una trazione iniziale molto molto piena
ha avuto un bel po ‘di progetto open source
adottare un cane Travis CI e ci siamo imbattuti in giro
settecento fatture al giorno
incluso progetto come rails um una coppia
di progetti più piccoli ma non era molto
tutto ciò che eseguiva di un singolo server che avevamo
una scatola che fondamentalmente ha funzionato tutto il
prova è stato virtualizzato usando
VirtualBox era un ottimo headup
dentro e tutto ma in realtà ci ha portato
abbastanza lontano, sì e l’applicazione
se stesso in un’architettura molto semplice se
in pratica ci sono volute alcune settimane per
costruire Travis CI le idee erano originariamente
per farti sapere di andare al
status quo di integrazione continua
sistemi un’idea era quella dell’utente
l’interfaccia dovrebbe essere aggiornata aggiornandoti
sappi che quando una build è in esecuzione
dovresti vedere il lock stream live
sull’interfaccia utente dovrebbe aggiornare il suo
costruisce rifinire questo costruito iniziato e
roba del genere, in fondo, dovrei esserlo
dovrebbe avere un’interfaccia utente migliore
di quella altra continua integrazione
sistema che era molto popolare e tranquillo
è in quel momento ma doveva
rendere tutto ciò liberamente disponibile per
qualcuno da usare praticamente quando ne hai avuto uno
il progetto open source è possibile collegarlo
in Travis CI e correrebbe il tuo
test e li avrebbe eseguiti abbastanza bene
l’architettura originale era molto
semplice abbiamo avuto un’applicazione web che
parlato al database che web
l’applicazione era responsabile del servizio
la nostra API per accettare nuovi commit
notifiche da Github qualunque cosa
newcomb è spinto a ottenere aiuto che otteniamo
un colpo di notifica da loro dicendo
ecco i nuovi dati appena entrati
qualcosa con esso è così che era
anche quello che era la web frienda
responsabile per questo ha praticamente preso quello
quel carico utile e lo trasformò in
qualcosa che era eseguibile e il
componente di cui era responsabile
l’esecuzione di quella roba si chiama hub it in
la fine si è rivelata molto più di
ma questa è la sua funzione di base giusta
ora in questo scenario e c’è
un quarto componente chiamato lavori
che è fondamentalmente un agente o un agente
era in esecuzione su un server costruito
questo richiederebbe l’esecuzione di nuovi lavori
un paio di script nel virtuale
macchina e fondamentalmente invia un
notifica ogni volta che finisce
componente era anche responsabile per
streaming bilblox quindi come costruttore
e vedrebbe solo che vagliasse
in ritardo l’output dalla build
e invialo mandalo a pezzi e questo
è dove hub ottiene un po ‘di più
complicato perché i lavori sono fondamentalmente proprietari
interagisce solo con hub e l’unico
la cosa che sostanzialmente invia è quell’hub
lavori di senso qui è un noob che usa una corsa di lavoro
giusto quello che salta fa è un lavoro
esegue flussi in cui le fatture sono costruite
serrature e il risultato della costruzione e quello
aiuta già un po ‘di più
complicato abbiamo un po ‘di arancione il
coniglio arancione qui che è
RabbitMQ è fondamentalmente il singolo punto
di interazione tra i lavori
elaborazione nello stesso hub quindi gentile
di è diventato molto per il mio sgomento sono uno dei
i componenti centrali nel nostro sistema noi
avere
q e come sarebbe anche e quello sarebbe quello
è una parte in cui arrivano gli aggiornamenti della vita
come direbbe anche spingerla quando quando
nuovi posti di lavoro quando il nuovo lavoro risulta nelle sue serrature
è arrivato attraverso l’epidemia che il tuo aiuto avrebbe fatto
prendi te per prendere queste cose e spingere
loro e li spingono in avanti verso il pusher
usando il pusher potremmo quindi fare live
aggiornamenti nell’interfaccia utente semplicemente
spingere come ormai spingiamo 40 mil 40s 50
milioni di messaggi al giorno per spingerla ma
allora era abbastanza minimal ma lo era
è stato un grande effetto aha per le persone
guardando l’interfaccia utente, ho appena visto
tutto questo aggiornamento della vita ed è
ancora un’architettura abbastanza semplice ma
come puoi vedere è già un po ‘
distribuito ma è stato costruito con
buone intenzioni in mente era fondamentalmente
supponendo che tutto funzionerebbe tutto
tempo e tutto con lavoro in modi
che possiamo prevedere e che possiamo
aspetto che sfortunatamente sia così
non è andata molto bene se l’avessimo inoltrato
al 2012 abbiamo già aggiunto 1 magnitudine
di fatture ora siamo a 7.000 build per
giorno siamo stati adottati da un paio di
progetti open source di molto altro
uno famoso nel mondo PHP abbiamo avuto un
molte più lingue abbiamo diretto Erlang
valutato Java ci siamo diretti perlopiù in PHP
Python erano tutte le lingue popolari
fondamentalmente supportato fuori dalla scatola il
il problema era che con la piattaforma è
adottati sempre più abbiamo avuto molto di più
responsabilità di tenerlo in esecuzione
travesti mi è stato originariamente addebitato come
fondamentalmente un’idea come n è un ideale e
era gestito da persone come un progetto collaterale
fondamentalmente è qualcosa che conosci
che la gente potesse utilizzare e qualcosa che
beh, era solo che era appena finito
proprio e vorremmo solo spingere un po ‘
di codice ogni tanto e poi
personalmente questo non l’ha fatto
davvero non ha funzionato così bene perché
abbiamo iniziato ad avere problemi che abbiamo iniziato
vedere i problemi nella nostra architettura e
abbiamo iniziato a vedere tutto a pezzi
le cuciture fondamentalmente nel molto letterale
senso e il problema più grande che abbiamo avuto è stato
effettivamente la visibilità più
imbarazzante i pezzi più imbarazzanti
erano e questo è quando mi sono iscritto a Travis
sì, ero all’inizio del due
12 era che la gente veniva dal
la comunità venne da noi dicendo hey i miei conti
non sono in esecuzione o qualcosa di simile
non è giusto, le mie banconote stanno sbranando le mie
le bambole sono sempre appese perché noi
integrare con un sacco di esterni
risorse che integriamo con dipendenza
specchi di dipendenza come rubini di maven
Il sistema di dipendenza di PHP li rende perfetti
post-evento di questi pitoni e così via così
abbiamo avuto persone dalla comunità
approcci e dire che questa roba non è
lavorando e quello nel nel
l’inizio si è rivelato il nostro più grande
problema non abbiamo idea di quale travestimento io
Stava facendo era già abbastanza grande
sistema distribuito ora avevamo 10 build
server che eseguono test in esecuzione, così abbiamo avuto
un totale di sessanta macchine virtuali disponibili e che
significava che molte cose potrebbero già iniziare
rottura in qualsiasi momento e abbiamo avuto
non ho idea di cosa si sarebbe rotto e abbiamo avuto no
idea quando si romperebbe perché noi
non ha avuto alcuna visibilità tramite
metriche che non abbiamo aggregato
serrature e non abbiamo avuto alcun avviso
e questo era piuttosto imbarazzante
imbarazzante che le persone dovevano effettivamente
spingerci a guardare le cose ed è stato
anche imbarazzante perché abbiamo iniziato
lavorando su una versione commerciale che conosci
essendo stato informato dai clienti che il mio
il prodotto è giù è ancora uno dei miei
i più grandi incubi quindi abbiamo dovuto lavorare a
molto effettivamente per farlo davvero
capita che è stato il mio primo progetto e così
era il più importante perché in a
sistema distribuito quando tu quando tu
non hai visibilità non puoi ragionare
su cosa sta facendo in produzione
è per questo che il mio più grande da asporto da questo
cancellato per in questo particolare pezzo è
che se quando costruisci il sistema tu
bisogno di pensare al monitoraggio in anticipo
hai bisogno di pensare a come
monitorarlo per cosa controllare e cosa
thriller su e che non è proprio
ciò che è stato costruito da Travis qui è stato costruito
su di esso era solo che tu lo credessi
funzionerebbe e che le cose sarebbero
senza intoppi e va bene ah
questo grazie per essere eseguito senza problemi e
quello era il mio più grande asporto che in a
sistema distribuito anche di dimensioni ridotte
hai bisogno di visibilità che devi essere
in grado di vedere cosa sta succedendo in
qualsiasi punto
tempo necessario per essere in grado di ragionare
cosa stava facendo in un punto particolare
in tempo e per fortuna per noi questo è un
molto più facile in un più piccolo distribuito
sistema che in un sistema che fa il
migliaia di richieste al secondo
gestisce migliaia di cose nel
sfondo nel nostro sistema che è ancora
abbastanza piccolo era facile ragionare
cosa sta facendo ma in realtà dovevamo
lavorare per far sì che ciò accada
lavorare sull’aggiunta della registrazione su cui dovevamo lavorare
aggiungendo la possibilità di tracciare richieste come
sono entrati nel sistema come erano
gestito dal sistema in realtà
renditi conto di cosa sta succedendo perché lo è
è diventato il pezzo centrale del nostro
sistema per poter essere in grado di monitorare
per essere in grado di eseguirlo in produzione
ma il problema più grande che abbiamo avuto è stato una volta
siamo a quel monitoraggio che abbiamo effettivamente visto
le cose che si rompono è per questo che la visibilità
porta il porta un po ‘di a
responsabilità con esso se vedi se tu
vedere lo spasmo capita che devi fare
qualcosa al riguardo altrimenti non lo fai
bisogno di mettere in monitoraggio il primo
posto ma è quello che sistema distribuito
diventare da qualche parte spesso una nozione
accetti che le cose si rompano e tu
accetta che devi fare qualcosa
su di esso che è stata la mia realizzazione del
l’anno scorso, quando le cose si sono rotte, abbiamo
fare qualcosa a riguardo, sfortunatamente
le cose hanno iniziato a rompersi molto
il rovescio della medaglia il nostro piccolo originale
l’architettura nel 2012 ha iniziato a cadere
a parte come abbiamo fatto settemila conti per
giorno spingiamo un sacco di messaggi di blocco ogni
giorno e non era affidabile, continua
continuava a caderci sopra, ne teneva solo uno
in particolare ho continuato a cadere
oltre e questo è l’hub che era l’hub
facendo un sacco di cose che stava gestendo
Bilblox stava gestendo le notifiche
in pratica quando è stato costruito
finito avvisiamo gli utenti via email
o dal fuoco da campo tramite IRC quello del costruito
risultato stava gestendo le richieste di compilazione come
sono venuti da Github con cui ha parlato
github ha parlato con github che interagiamo
con l’API molto e ha parlato con
pusher ed è dati utente sincronizzati
11 bit di Travis è fondamentalmente sincronizzato
tutti i dati per l’uso che abbiamo tutti
sopra i repository che hanno
accesso e in pratica lo memorizza
informazioni sul nostro fine in modo che sappiamo
chi ha accesso a quale repository
e come era un singolo processo al momento
e un singolo processo non è veramente un
sistema distribuito e il problema con
quel singolo processo era quello che era
impossibile ridimensionare noi non potremmo
basta accenderne uno nuovo e avere tutto
questo correre in parallelo dovevamo avere questo
processo singolo e ha fatto molto ha fatto
in realtà abbastanza bene lo ha fatto fino al
bloccare l’elaborazione all’interno di un singolo
container ho fatto fino a cento
messaggi al secondo ma in realtà
non è stato sufficiente perché ci ha impedito di
disegno e un particolare pezzo che è
è diventato molto radicato nel modo in cui penso
sui sistemi distribuiti ho un buon risultato
esempio per e questo è il vertiginoso lì
parlando con l’API github di cui siamo uno
i consumatori più pesanti dei github api noi
licenzia centinaia di migliaia di richieste
attraverso l’API ogni giorno e abbiamo assunto
tutto ciò che abbiamo quando viene una richiesta costruita
in prendiamo la configurazione di build
che è memorizzato nel repository da
github sincronizziamo i dati dell’utente con
github API e aggiorniamo i commit
in base a come costruisco il vento alzarti, puoi
avere quando tu quando hai una spinta
richiesta in github puoi avere una bella
notifica che la compilazione è fallita
o ci è riuscito ed è anche quello che noi
abbiamo trattato le API di Github come un bene
amico e tu sai che questo è di più
sull’integrazione con il github
API quindi con me che ne parla
è terribile è più è un apprendimento
punto per noi abbiamo sostanzialmente trattato il loro
API come ho avuto un buon amico, lo chiamiamo
e ci aspettavamo che prendesse il telefono
e rispondici abbastanza velocemente e sempre
entra e praticamente sempre ci rispondono
e questo si è rivelato un errore
Presupposto non ha sempre risposto come
non sempre ci ha risposto con il
dati che ci aspettavamo non sempre
rispondere come con il ragionevole risultato
getta tutti i tipi di pazzi codici di errore
e tu hai un’interfaccia e ad un certo punto
circa un anno fa è davvero se le cose
davvero iniziato a cadere a pezzi che era
una delle sue più grandi interruzioni qui
e questo era quello perché usavamo
la caratteristica in qualche modo non documentata di
il loro avi I è dove è già
inizia ma era una caratteristica che era
aggiunto per noi e quella funzione in questo
il tempo è stato semplicemente disabilitato perché
causato problemi dall’altro capo del nostro
fine, causa anche problemi perché tutto
l’inferno si è scatenato e noi fondamentalmente
ha smesso di soffiare tutto ciò che ci fermiamo
bullismo tutto perché quando un nuovo
la build arriva e andiamo all’API che noi
controlla alcune cose che devono essere pronte
per noi durante la costruzione e quello
richieste fondamentalmente abbiamo dato quella richiesta
inizialmente circa penso che 10 minuti e
in quel giorno particolare le richieste
in realtà ha iniziato a prendere dieci minuti tutto
delle nostre richieste API è fondamentalmente iniziato
tempo scaduto ma il tempo era enorme
quando noi quando facciamo settemila conti
al giorno siamo praticamente al massimo
volte ne guadagniamo circa mille e costruiamo
notifiche all’ora indietro in quel momento
così uno gestisce una richiesta costruita in a
setup che è fondamentalmente solo un singolo
processo e richiede dieci minuti a
gestire quella richiesta a singolo bit non è un
ottima idea ha praticamente fatto tutto
cadere a pezzi e la cosa peggiore è la nostra
l’elaborazione costruita non ha maneggiato i peli di pelliccia
è molto rollare così dopo il timeout
effettivamente colpito dopo 10 minuti lo faremmo
basta lasciare la richiesta della cintura che vorremmo
lasciarlo cadere silenziosamente sul pavimento e muoverlo
su quello successivo e time out again it
non è stato un grande non è stato fantastico
è stata una notte molto lunga per noi
capire cosa è successo veramente che abbiamo fatto
avere i registri su cui avevamo le metriche
il tempo, ma non è stato sufficiente a
effettivamente capire questo particolare
problema che abbiamo imparato da quello era
che tutte le risorse esterne che noi
abbiamo che abbiamo bisogno di essere trattati come
qualcosa che potrebbe rompersi in qualsiasi momento
e questo non significa veramente che noi
bisogno di proteggerci da ciò che siamo
bisogno di alzare una barriera e fermarsi
parlando con l’API github ma che noi
bisogno di avere mezzi in atto per fallire velocemente
e rispondere alla risposta di questi
i fallimenti di solito quando si svegliano sono le API
trovato o non disponibile è temporaneo
il problema tornerà entro un’ora
e per noi ha iniziato a essere un business
decisione vogliamo abbandonare la build
richiede quando si alzano stile API o
vogliamo continuare a funzionare e
abbiamo deciso che per i nostri utenti e per
i nostri clienti è importante che questi
le build funzionano così dovevamo fare qualcosa
su quello che abbiamo fatto fondamentalmente noi
isolato tutte le richieste API e noi
ha aggiunto timeout più brevi molto più brevi
i timeout sono ancora troppo lunghi
a senso unico a modo loro ma sono dentro
un modo accettabile sostanzialmente che
momento particolare in cui una richiesta è ora disponibile
Penso 20 secondi che è ancora molto
ma se se dovesse accadere, noi solo noi
ignora qualsiasi cosa sia
La chiamata API doveva fare è supposta
per tornare e continuiamo a farlo
quello che volevamo fare, ma poi era un io
non abbastanza perché ci ha permesso di farlo
fallire velocemente ma non ci ha permesso di farlo
non sapere di riprovare in pratica cosa farebbe
l’altra cosa che abbiamo avuto in
risposta a ciò è dopo averlo isolato
per vincere la richiesta è scaduto con un
errore ci siamo riprovati a farlo e a
renderlo un po ‘più resistente a
due problemi nell’API di Github e tu
sapere in pratica smettere di ridurre il
pressione che mettiamo sul loro
api abbiamo guidato il back-off esponenziale
seeeeee quindi questo è il meme che ha
lentamente emerso nella nostra applicazione che
nemmeno parlando con esterno esterno
componenti, ma anche parlando al nostro
componenti li trattiamo come qualcosa
quello che abbiamo iniziato trattandoli come
qualcosa che può rompersi in qualsiasi
tempo che potrebbe precipitare nel caos in qualsiasi momento
tempo e c’è un inerente
L’incertezza sull’utilizzo di API esterne è
e anche sull’utilizzo del tuo AP è in a
mondo in cui ti trasferisci fondamentalmente
fondamentalmente architettura orientata al servizio
ogni applicazione ogni applicazione
l’uso è un mezzo di incertezza che possono
rompilo in qualsiasi momento e perché tutto
si rompe in qualsiasi momento è sfortunato
realtà di un sistema distribuito che
le cose si rompono e abbiamo iniziato
dover affrontare questa incertezza
perché Travis è stato costruito con te lo sai
ottime intenzioni che ha appena assunto
che le reti non lo avrebbero partizionato
le API sono sempre disponibili n
importa quante richieste
a loro e ai nostri componenti
sarebbe sempre disponibile e solo noi
imparare da molto da molto
di guasti e interruzioni che è giusto
non è il caso con cui si tratta
l’incertezza è diventata uno dei miei meme
per sistemi distribuiti anche quando si
avere il pieno controllo su questo presupposto
di per sé non puoi assumere tutto
è sempre in esecuzione tutto il tempo e
che funziona sempre bene
sempre un altro problema e ad un certo punto
si incontreranno e si spezzeranno
tutto su una gamba spettacolare
questo fine settimana in particolare non è un
intero fine settimana per capire cosa è successo
con una API github e alla fine loro
in pratica ha ribaltato il futuro
la loro fine e tutto stava funzionando
di nuovo quello fu un weekend sfortunato
per noi, ma voglio tornare al mozzo
e al nostro problema di essere in grado di farlo
eseguire un hub di processo ha fatto tutte queste cose
e da soli sono abbastanza facili
per uscire potremmo uscire
notifiche potremmo uscire
elaborare le build come commit di un bambino
le notifiche fornite da uscire noi
potrebbe spingere fuori la sincronizzazione dei dati con
github perché non è davvero interessato
che deve essere si conosce nel nel
punto focale di ciò che è in esecuzione di cosa
ha bisogno di correre tutto il tempo così noi
fondamentalmente aveva tutti questi blocchi che noi
potrebbe semplicemente tirare fuori il tiro
fuori dal centro e fare solo un piccolo
piccola scatola minuscola che ormai è davvero solo
facendo due cose è la pianificazione delle bollette
in pratica quando sono disponibili nuove bollette
li spinge su una battuta per il lavoro
processo per eseguire e elabora il
ha prodotto risultati così quando un lavoro è pronto
l’hub riceverà una notifica che lo farà
farà tutto il necessario per elaborare
per postare il processo è stato costruito così ora abbiamo avuto
componenti che si sono presi cura di
sincronizzare e parlare con github quando
è stato costruito in componenti che sono stati gestiti
la build blocca se stessa e i componenti
quella maniglia ha chiamato la build
notifiche invia email
notifiche temporanee IRC e tutto il resto
e quello era abbastanza buono ed è stato
in realtà abbastanza facile da fare per noi
perché le responsabilità erano
già molto isolato quindi nel finale
abbiamo avuto processi molto semplici
app molto semplici che potremmo scalare
ciondolo Lee potremmo scalare potremmo avere
processo di notifica in qualsiasi momento quando
le code stavano facendo il backup e il
le code fanno sempre il backup dell’altro
mimin del sistema distribuito c’è
sempre uno spunto che è troppo pieno così
in realtà abbiamo risolto il problema
abbastanza facilmente ci sono voluti solo pochi
settimane per rompere queste app che era
molto bene ha portato uno sfortunato
problema con esso anche se il nostro codice è
strutturato in modo tale che tutto il
la logica aziendale non è in parte
la sua unica biblioteca si chiama amici
core ed è quella scatola gigante nel
medio e abbiamo tutti questi componenti
in giro ci sono i compiti di cui disponiamo
compiti che fondamentalmente comporta
notifiche che sai mandare email tutte
quella roba abbiamo l’elaborazione delle serrature
abbiamo l’API che fondamentalmente è il nostro WEP
l’utente di un’interfaccia web parla con noi
hub e abbiamo gatekeeper che prende
cura di sincronizzare i dati con github
e gestione quando arriva una richiesta di build
e così improvvisamente abbiamo avuto questa grande palla
di fango in mezzo a tutte le correnti d’aria
dipendevano così da ridimensionare questi
le applicazioni improvvisamente trasformate in a
problema di dipendenza perché questo nucleo
la biblioteca contiene tutto il nostro codice tutto
le app dipendevano da questo e per essere sicuro
che ogni app funzionava ancora dopo
abbiamo apportato una modifica al codice che abbiamo dovuto
assicurati di distribuirli tutti così
hanno iniziato ad avere una certa paura di
spedizione di una nuova funzionalità a causa di questo
gigante grande palla di fango nel mezzo noi
pagato caro per un sacco di architettonico
le decisioni e ciò che noi volevamo
fare ciò che vogliamo fare è focalizzarci
su piccole dipendenze e molto
piccole responsabilità abbiamo il
responsabilità nelle nostre applicazioni
già non sono solo nel codice
il codice è ben separato e tutto tranne
è ancora una gigantesca biblioteca che tutti
queste applicazioni usano così ha iniziato a
entrare nel modo di noi il trasporto cose
mentre distribuendo le cose è diventato semplicemente un
questione di fiducia ed è per questo che cosa
stiamo lavorando al momento
questa grande palla di fango lo sta lacerando
e spingendo tutto il profondo in tutto ciò
le responsabilità e il
dipendenze per questo nel piccolo
app perché sono già abbastanza
isolato è solo il codice
non lo riflette molto bene
è stata un’interessante rivelazione
la modularità non è solo qualcosa
lo sai quando separi le app
quando dividi le applicazioni che sono
come piccoli servizi che gestiscono questo
gestire specifiche responsabilità
la modularità è qualcosa che è
riflessa nel codice ma è anche
qualcosa che si riflette nel tuo
dipendenze se hai una grossa palla di
fango come noi avrai meno te
avrà meno fiducia nel codice della nave
perché c’è sempre paura di ciò
una modifica e quel particolare codice
potrebbe influenzare qualcosa in questo FJ
altro pezzo di codice e analisi statica
tutto quel genere di cose purtroppo
non sarebbe nemmeno d’aiuto, quindi lo siamo
lavorando sodo per rompere tutti questi
dipendenze completamente fuori ma è un sacco di
lavoro purtroppo e sì uno di questi
i componenti meritano uno sguardo più approfondito
perché si è rivelato il più grande
colpevole di essere in grado di scalare
perché rompendo tutte queste cose
per char il Messia non era proprio giusto
su come avere un sistema distribuito è
si trattava di poter crescere noi
hai iniziato a sapere che abbiamo iniziato le proteine
un’altra grandezza di build al giorno e
potremmo vedere indietro al tempo che il
l’architettura che non abbiamo
davvero tagliare le serrature in particolare è il
esempio più interessante perché un sacco di
il componente che ha gestito il blocco diventa come
arrivano dai posti di lavoro che è
tradizionalmente era un processore e quello
il singolo processo era fondamentalmente responsabile
per l’aggiornamento del database e l’invio
la possibilità di bloccare il pusher e il nostro vecchio
architettura che aggiorna il database
seminterrato aggiornando una singola riga e a
colonna che conteneva l’intero registro così
ogni volta che un nuovo pezzo è venuto una nuova parte di
il blocco entrò in pratica
rimasto un problema una dichiarazione di aggiornamento a
il database e sostanzialmente concatenato
due corde insieme era piuttosto
efficiente ma significava una cosa
significava uno significava che questo particolare
parte del cappotto dipendeva dal
ordina che i messaggi entrino in esso
fai sempre affidamento sul fatto che i messaggi siano arrivati
l’ordine giusto quando erano fuori
ordine improvvisamente si sarebbe rotto
il blocco della porta rotto nel database e
non è stato molto piacevole e uguale
è vero per un’interfaccia utente web um
Spingi ancora sai che questo è l’altro
responsabilità per la libreria bloccata
invia i messaggi a pusher che
poi a sua volta li inoltra a tutti i
persone che hanno fondamentalmente un browser
apri e vuoi vedere il lucchetto costruito
è la coda nella vita e come questo di solito
funziona è che abbiamo questo grande
processore e abbiamo avuto tutti questi singoli
costruire lavori che stavano sostanzialmente spingendo
messaggi su lotti QQ revenant
preme che li prenderebbe uno alla volta
e aggiornerebbe il database con esso
e vorrei inviare sarebbe inoltrato a spingere
lei e questo processo in realtà hanno fatto abbastanza
bene nelle ore di punta sarebbe farlo
elaborerebbe un centinaio di messaggi per
secondo era leggermente lo era già
ridimensionare un po ‘per cui è abituato
utilizzare i thread per essere in grado di fare le cose
contemporaneamente, ma non stava facendo molto
bene e 100 messaggi al secondo era
iniziato a essere la nostra media giornaliera di
messaggi che abbiamo fatto in modo che potessimo vedere
che questo sarà un limite
a un certo punto andremo a colpire e
anche quando abbiamo il cubo di backup
perché c’è sempre un backup di cubi
quando la coda si riempie improvvisamente
e avremmo una raffica e un blocco
messaggi che il processore non sarebbe
in grado di raggiungere quello con quello
scoppiò in modo che iniziasse davvero a girare
in un problema e il problema del tribunale di
questo di questo intero processo era tutto
i pezzi di blocco dovevano essere dentro
l’esatto ordine si conosce il bloccato
i processi si basano sulla possibilità di blocco
essere nell’ordine esatto che avrebbero
appaiono fondamentalmente nel costruito
uscita e fare affidamento sull’ordine corretto
in questo caso trasformato in una scalabilità
problema per noi se è necessario fare affidamento su
ordinando in un sistema distribuito voi
entrare nei regni del coordinamento
coordinando diversi nodi a
trova il giusto ordine di tutto tranne che
si scopre che potremmo davvero fare
qualcosa abbastanza facile a riguardo e
sfortunatamente facendo questo ha avuto un sacco di
conseguenze per il resto del nostro sistema
ma quello che abbiamo finito è fatto
l’ordinamento di una proprietà del messaggio
stesso piuttosto che fare affidamento
RabbitMQ sul messaggio da rimuovere
il coniglio e QQ nel giusto ordine noi
fondamentalmente determinato l’ordine nel
messaggio stesso ogni messaggio ha ottenuto a
orologio fondamentalmente un contatore che lo farebbe
identificare la sua posizione nella nel
India nella serratura completa e
potrebbe essere abbastanza facile da assemblare
blocca più tardi abbiamo avuto solo questi pezzi
improvvisamente abbiamo iniziato a memorizzare invece di
aggiornare una singola colonna nel database
noi conserveremmo questi piccoli pezzi
e in un punto del tempo potremmo
in pratica prendi questi pezzi e basta
semplicemente riassemblali nuovamente in a
registro completo basato su quel contatore
ed è stato davvero bellissimo
cosa semplice perché il lavoro di jabra è un lavoro
è sempre solo responsabile per un singolo
lavoro così potremmo assicurarci che non lo facciamo
non avremmo conflitti
tra più corridori di lavoro da
aggiornando lo stesso contatore che è
un altro o un problema che vorrei non
avere così potremmo mantenere questo contatore o
un cazzo in giro e potrebbe farlo all’improvviso
ha reso i diritti davvero molto facili
erano in realtà più veloci perché solo noi
ha scritto diritti unici che in Postgres
che è il nostro database principale significa te
basta aggiungere qualcosa alla transazione
registro e hai finito con esso fondamentalmente
solo indipendente e basta
abbastanza bello e devo dire il
idee da questo um e questo è dove il
Gli adattamenti del Rinascimento e ho avuto le idee
da questo per questo suonava come a
idea abbastanza ovvia ma le idee per
questa è l’ispirazione per ciò che è venuto
da un articolo di Leslie Lamport che
si chiamava um come si chiamava ora
orologi e l’ordinamento di eventi e
far parte di quel documento parla dell’uso
un orologio che in questo caso è possibile
solo essere un contatore, anche un contatore può essere
un orologio in questo caso e qualunque cosa a
messaggio è passato da uno da noi
2 ricevitore il centro sarebbe lodato
che passo in punto in modo che tu possa quando
erano nel ricevitore inoltrato il
messaggio di nuovo ad un altro processo che
farebbe ancora un incremento di quell’orologio
ce ne sono alcuni certamente introdotti
complicazioni coinvolte rispetto a quella ma il
l’idea di base è proprio questo come un messaggio
passa attraverso un sistema che contrasta
sarebbe solo impegnato è molto
idea più semplice e possiamo effettivamente usare
questa semplice interpretazione di quale lampada
o abbiamo circa un ora di installazione, solo
aveva bisogno di questo orologio per poterlo fare
identificare un messaggio più tardi, quindi non l’abbiamo fatto
devi preoccuparti di averne appena lasciato uno
la stampa delle serrature è in funzione, ora ne abbiamo cinque
possiamo elaborarlo anche io penso che il nostro
I picchi sono 300 messaggi al secondo io
non devi preoccuparti di rimontare
i registri perché ciò lascia semplice
il contatore è fondamentalmente ciò che ci consente
per farlo in qualsiasi momento
grandi effetti su ciò che il nostro utente web
l’interfaccia stava facendo ma ne valeva la pena
guai e questa è un’altra cosa
sistemi distribuiti uno dei miei molti
l’apprendimento è la semplicità che puoi rompere se
puoi rendere le cose semplici come
possibile saranno più facili da ridimensionare
e in realtà ci sono più facili da fare
ragionamento sul ragionamento sul doverlo fare
motivo per l’ordine dei messaggi
sai che dovrei processarli
senza avere un ordine esplicito è per
sono una questione di complessità e penso
La chiave Richie sarebbe stata effettivamente d’accordo in questo
caso a cui non piace ordinare che stiamo avendo
fare affidamento su ordine lo ha chiamato uno dei
comp come una delle cose complesse
e ha fatto lui usa la denuncia
sistemi software e quindi questo piccolo questo
piccolo digitale significa solo mettere un
contrastare nel messaggio ci ha permesso di
effettivamente scalare questo splendidamente
ci ha costretti ad aggiornare l’interfaccia utente
perché anche l’interfaccia utente era giusta
prendendo questi eventi e incombendoli
per i muti che conosci sono stati costruiti
trailing vivo um ma ha funzionato abbastanza
beh, avevamo due approcci
originariamente nell’interfaccia utente web a
fare quello era solo vorremmo solo
messaggi bufferizzati sai se i messaggi
stavano arrivando fuori ordine che è
buffer per tamponare quelli successivi attendere
quel messaggio che era
per arrivare e alla fine arrossire
tutti fuori, indipendentemente da te
dopo un timeout o quando quel messaggio
finalmente arrivato così potemmo esserne sicuri
che il blocco delle fatture sarebbe sempre stato
mostrando qualcosa e non non essere
in ritardo perché era un singolo messaggio
mancante perché a volte un singolo
il messaggio può in realtà essere solo uno
carattere quando il conto quando è costruito
in esecuzione e emette solo un punto che può
solo essere quel personaggio che è attivamente
eseguirlo ha reso la nostra interfaccia utente a
un po ‘più complesso ma ha reso il
il resto delle implicazioni è molto più semplice
e grande è l’elaborazione delle serrature
in realtà l’unico processo in cui abbiamo
rotto tutte le dipendenze e fatto
è un processo separato e lo penso
ha come 30 linee di codice in totale quali
è molto meglio di aver fatto affidamento su a
grande palla di fango che condivide lo stesso
dipendenze quindi nel 2013 stiamo facendo ora
45 mila fatture e al giorno che è un
abbastanza buono, ma buono
pagando ancora parecchio paghiamo molto
di debito per le decisioni iniziali che
facciamo l’ architetto per una volta ma questo
mi riporta a queste incertezze
decisioni architettoniche che potrebbero apparire
male nel sito di ayia ma sai quando quando
cercando di dire che ero oro che lo sapevo
alla fine andrebbe da pochi
cento fatture al giorno per quasi bocciare a
quarantacinquemila voti al giorno nessuno
sapeva che era un capitolo incerto no
nessuno ha capito che sarebbe successo
alla fine diventare uno spot
piattaforma pure, ma siamo ancora un po ‘
paga il prezzo che dobbiamo ancora gestire
che siamo una piccola squadra ma è solo
come va è come ho parlato
queste barriere ho parlato di orsi e
trattare le API esterne è come tu sai
i tuoi nemici o li trattano come
qualcosa che potrebbe rompersi in qualsiasi momento
è davvero difficile prevederti quando tu
avere quando non hai il controllo su di te
conoscere le altre parti del sistema e
è davvero difficile per te sapere fare il
scambiare le cose tra il mettere tutto il mio
tempo e gestione di tutti questi fallimenti in
questa incertezza in anticipo o lo faccio
sai come il sistema si evolve come vedo io
si rompe in produzione perché io tu
so che devo essere onesto tanto triste
mi fa vedere il cervello sentire le cose rompere
in produzione mi entusiasmo sempre
esso
Di solito posso imparare da questo ora noi
avere mezzi migliori per imparare davvero da
questi incidenti e vedere dove un sistema
deve ancora essere migliorato e uno di
la cosa una delle cose che siamo
in realtà bisogno di migliorare e questo è uno
degli ultimi enigmi che abbiamo ancora
sono ancora tutti questi componenti
usali uno stesso database che tu
sai se ne hai qualcuno se ne hai uno
diagramma dove tutto punta a a
componente singolo che non va bene perché
quando quel componente rompe tutto
si romperà e abbiamo appena avuto l’ultimo
settimana il nostro database principale è caduto perché
di un problema ec2 e niente di tutto latino
e questa è una delle cose che siamo
lavorando su perché le nostre serrature elaborano
ora sta facendo fino a 300 visitatori per
secondo nelle ore di punta e così attivamente
effetti le letture dalla nostra API così noi
avere questo problema dove possiamo facilmente fare
300 300 scritture al secondo ma essere in grado
per farlo nella nostra corrente
effetti di architettura conosci persone
usando la nostra gente dell’API fondamentalmente guardando
alla nostra interfaccia utente e questo non è un
ottima esperienza utente, ma è un’altra
una di queste esperienze di apprendimento a
un punto che avremo lo faremo
speriamo di avere più database in
questa configurazione e sarà tutto un po ‘
po ‘più facile per separare isolare questi
componenti gli uni dagli altri perché se
guardi le serrature che elaborano è molto
processo isolato non fa nulla
non fa nulla a cui è collegato
il resto del processo di blocco del sistema è
fondamentalmente basta mettere tutti questi giri di blocco
nel flater del database aggregarli
in una grande serratura e poi alla fine
li archivia su s3 che è sempre log
farlo non ha bisogno di attraversare
il database principale, quindi abbiamo abbastanza facile
significa rendere il nostro sistema di più
distributivo ma facendo rendendolo così
dovremo avere di più con te
incertezza su quali sono le cose
si romperà e dovremo avere di più
monitoraggio e vedremo più fallimenti
ma alla fine ne avremo di più
semplicità e queste componenti di
stesso sarà più facile da gestire sul loro
proprio come ringrazia una grossa palla di fango
tu
abbiamo domande che sono arrivate così grazie
per inviare domande se ne hai
più domande ottenendo il loro culo e
live o inviarli tramite la tua app
ricorda anche di votare il voto dell’app
per il discorso la risposta giusta è verde
a proposito e dillo a chiunque te l’abbia detto
quindi prima domanda qual è il miglior libro
o risorsa per ingegneri e sviluppatori
entrare nel sistema distribuito X
modelli di trappole migliori preparazione mi faccia sapere
quando lo trovi è davvero difficile
domanda sì che è una domanda difficile i
Rihanna slee, devo ancora trovarne una
non c’è davvero una buona voce di libro
introducendo questo tipo di cose ho trovato un
molta ispirazione per quanto bene nemmeno
solo come hanno un singolo algoritmo
sai gestire gli incontri di incremento
ma ho avuto molta ispirazione dal web
i libri operativi devono essere abbastanza onesti ma
In realtà ho iniziato a leggere articoli come
Leslie LAN ports paper ce ne sono alcuni
Liste di lettura abbastanza buone su carte per
ingegneri di sistema là fuori penso che se
tu google li troverai in realtà a
pochi post del blog e questi sono in realtà
le migliori risorse che alcuni documenti non sono
molto accessibile ma Leslie Lamport per
esempio ha scritto che hai scritto molto
roba quel tipo che non so che saremmo noi
erano come un centinaio di giornali e poi a
vai a puoi trovare il suo sito web sotto
ricerca microsoft e ha tutto suo
documenti elencati è un’enorme pagina web
sì sfortunatamente le loro carte come
pack seghe sai che dove hai
coordinamento distribuito con sir no
molto bene, almeno per me, che non lo siamo
facile da capire ma non lo so per
io questi documenti erano la migliore fonte di
ispirazione finora e uno di uno dei
una delle cose reali che riguardano
sistemi distribuiti in particolare come
maneggiarti quando hai un parallelo
processi che parlano tra loro
la rete è e ci sarà a
parlare di questo è commutativo
tipi di dati replicati è fondamentalmente
tipi di dati che possono essere coordinati
sapere come incrementare un contatore
che può essere coordinato da più
nota che hai sempre un atomico
incremento infantile atomico alla fine e
ne parliamo domani penso
e quella roba è abbastanza interessante per
sistemi distribuiti perché ti dà
una buona idea dei problemi
coinvolto con sistemi distribuiti voi
so che c’è anche una pagina sotto il MIT
gruppo di ricerca sui sistemi distribuiti quindi se
hai googlato documenti di esrog c’è una pagina
con un sacco di carte elencate
c’è una buona risorsa come
la prossima domanda è che stai usando
gli interruttori tipo Michael My
guardiani superiori oltre a due presenze
e il back-off esponenziale che non stiamo usando
gli interruttori di circuito ancora ma è qualcosa
che io stavo pensando a piuttosto un
molto amo il libro di Michael My Guards
in realtà uno dei libri migliori che
troverai effettivamente in esecuzione
tutto ciò che è in produzione lo gestisce Michael my
le guardie lo rilasciano è se ce n’è
libro lo consiglierei è quel libro
menziona interruttori automatici e così
menziona paratie e interruttori di circuito
è fondamentalmente l’idea quando ne hai anche tu
molti fallimenti che colpiscono il bene dell’API
fai il giro del circuito e ti fermerai
e tu smetti di fare richieste e dopo a
mentre fondamentalmente inizierai
effettuare nuovamente richieste lente all’API
vedendoti sapere valutare se è se
sta funzionando e poi ad un certo punto
puoi puoi ricollegare il circuito
che tutte le richieste arriveranno
attraverso Ci ho pensato un sacco noi
non ce l’ ho ancora, è uno di questi
cose in cui io che sarebbe davvero bello
perché abbiamo due API è che ci siamo nascosti
come centinaia di migliaia di volte per
giorno e la cosa sfortunata è quella
quando loro quando uno di loro va giù
ci limiteremo a mantenere colpendoli Dobbiamo solo
continua a colpire molto e il circuito
il demolitore sarebbe sicuramente utile
qualcosa che voglio implementare per questo
codice particolare per isolare questi pallidi
un po ‘più decisamente c’è il
terza domanda ma prima di chiederlo io
devo dare una piccola introduzione ad esso
perché uno dei problemi in
i sistemi distribuiti sono di rete
partizioni ora partizione può essere il
fallimento di una rete è più in generale
la mancanza di un arrivo di un messaggio
quindi il messaggio potrebbe non arrivare a dove
sta andando o c’è anche il fatto che
un messaggio potrebbe essere duplicato a seconda
su quali protocolli stanno usando in questo modo
la domanda è stata posta tre volte come te
gestire più processi che devono
condivido lo stesso orologio temporale, penso
Willie non avrebbe avuto quel problema
lo rende abbastanza facile da essere
molto felice che sia um what I
menzionato questi questi orologi che noi
è sempre solo un processo
incrementa l’ orologio che abbiamo modellato
fuori da questo problema, quindi non lo facciamo
bisogno di avere distribuito un distribuito
cazzo che ha bisogno di essere incrementato um it
rende molto più facile implementarlo
va alla tua semplicità sì, questo è tutto
vuoi rinfrescare altre domande ok?
sarebbe ovvio usare un no sequel
banca dati, invece, e non ho chiesto che
domanda per essere onesti, sono pari
anche se ho scritto un piccolo libro su come reagire
Sono abbastanza affezionato al postgres è un
database fantastico sono sempre sorpreso
che in realtà potremmo lanciarne 300
scrive al secondo ed è ed è a
Istanza ec2 da 1,7 gigabyte a 32-bit e it
può ancora gestirlo ma rispondere al
domanda sì, sarebbe ovvio
sarebbe in realtà ovvio per prendere il nostro
serrature processo e memorizzato la Cina essere essere
per esempio in grado di memorizzare i pezzi
reagire invece di postgres ma la bellezza
di isolare l’elaborazione dei registri e
isolare i servizi separati è quello
non importa ciò che usiamo noi
possiamo così poterci scambiare senza
che influenza il resto del sistema
l’importante della parte
modularità è possibile modificare i dati
conservare per un sistema e non lo fa
davvero influenzare il resto del sistema
è dove vorrei andare e
alla fine forse vorremmo che lo faremo
utilizzare un archivio dati senza segnale ma in
fine è solo un altro sistema distribuito
dobbiamo prenderci cura di ciò che accadrà
portare più problemi quindi è sempre
un trade-off che tipo di monitoraggio sono
stai facendo e come si correlano
eventi attraverso i molti componenti
Oh domanda troppo dolorosa, si, è un
tutta la conversazione in sé, quindi seguiamo molto
delle metriche nel nostro sistema rispetto a
Succede bene, stiamo usando quello simile a
lo stats d verrebbe semplicemente processato
dove puoi inviare tutto il tuo processo
metriche e sta andando di trasmettere loro
al sistema come la grafite o qualcosa del genere
che usiamo si chiama metriche librado
che è un servizio in hosting per le metriche
fondamentalmente aveva una granata tutto questo
metriche nelle nostre applicazioni e anche noi
ho costruito un collezionista personalizzato che tira
che le cose di Paolo come rabbitmq o
database per informazioni come quando era
l’ultimo toro che esegue quanti messaggi
sono come quanti anni ha la Q quanti
i messaggi sono attualmente sottoposti a backup nel
coda perché di solito quando r cubo X su
c’è un problema da qualche parte e come noi
traccia gli eventi che il nostro sistema è
in realtà un problema che attualmente davvero
che attualmente sto lavorando per risolvere come
non stiamo facendo un ottimo lavoro a
che in questo momento il problema è così
cosa cosa stiamo fissando su cosa
ci stiamo lavorando è che ognuno di noi
la richiesta fondamentalmente ottiene un segno qualcosa
semplice come un UID a cui viene assegnato
ti identifichi e quindi puoi usare quello uuid per
rintracciare nelle serrature quello che è ciò che è
accadendo in questo sistema non abbiamo un
strumento molto elaborato che consente
noi per visualizzare tutte quelle cose è di più
su come essere in grado di tornare a
queste cose perché noi non di solito noi
non passare molto tempo a guardare il nostro
serrature dobbiamo solo investigare quando a
marinai dei clienti hey ho spinto qualcosa
github e nessun conto era in esecuzione
Travis CI e abbiamo bisogno di essere in grado di
tracciare quel passo indietro a fatto effettivamente
la bobina web della notifica in realtà
arrivato e poi cosa gli è successo e
questo è uno dei nostri maggiori problemi e
la soluzione è una buona ipotesi che divampa
nascondendo un UID alla richiesta e poi
usando quello che ho bisogno di tracciare
tutto attraverso il sistema come fai tu
prova il tuo sistema per questo tipo di
problemi quindi apri un’altra iscrizione
domanda dolorosa noi non la leggiamo noi
eseguirlo in produzione è così che testiamo
esso
beh potresti avere o il male c’è a
domanda sui pensieri su come sostituire il
database centrale che hai coperto
quello sì che fa il gatekeeper
gatekeeper is it is it is it’s it
luminoso da Ghostbusters ma guardiani
in pratica quando quando arriva una richiesta
riceviamo la notifica da Github
un nuovo impegno è stato fatto noi fondamentalmente
lo spinsi su una coda e un guardiano
prende questi commit e li trasforma in
qualcosa che è eseguibile dal sistema
fondamentalmente prende un carico utile JSON che
contiene informazioni su di esso che impegni
ao su un limite serio e lo trasforma
in una serie di un insieme di lavori di costruzione che
può quindi essere eseguito su qualsiasi over / job
scheduler e fa anche cose simili
sincronizzazione dei dati utente con github ma
lo scopo principale è essere il principale
punto di ingresso per la gestione della costruzione
richieste e un’ultima domanda sei tu
usando AWS come piattaforma esclusiva oh
non siamo dove la nostra intera pila di app
funziona su AWS funziona su Heroku proprio come
sempre un po ‘sorprendente per le persone ma
in realtà siamo abbastanza tranquilli, siamo piuttosto tranquilli
felice con esso funziona il nostro stack di applicazioni
su ec2 ma la nostra roba è così
eseguendo i test che ora è 550 test
servizio costruito su servizio che gira su
diversa architettura di virtualizzazione
che in realtà gestisce un hardware dedicato
ma sta ancora usando abbiamo ancora un
API per parlare a parlare con quella
infrastruttura che è abbastanza comoda
è meglio che dover fare tutto
il loro provisioning manuale era tutto
le domande che sono arrivate a qualcun altro
ha ma qualsiasi cosa là dietro dovrebbe
coniglio in coda Oh
la componente vulnerabile di noi cosa fare
lo fai per lavorare su quello sono così
la domanda è che rabbitmq è forse un equo
bene un componente fragile nel nostro sistema
cosa facciamo per aggiustarlo, ehm sì entrate q
è un componente usato per rompere molto
ma il problema con questo è la nostra iniziale
problema che passo molto più che a
Q ma um ma penso che sia più il mio
non mi piace di amqp è molto complesso
il protocollo stesso di rabbitmq funzionava davvero
abbastanza bene per noi ma la copia che era
che noi mentre gestiamo le nostre cose su Heroku noi
utilizzare molti altri servizi aggiuntivi
fondamentalmente che altre persone si irrigidiscono per noi
a volte è a volte utile
doloroso con mq rabbioso era inizialmente
è stato molto doloroso perché ciò che questi
i fornitori di solito lo fanno sono hanno istituito a
cluster che un sacco di clienti che
usare e ci siamo basati per ottenere
throughput coerente attraverso ogni
grazie se abbiamo appena vediamo un tuffo la punta
e prestazioni di throughput e RabbitMQ
i nostri messaggi inizieranno ad accodarsi
immediatamente perché ci affidiamo a questo e
in un sistema multi-tenant RabbitMQ
sfortunatamente è costruito in modo tale che se
hai un produttore che sta producendo
molti messaggi possono bloccarne altri
altri produttori o anche i consumatori nel
sistema così ogni qual volta un altro cliente
su quel calculor coccola su quel gruppo
si avvicinò e iniziò a inviare come
migliaia di messaggi al secondo
immediatamente ci influenzerebbe non appena
passiamo a un cluster dedicato che noi
solo abbiamo dovuto guadagnare da noi Q non lo era
non è stato più un problema e il
funzionalità ad alta disponibilità e RabbitMQ
tre punti o sono davvero molto belli
è ancora ho ancora dei dubbi
eseguirlo in produzione è ce l’ha
ha i suoi porti sostanzialmente di Hank a
un po ‘difficile da gestire, ma quando lo è
eseguirlo effettivamente funziona abbastanza bene
hanno fatto molto per rendere più facile
operare un mq rabbi in produzione e ma
alla fine per noi non è così
importa più se usiamo il rosso e
Kyra se usiamo qualcos’altro perché
non siamo più legati ad esso ora
rimuovendo questo rimuovendo il controllo il
requisito di ordine di
ordinamento implicito come i messaggi che ho inviato
attraverso il bus attraverso il bus dei messaggi
ci ha permesso di pensare a usare effettivamente
altri bus di messaggi e il futuro a
un certo punto ma finora non credo
coniglio e parete q probabilmente sarà molto
facilmente ci permettono di fare un migliaio di messaggi
per un secondo e se non dobbiamo
preoccupo per quello che mi piace di non
preoccuparsi di queste cose per un po ‘di tempo
lo rende un po ‘più facile okay
che è ora di pranzo, quindi tutti ringraziano
il nostro oratore

Please follow and like us: