
ciao buon pomeriggio sono Brian
McAllister dell’ospite speciale e
oggi vogliamo parlare dell’elaborazione
Lo streaming di eventi molto grandi a groupon lo è
il microfono passa chiaramente se tengo
si tratta di questa distanza buona così non c’è
me stesso ai colleghi AJ ed Eric
i tempi che in realtà hanno tutto il
parti carnose divertenti della presentazione I
arrivare a fare il setup e un po ‘di parlare
riguardo il problema perché sto andando a
iniziare a tossire in circa dieci minuti così
a groupon abbiamo un sacco di eventi
che elaboriamo i loro registri web mobili
registra gli eventi a livello di applicazione di tipo
eventi metrici di tipo operativo che conosci
e se parli solo di quelli che si nutrono
nella maggior parte delle nostre topologie di tempesta
che sta andando intorno a molto
sai che è nell’ordine in cui lo sai
100 a 200 mila eventi al secondo
una sorta di nominalmente in tutto il
parte interessante del giorno che non lo è
pantagruelico ma è abbastanza grande che tu
devo iniziare a fare qualcosa di interessante
le cose in particolare quando lo accoppi
con dozzine di modi diversi di
elaborando ciò che vuoi fare in
a volte creando nuovi flussi fuori
quei flussi per alimentare di nuovo e così
questo discorso si concentrerà su ciò che noi
ho imparato a fare questo e ciò che noi
ho fatto per farlo funzionare bene
evolutivamente e operativamente e così via
il punto di partenza per quasi tutti i nostri
l’elaborazione del flusso è la tempesta che è arrivata
dal tipo back e Twitter pochi anni
fa non voglio andare troppo in profondità
tempesta di grandine lavoro così ho intenzione di fare a
rapido sondaggio che qui è comodo con
le astrazioni di base della tempesta che è
Non è una buona causa okay, quindi ho intenzione di farlo
andare in loro un po ‘di più così tempesta
funziona su quella che chiama una topologia e
le sue scuse sono costituite da beccucci che
invia eventi nel sistema che conosci
nel nostro caso la fonte di partenza di
è quasi sempre Kafka quindi c’è
qualcosa chiamato becco di Kafka quello
legge fuori effettivamente tenere premuto show veloce
delle mani che non conosce Kafka
non so kafka kafka è un
high-throughput un sub-sistema di pubblicazione
funziona abbastanza bene e puoi solo pensare
in questo modo è un throughput elevato
pub / sub che funziona piuttosto bene come
rispetto a te pub / sub high-throughput
che non funziona bene, che è il grosso
di loro compresi quelli che ho scritto
così i beccucci alimentano le cose in tempesta
quindi disporre di processori alimentati da un evento
in quanto ciò che la tempesta chiama una tupla questo è
probabilmente perché ha iniziato la sua vita
tipi di chiusura e di odio così
tutto è una tupla anche se diventa
complicato ora che molte persone scrivono
le loro cose in Java o addirittura in Ruby um
entro la tempesta e concettualmente un fulmine
fa un po ‘di elaborazione e
poi emette più tuple che vanno a
un’altra ciotola che emette più tuple
vai a un altro bullone in modo da poter iniziare
incollare insieme come si desidera elaborare
i dati somigliano molto alle cose da piping
insieme nella shell si conosce un modo di
pensando di gestire flussi di
dati che la maggior parte degli sviluppatori sono carini
familiarità con e tu puoi omettere più
quelli una specie di piccola topologia
ho qui non lo fa davvero ma
vedremo molto più complicato
topologie più tardi nel discorso e così il
la cosa che fa la tempesta è che fornisce a
modello di programmazione per fare questo
piacevole da lavorare come sviluppatore e
molto importante assume anche quello
non puoi fare tutto questo in casa
macchina perché hai solo troppo
dati o troppa elaborazione e
fornisce un errore di recupero degli errori molto buono
meccanismi di gestione per riprodurre flussi di
tuple da punti nel tempo da gestire
fallimenti che è davvero il principale vantaggio
quella tempesta porta qualcosa
arrotolato a mano è che ha un po ‘intelligente
cose per la gestione degli errori nel recupero in
un sistema distribuito che non siamo
andando in realtà andare in quello tranne a
Dì che li spegniamo quando tu
desidera un throughput elevato quindi da uno sviluppatore
prospettiva, cosa stai scrivendo un bullone
è davvero che sai che arriva una tupla
fai delle cose come quelle che conosci noi
ottenere una spanna questo è in realtà
un sottoinsieme di una topologia per l’elaborazione
Zipkin Street Zipkin si estende da noi
roba con esso fai qualcosa con esso
e poi emetti in una tupla diversa
e incollerai solo un mucchio di
queste cose in genere e tu lo sai
sai di entrare così quando reciti a
molti colori davvero non si presentano
sul proiettore questo è tutto colorato
questo non ti aiuterà molto
discreto, mi scuso così perché non lo facciamo
voglio andare in come la tempesta funziona a
grande grado da un programmatore
prospettiva vogliamo parlare di come
fallo quando ne hai tantissime
le squadre che lo utilizzano un sacco e molti eventi
e come lo fai ragionevolmente
in modo efficiente è importante capire
le astrazioni principali che la tempesta usa
perché stiamo andando a parlare di loro
e poi li torcheremo
intorno a lato e metterli attraverso a
strizzacervelli e fai bene Eric sta per fare
cose orribili per loro così quando guardi
alla tempesta ci sono alcune altre cose del genere
un cluster di guardiani dello zoo perché non è possibile
avere un sistema distribuito senza
guardiano dello zoo nel 2015 con Nimbus the Nimbus
concettualmente è il controller per il
tutto è come se ti assegnasse
invia la tua topologia che è il tuo grafico
di elaborazione sai al Nimbus e
lo distribuisce a un gruppo di lavoratori
nodi sai che questo è come tre
server diversi ora i nodi worker
sai che un supervisore è in esecuzione e
questo è simile a un o mentire
supervisore ma appena sufficiente diverso
essere confusi dove un supervisore esegue un
lavoratore un lavoratore contiene dirigenti e
i lavoratori sono processi separati loro
processi del bambino del supervisore
è iniziato ma è il suo JVM
executor non è un esecutore Java nonostante
essere in Java è una singola esecuzione
thread in un thread di programmazione e tu
di solito se si mettono compiti per una topologia
in un esecutore puoi tecnicamente
mettere più di un compito su un esecutore
correndo in un lavoratore ma non lo fai mai
vogliono farlo perché non c’è
è brutto e se qualcuno lo sa davvero
perché hai mai messo più di un compito
in un esecutore mi trovi dopo e
spiegalo perché non capisco
è possibile quindi è scusa allora
abbiamo visto è diviso in un intero gruppo di
piccoli compiti che funzionano così se pensi
riguardo al beccuccio l’ erogatore è impostato su di te
eseguire tre istanze dello spout qui
sai dire che questo è Kafka, ne abbiamo tre
partizioni che puoi effettivamente ottenere
tre lettori simultanei che vomitano
le cose in poi hai un flusso di
cose che vanno dal beccuccio che spingono dentro
boltay in bolt X e sai che puoi
fai varie cose per dire, prova e mettila
sulla stessa macchina ma se non riesci a metterlo
da qualche altra parte ed è sempre uno a
uno così emetterà una tupla qui
questo ammetterà in alto qui o in
qui dentro e la tempesta si prende cura di
tubare le tuple fino in fondo
il sistema che il lavoratore che conosci prende
cura di eseguire tutti i compiti per a
topologia e qui abbiamo la tempesta
sembra quasi fuori dalla scatola
cercando di eseguire solo quella topologia ora
abbiamo dozzine di topologie così diventa
ancora più complicato che è ciò che il
il resto del discorso riguarda circa la metà di
il resto del discorso riguarda um I do
voglio fermarmi qui però perché sono andato
attraverso la spiegazione rapidamente e io
voglio dire se non capisci il
diversi componenti qui un fisico
server o macchina virtuale esegue a
supervisore un supervisore gestisce i lavoratori
forse più di un lavoratore corre
dirigenti che eseguono attività associate
con una topologia ci sono molti livelli
di sorta di nidificazione di controllo qui e
diventerà torbido quindi questo è il tuo
possibilità di porre le domande prima
diventa torbida Sono molto meglio
spiegando che pensavo di essere se
non ci sono domande che vanno una volta in corso
due volte va bene quindi ecco le basi di
tempesta fuori dalla scatola ora per parlare
come effettivamente facciamo questo lavoro per a
gran numero di squadre un gran numero di
topologie su un set leggermente più piccolo di
hardware
abbiamo Eric Weathers che guida il genere
di tempesta su mezzos lavorano a Groupon così
semplicemente lavorando si, va bene così come Brian
abbiamo detto che abbiamo un sacco di cose diverse
topologie in esecuzione all’interno di
Groupon e lo era sempre
le singole squadre dovrebbero gestire
i loro stessi storm stormi ottengono tutto il
competenze in esecuzione tempesta conoscere
tutti i diversi aspetti operativi
e poi abbiamo anche inefficienze
dove abbiamo gruppi sottoutilizzati
a causa di problemi generali con necessità
acquistare hardware in anticipo per
Fornisci le tue macchine per i cluster e
anche quella tempesta in sé non si presta
stesso a un utilizzo efficiente di
hardware sottostante a causa del
modello di pianificazione delle risorse di tempesta che
Entrerò qui tra un secondo così prima
Voglio introdurre il concetto di maggio
saponi e come funziona in generale e
quindi lo applicherò specificamente al nostro
usa il caso di tempesta, quindi se nessuno ha sentito parlare
di maggio cuce o farò la cosa del sondaggio
come chiunque è quante persone sono
ho familiarità con Mesas così che è in realtà
piuttosto fresco quindi non devo andare in
super dettaglio ma in fondo potrebbe cucire fa
pianificazione delle risorse sui nodi dei lavoratori così
dato un quadro applicativo come
Hadoop o tempesta o MPI o qualsiasi altra cosa
puoi immaginare che potrebbe voler correre
molti ospiti diversi si diffondono in un
cluster e può cucire ti permette di
pianifica i tuoi compiti su questi diversi
i nodi worker ha i suoi meccanismi
per mantenere lo stato per il maestro così
che può essere un che e due del
concetti fondamentali di maggio così che devono essere
capito per te davvero afferrare il
resto del discorso la mia sezione almeno lo sono
lo schedulatore e l’esecutore quindi ciascuno
tempesta quadro Hadoop qualunque cosa ha a
programmatore che è una cosa che fa
quelli parlano e dice come fanno
vuoi correre qualsiasi cosa su Mesa Sand
gli orari come si per favore corri
questi compiti allora possono essere realizzati da cucire
tali compiti al lavoratore effettivo
note slave e ci sono diversi modi
di farlo, ma il modo standard in cui noi
anche usando in tempesta è quello di eseguire un altro
esecutore ed è qui che entriamo in a
un po ‘di confusione terminologica
perché ho parlato di compiti e
i dirigenti qui e Brian ha anche parlato
su compiti ed esecutori e questi sono
cose diverse quindi tornando di nuovo
il modello di tempesta che hai dirigenti e
compiti questi sono i più bassi livelli
le cose in questo intero sistema operano
sulle singole tuple che sono
che fluiscono attraverso il sistema che potrebbero fare
cose come aggregarsi insieme due
diverse linee di registro, qualunque cosa tu possa
immagina e loro corrono in questo
modello threaded dell’esecutore le attività
ora formate una salsa risalendo il
l’esecutore era il vero controllore di
tutto ciò che è in esecuzione su a
slave particolare per il tuo framework e
sta per eseguire singoli processi
per il tuo framework come rende tali compiti
quindi questa è una specie di bambola matrioska I
Ho dimenticato come lo hai detto ma babushka
bambole non lo so del diverso
strati in modo che all’esterno hai un lavoratore
ospita dentro di te una tempesta
supervisore che è in realtà la mazza
esecutore all’interno di questo abbiamo la tempesta
lavoratore che è in realtà il compito di mezzos
processo quindi hai l’esecutore tempesta
e poi il compito della tempesta così ogni volta
stai parlando di compiti e
dirigenti per quanto riguarda questi due
diversi sistemi devi essere molto
chiaro su quale livello stai parlando
quindi per collegare insieme questo due diversi
sistemi abbiamo sfruttato un esterno o
progetto open source piuttosto esistente per
creando una struttura in cima a mesos per
la tempesta è in realtà scritta dal
autore originale di storm nathan martes
e quindi l’abbiamo appena eseguito per un po ‘
non adulterato e abbiamo recentemente iniziato
apportare modifiche ad esso così come funziona
è che si interfaccia tra la tempesta e
mazze implementando varie Java
interfacce e ho ben capito
un po ‘su esattamente come il
interfaccia
lavoro, ma la cosa più importante da
capire davvero per aver pensato
tempesta contro mesos è che sono molto
diverso in termini che sono risorse
la tempesta di pianificazione non ha alcuna conoscenza
CPU e memoria e cose del genere
che Mesa AZ sa tutto perché come
mesas funziona è guarda un dato host
ed è come se avessimo 20 core
avere 20 gigabyte di RAM disponibili e
lo offre agli scheduler
dicendo hey voi ragazzi volete usare questo ma
tempesta non sa nulla
tutto ciò che conosce è questo concetto di slot
che spiegherò quindi immaginate questo top
box è un singolo host ha quattro slot
siamo davvero tutto ciò che sono è un posto
dove può memorizzare quel negozio ma eseguire a
processo di lavoro perché le tempeste Nimbus ha
questi lavori o processi che stanno andando
per fare tutto il processo di cui ha bisogno per sedersi
loro su due nodi in modo da ciò che fa è che
chiede il cluster hey quanti slot faccio
ho a disposizione ed è come va bene che ho
quattro da questo host ed è come va bene
Ci metterò solo alcune topologie
quindi è quello che rappresento qui sotto
la topologia rossa è in alto a sinistra e poi
la buccia si trova a destra con due
diversi processi di lavoro nel singolo
host e c’è una terza topologia nel
in basso a sinistra ma una delle cose brutte
su questo intero modello è molto
statico che hai quando hai impostato la tua tempesta
cluster devi decidere quanti
processi di lavoro che stai per creare
non puoi renderlo dinamico nel reale
le richieste delle varie topologie sono
sta per essere eseguito all’interno del tuo sistema
quindi è piuttosto inflessibile e se lo sei
allocare diversi tipi di macchine
devi pensare bene questo è un
molto essere la macchina gratis quante slot fa
questo rappresenta davvero così preferiremmo
avere un modello che invece prende in
conto delle reali risorse reali all’interno
i nodi slave e ci permette di
pianificare le esigenze delle topologie effettive
l’ altra cosa a cui tutto si riferisce è quella
quando stai correndo all’interno di uno standard
cluster di tempesta non hai alcun incentivo reale
pensare a quante CPU o quanto
memoria ho bisogno per processo di lavoro così
può portare ad alcune inefficienze in
termini su come stai sintonizzando la tua topologia
potresti semplicemente buttare un mucchio di duro
metallo e non pensarci davvero
come oh questo processo non ha davvero bisogno
a
tonnellate di memoria è tutto ciò che fa solo
La CPU funziona ma quando inseriamo questa roba
all’inizio di maggio ci cuce che ci costringe a iniziare
pensando a questo e guadagna di più
efficienze in termini di utilizzo del
hardware quindi sono già coperto
questo ma fondamentalmente mesas pensa alla CPU
e la tempesta della memoria non li rende
si occupa di allocare CPU e memoria
per compiti solo su Brindisi tempesta solo di nuovo
pensa alle slot quindi è questa la tempesta
questo è come un’altra immagine del
la precedente rappresentazione Brian si presentò
tempesta dove hai un lavoratore che ti ospita
avere un supervisore e tu hai diversi
topologie che funzionano sotto la supervisione di
quel singolo supervisore nella tempesta di
il modello di mesas è in realtà diverso così
assegniamo supervisori diversi per
ogni topologia che funziona su un particolare
ospitare il vantaggio di questo è che tu
può isolare le topologie da una
un altro puoi decidere che questo
la topologia ha bisogno di più ram su questa topologia
ha bisogno di più CPU ed è possibile allocare
appropriatamente e l’altra cosa è
davvero importante da notare sul
qualcosa che è un po ‘nascosto
lo schema è che anche queste scatole viola
rappresenti l’ esecutore di Mesa ‘he’s which
in realtà se stai usando gruppi c sono
contenitori in modo che abbiano dei limiti duri
la quantità di memoria o CPU o altro
roba come maggio cucia migliora un po ‘
gestione delle risorse in modo da poter evitare
diverse topologie che influiscono su ciascuna
altro mentre in questo modello precedente
la topologia potrebbe potenzialmente prendere il sopravvento
tutta la RAM sulla scatola e spremere
topologia a e B quindi questo è un vantaggio
quindi questo diagramma è un po ‘
presente occupato è che abbiamo bisogno in qualche modo
mappa le risorse che possono essere così innevate
a questo proposito nelle slot e nelle tempeste
modello dove sa in anticipo ho X
slot ma nel mondo labirinto non c’è
questa cosa non esiste preesistente
il numero di slot che dobbiamo prendere in qualche modo
la quantità esistente di risorse che
è stato offerto da May Cuce e Munge
Loro dentro
fare una serie di slot per il lavoratore
processi per essere programmati da voi
tempesta così questo rappresenta come il
due interfacce di sistemi che attraversano
Entrano interfacce e risorse Java
da asos viene calcolato in slot e
poi tempeste programmazioni dei processi di lavoro
su quegli slot che lo rimandano indietro
l’interfaccia di nuovo in Mesa giura
vengono creati supervisori che quindi iniziano
processi di lavoro quindi lasciatemi parlare un po ‘
un po ‘vado troppo veloce, immagino ma
fammi parlare di come Groupon tempesta come un
servizio in realtà sembra in cima a questo
tecnologia esistente che è là fuori in
il mondo reale, quindi abbiamo dedicato
grappolo di muratore dove investiamo la tempesta
creato un’applicazione di submitter dove noi
può aprire le topologie che stanno arrivando
nel nostro sistema in modo che possiamo controllare
e tipo di sapere chi sta correndo
le topologie alla fine potremmo usare questo
per bloccare le topologie anche dal lancio
se vanno oltre certi come
limiti di richieste di risorse che abbiamo superato
qualcosa che non ho ancora toccato
ma potresti aver notato in precedenza
fai scorrere qui che questo è un single spa
punto di fallimento il nimbus se va
giù poi la tempesta non è in grado di mantenere
lanciando nuovi lavoratori per accorgersene
i lavoratori sono giù e ha bisogno di creare nuovi
quelli per prendere nuove topologie e lanciare
loro quindi devi lavorare duro per ottenere il
numeri di backup il più presto possibile se
va giù tempesta come riferimento Brian
memorizza un gruppo di stati in zookeeper
ma ha uno stato che non è in
guardiano dello zoo come i barattoli di tempesta
loro stessi per la tua topologia, così è
perché è Singapore fallimento al momento e
non ha un che così ci porta a
stanno affondando, quindi siamo sincronizzati
dal nostro attuale maestro Nimbus a
backup uno in modo che possiamo far apparire
uno abbastanza rapidamente perché tutto lo stato
è su quella casa o in guardiano dello zoo
e abbiamo attraversato quell’esercizio a
un paio di volte e funziona bene che abbiamo
anche dovuto creare ha dovuto creare un
un paio di librerie da darci
coerente
visibilità nel sistema per consentire al nostro
gli utenti di essere in grado di utilizzare il sistema
per cui ti permettiamo di effettuare il log in
Kafka o splunk usando le nostre librerie noi
anche fornito un sistema metrico in modo che
le persone possono avere una visione di come loro
topologia sta eseguendo come il numero
stanno attraversando tuple al secondo
diversi bulloni quanti atti stanno arrivando
indietro puoi anche mettere il livello dell’applicazione
metriche nel sistema in modo che tu
potrebbe grafico vari livelli di applicazione
cose interessanti per il tuo
particolare topologia e abbiamo implementato
questo solo in cima a una tempesta incorporata
cosa che non è molto ben documentata
chiamato il consumatore di metriche sì sì
i professionisti per l’utilizzo di questo sistema invece
di usare la tempesta nativa sono ciò che fornisce
la vera tempesta di isolamento fornisce
qualcosa chiamato lo scheduler di isolamento
tuttavia partiziona staticamente il
cluster così il modo in cui funziona è che tu
Dedicherebbe particolari nodi operai
in una topologia, quindi questa topologia lo farebbe
solo mai eseguito in quei nodi come quelli
supererebbe solo quelle topologie
processi in modo non abbiamo davvero così
questo è un vantaggio dell’uso del Mason
il sistema spaziale ci fornisce flessibilità per
aumentando o diminuendo il numero e
la dimensione dei processi di lavoro che tu
avere per il tuo cluster di tempesta o topologia
piuttosto in gruppo evita di avere un
grappolo di grappoli separati sottoutilizzati
che tutti devono gestire
guardano al futuro e provano
per prevedere come stanno crescendo le cose e quali sono
richiedere dal nostro team operativo
ospita in più solo che si riduce molto
dell’onere ne dà anche un po ‘
visibilità costante nel
operazioni dei nostri storm stormi in modo tale
possiamo confrontare tra topologie e essere
come oh bene questa topologia si sta comportando
bene questo non è così è davvero
qualcosa sulla tua topologia e no
il sistema sottostante che abbiamo costruito
beh credo che cederò la parola a
aj in questo posto, tutto bene, girami
va tutto bene quindi questo è il gatto che ci piace
gatti un groupon ma questo è un gatto proiettile
e ho chiamato una tupla felina per la piastra
parte del discorso quindi la parte della piastra di
il discorso sarà focalizzato su no
solo velocità ma latenza, quindi tempesta
davvero concentrato per ottenere il massimo
numero di tuple che puoi scorrere
attraverso la topologia se torniamo a
quella foto della tempesta con tutti quelli
scatole sia Brian che Eric hanno parlato molto
su come una tupla lascerà la Macchina
e vai da qualche altra parte bene, allora che ne dici?
casi in cui la latenza conta e tu
non voglio sopportare il costo di
serializzazione della rete deserializzante I oh
okay, così si chiama la piastra per la piastra
fondamentalmente dà due squadre che vogliono
usa storm a DSL che esprime con a
DSP come flusso di lavoro cosa intendo con quello
solo P tradizionalmente piccolo
cose che vuoi combinare insieme
fare il tipo di comportamento della Gestalt
dovrebbero essere più facili dovrebbe essere facile
per combinare e abbinare la sintassi sul dsl
è come il grafo di adiacenza di Claire
il verdetto dice che dichiari che il tuo Jason vede
le topologie con cui lavoro
sono in particolare posto affari di dati
dati facciamo un sacco di normalizzazione così
siamo davvero concentrati su come otteniamo
tempesta per essere utile per i dati scienziati
o gente che apprende a macchina e anche noi
parliamo molto o di cui posso parlare
sulla simpatia meccanica che è come
sui casi in cui sai che vuoi
quelle cose nella cache della CPU che vuoi
per correre il più velocemente possibile maintence e
Va tutto bene ok, adesso parliamo
riguardo alcune foto e sono solo
saranno dei DAG e questo è molto
piccola parte della topologia dei dati del luogo
avere topologie molto complesse in negozio
la tempesta è un po ‘dura e difficile
dichiararli
quindi la nostra topologia del luogo è pensata venti
a trenta nodi che è molto per la tempesta
significa anche che hai 20 a 30
spunti va bene va bene così diciamo solo parlare
su questo quindi vogliamo normalizzare il
codice paese vogliamo fare alcune cose
con il codice postale del sito web questo si erge
per gli affari non fuori dalla banda e
abbiamo geocodificare così questo piccolo blu speciale
il bordo indica che questo è il
solo nota qui che deve fare qualsiasi io oh
ok, quindi va al nostro orologio felice
perché quel cloud sta ottenendo dati così
va tutto bene e poi vogliamo farlo
le cose con i numeri di telefono vanno bene così
questo è molto astratto, in realtà non lo è
catturare alcuni affari davvero importanti
utilizzare i casi che sono descritti qui whoa
va bene così riconosco che questa immagine è
brutto è intenzionalmente brutto perché
sta cercando di esprimere ciò nel reale
le cose del mondo si complicano e allora
questa scatola qui significa che abbiamo un
intero sotto-grafico che fino a quando non avremo qaid
l’effetto di questi vertici su a
dati del paese che in realtà non
voglio gestirli vorremmo andarcene
i dati così com’è perché non siamo così
come diciamo che abbiamo una monaca annoiata a
particolare paese ancora così posto dati noi
ottenere da tutto il mondo e abbiamo
ottimizzato l’architettura in modo che noi
può aggiungere paese per Paese per Paese
okay, diciamo che vogliamo aggiungere un nuovo
paese diciamo che stiamo facendo Spagna per
esempio e diciamo che questi non sono QA
bene ok ma non vogliamo ritardare il
affari da essere in grado di fare per chiamare
aziende in Spagna, quindi stiamo andando
per fare questa parte va bene o potrebbe essere il
caso che stiamo iniziando ad accettare
Paesi che non abbiamo nemmeno iniziato
l’allenamento va bene così va bene così
anche loro passeranno di qui
torna a sentire questo è davvero semplice
grafico ogni vertice ha un indegree di
uno ogni lato sta per farsi strada
va bene così, all’improvviso, siamo qui noi
ora hanno i nostri testi che hanno in grado
di due e non tutti i vertici stanno andando a
essere camminato
infatti diciamo che vogliamo elaborare
il nostro paese bene allora andremo
qui o vai vai qui la condizione post esiste
solo per essere come abbiamo fatto o no
questo va bene se non vogliamo elaborare
questo perché non apprezziamo come
la qualità di queste normalizzazioni bene
allora noi verremo qui così che è
interessante nel senso che quei due
i set di spigoli non sono disgiunti, okay, va bene
quindi andiamo avanti e forse possiamo ovviare
queste cose per far vedere questo grafico
almeno un po ‘più gestibile prima
cosa stiamo per fare è che stiamo andando
per dire che abbiamo questa cosa chiamata a
selettore di bordo attivo anche noi vogliamo
affermare che ciò significa che questo paese
normalizzatore del codice non ha idea di cosa
i vertici in realtà stanno andando in modo UD
accoppiare il comportamento che questo può cambiare
indipendentemente da questo, quindi è bello
sappiamo anche di avere una coppia diversa
tipi di vertici vanno bene così tutti e tre i
questi hanno un grado di due ok ma
questi due sono diversi perché fino a
ricevono dati su ciascuno dei loro bordi
hanno bisogno di bloccare e hanno bisogno di aspettare
così come ho detto è molto diverso
da questo non c’è bisogno di aspettare
qui non c’è adesione c’è c’è
niente di tutto questo va bene così
questo è anche questo tipo di articolazioni
molto difficile in una topologia di tempesta così
ora quello che mi piacerebbe fare è saltare a cosa
è come in una piastra
dichiarazione bene solo il tutto
brevemente e poi inizieremo
immergiti così questo è un dsl e c’è un
compilatore va bene così cerchiamo di iniziare
questo è un sottoinsieme dei vertici che noi
dichiaro ok, ci vedremo
start okay sintassi molto semplice quindi questo è
quello con cui stavo davvero cercando di andare
stai bene perché un dsl e B se lo sei
andando a fare un DSL assicurati di non farlo
costringere le persone a imparare un sacco di strani
roba casuale dovrebbe avere molto senso
questo vertice lo nominiamo e diciamo con
il tipo è ok
va bene così ora vogliamo parlare
Adiacenze okay, quindi stiamo dicendo che noi
ometti di scrivere codice e sito web dall’inizio
dipendente dal paese, quindi se torniamo così
potresti considerare il condizionale per essere
il paese dipende dal codice postale di qui
sito web va bene così questi sono tutti
piuttosto semplice e basico ciò che intendo è
che omettiamo su tutti i fronti, ok e
ecco una piccola ala davvero semplice tutto
bene andiamo a uno complicato
va bene quindi ecco il nostro vantaggio attivo
selettore quindi questo è fondamentalmente quello di dirti
omettere qualsiasi sottoinsieme di questa adiacenza
lista dall’inizio e tu usi il selettore
di questo tipo va bene e da qualsiasi detto io
significa letteralmente qualsiasi insieme può essere vuoto
e che potrebbe alternarsi così è
solo facendo in modo che questo sia ovvio
torniamo alla foto di nuovo
va bene quindi stiamo dicendo che omettiamo
condizionale post condizionale o fuori
affari dal codice paese okay ma cosa
stiamo facendo è scegliere questo bordo attivo
il tuo naso okay abbiamo normalizzato il
codice del paese qual è il paese oh noi
sostenere che uno così ho intenzione di andare a
questi due ok o no non lo dividiamo
uno così vado a questi due ok
codice del paese non ha idea di quel bordo
scelta va bene 02 ecco una foto
Potrei mostrare di nuovo il gatto anche così bene
come ogni volta che c’è un DSL che conosci
le persone dicono molto ragionevolmente come perché
lo fai quello che fa così lo darò
perché è meglio darti qualcosa
okay, quindi c’è un compilatore e basta
crea un grafico binario okay e quello
il grafico binario viene quindi elaborato da a
il quadro di runtime della piastra va bene e il
il framework di runtime è semplicemente un framework
non è un processo, quindi puoi metterlo
in qualsiasi tipo di server che si desidera e
quel processo fornisce ottimale
concorrenza per il grafico che hai
espresso okay quindi in pratica quello che abbiamo
ora in un groupon è quello per i nostri grandi
posto scuse dove abbiamo aree di
bulloni che in realtà non necessitano di alcun I / O se
c’erano sulla stessa CPU che avremmo ottenuto
un enorme aumento di latenza che siamo stati
portandoli a ciò che chiamiamo la piastra
operatore o piastra che è un bullone
correre sopra un grafico di piastra compilato
e ottenere questa concomitanza veramente buona
e abbiamo avuto empiricamente che dovrei dire
ogni volta che tipo di tirare un bullone in a
grafico della piastra torniamo almeno a 10
millisecondi a causa della coda um così
non sto dicendo che sia un buono o
una cosa brutta è una brutta cosa per la latenza
è qualcosa che non ti interessa davvero
circa per il throughput giusto perché se
vuoi dire come possiamo fare 10.000 a
secondo, significa che ogni secondo tu
aver elaborato 10.000 ok
non dice nulla su quanto tempo ci
va tutto bene così ora vado a
incrociamo le dita tuffandoci nella parte più profonda
e ti mostreremo questa immagine
che parla un po ‘di
modello di threading se quello che dico è
confondendo mi interrompo solo perché io
voglio davvero motivare come perché
creeremmo un’altra DSL, quindi?
bene i colori si sono presentati bene
quindi questo è un grafico piuttosto semplice
ha sei vertici
quelli sono blu e hai tutto il tuo
bordi e base e poi questi piccoli
i cerchi rossi indicano fondamentalmente
che ciò che un grafico di piastra elabora è a
il valore del dominio va bene, fondamentalmente questi sono
funzioni unarie hanno dominio loro
avere range okay come il tuo valore di dominio è
muoversi attraverso il grafico fino a quando non si ottiene
sputare fuori, ovviamente, sta andando a cambiare
state bene così se pensiamo a quel posto
come il sito web sta per cambiare
la geocoding cambierà i codici postali
andando a ottenere cose normalizzate del genere
va bene così eccoci qui il giallo
Scatena la nostra etichetta di vertice e una discussione
indicatore per quale filo sarà
facendo funzionare quel nodo va bene una cosa
dovrebbe indicare qui è che non ho
anche io non mi tuffo nel condizionale
passare più voglio solo parlare del
la concorrenza va bene così il verde
rettangolo arrotondato sta dicendo che c’è
un thread di pianificazione e quindi cosa
significa che la pianificazione non entra
la via di ogni lavoro che è già in corso
fatto bene va bene così abbiamo d0 è a
piuttosto banale è solo cercando di
avvia questo grafico ok, quindi attiviamo
questi tre per iniziare bene
ovviamente questo è gestito da non ma
ora abbiamo G nullo 2 1 T 2 che abbiamo
tre thread ok questi questi emettono a
valori di intervallo e siamo in grado di trasformare
d nulla in D 1 ok questo è uno di
questi vertici congiunti ok in effetti non l’ho fatto
non lo ha esplicitato ma all’interno del
sintassi abbiamo questa idea di aggregati
input ok che significa che devi aspettare
per tutti i tuoi input qualsiasi vertice
non ha quell’input che si innescherà
per continuare e questo diventa
interessante con questo per esempio
noterai dal momento che non ha un
scatola di ferro se entra qui
lì se arriva qui va a
va tutto bene così ora stiamo usando
Non è così ora torniamo indietro solo
avendo due fili e poi veniamo a
qui e abbiamo solo un thread finale
Brian e io stavamo parlando stamattina
e basato sulla reale implementazione
potrebbe recentemente criticato questo il
fatto che il T nulla sta funzionando
probabilmente attraverso questo percorso
non dovrebbe aver fatto bene perché lo siamo
non pianificare i percorsi che stiamo pianificando
i vertici pronti per il lavoro vanno bene così
Potrei aver appena detto T nulla
nulla 2 1 T 2 ok e questo è molto
importante perché quello che significa è quello
come un vertice è pronto quindi cerchiamo di prendere questo
esempio, diciamo che r1 richiede a
millisecondo ma i nostri due ne prendono 10
millisecondi non so davvero io
aiuto non perché non suona
molto buona latenza, non appena questo è
quindi pronto verrà su e sarà
programmato perché dice che sono pronto a
fare un po ‘di lavoro in modo tale che la capacità di essere
pronto non è legato al particolare
percorso che è correlato allo stato del
vertice tutte le domande giuste
McAllister dell’ospite speciale e
oggi vogliamo parlare dell’elaborazione
Lo streaming di eventi molto grandi a groupon lo è
il microfono passa chiaramente se tengo
si tratta di questa distanza buona così non c’è
me stesso ai colleghi AJ ed Eric
i tempi che in realtà hanno tutto il
parti carnose divertenti della presentazione I
arrivare a fare il setup e un po ‘di parlare
riguardo il problema perché sto andando a
iniziare a tossire in circa dieci minuti così
a groupon abbiamo un sacco di eventi
che elaboriamo i loro registri web mobili
registra gli eventi a livello di applicazione di tipo
eventi metrici di tipo operativo che conosci
e se parli solo di quelli che si nutrono
nella maggior parte delle nostre topologie di tempesta
che sta andando intorno a molto
sai che è nell’ordine in cui lo sai
100 a 200 mila eventi al secondo
una sorta di nominalmente in tutto il
parte interessante del giorno che non lo è
pantagruelico ma è abbastanza grande che tu
devo iniziare a fare qualcosa di interessante
le cose in particolare quando lo accoppi
con dozzine di modi diversi di
elaborando ciò che vuoi fare in
a volte creando nuovi flussi fuori
quei flussi per alimentare di nuovo e così
questo discorso si concentrerà su ciò che noi
ho imparato a fare questo e ciò che noi
ho fatto per farlo funzionare bene
evolutivamente e operativamente e così via
il punto di partenza per quasi tutti i nostri
l’elaborazione del flusso è la tempesta che è arrivata
dal tipo back e Twitter pochi anni
fa non voglio andare troppo in profondità
tempesta di grandine lavoro così ho intenzione di fare a
rapido sondaggio che qui è comodo con
le astrazioni di base della tempesta che è
Non è una buona causa okay, quindi ho intenzione di farlo
andare in loro un po ‘di più così tempesta
funziona su quella che chiama una topologia e
le sue scuse sono costituite da beccucci che
invia eventi nel sistema che conosci
nel nostro caso la fonte di partenza di
è quasi sempre Kafka quindi c’è
qualcosa chiamato becco di Kafka quello
legge fuori effettivamente tenere premuto show veloce
delle mani che non conosce Kafka
non so kafka kafka è un
high-throughput un sub-sistema di pubblicazione
funziona abbastanza bene e puoi solo pensare
in questo modo è un throughput elevato
pub / sub che funziona piuttosto bene come
rispetto a te pub / sub high-throughput
che non funziona bene, che è il grosso
di loro compresi quelli che ho scritto
così i beccucci alimentano le cose in tempesta
quindi disporre di processori alimentati da un evento
in quanto ciò che la tempesta chiama una tupla questo è
probabilmente perché ha iniziato la sua vita
tipi di chiusura e di odio così
tutto è una tupla anche se diventa
complicato ora che molte persone scrivono
le loro cose in Java o addirittura in Ruby um
entro la tempesta e concettualmente un fulmine
fa un po ‘di elaborazione e
poi emette più tuple che vanno a
un’altra ciotola che emette più tuple
vai a un altro bullone in modo da poter iniziare
incollare insieme come si desidera elaborare
i dati somigliano molto alle cose da piping
insieme nella shell si conosce un modo di
pensando di gestire flussi di
dati che la maggior parte degli sviluppatori sono carini
familiarità con e tu puoi omettere più
quelli una specie di piccola topologia
ho qui non lo fa davvero ma
vedremo molto più complicato
topologie più tardi nel discorso e così il
la cosa che fa la tempesta è che fornisce a
modello di programmazione per fare questo
piacevole da lavorare come sviluppatore e
molto importante assume anche quello
non puoi fare tutto questo in casa
macchina perché hai solo troppo
dati o troppa elaborazione e
fornisce un errore di recupero degli errori molto buono
meccanismi di gestione per riprodurre flussi di
tuple da punti nel tempo da gestire
fallimenti che è davvero il principale vantaggio
quella tempesta porta qualcosa
arrotolato a mano è che ha un po ‘intelligente
cose per la gestione degli errori nel recupero in
un sistema distribuito che non siamo
andando in realtà andare in quello tranne a
Dì che li spegniamo quando tu
desidera un throughput elevato quindi da uno sviluppatore
prospettiva, cosa stai scrivendo un bullone
è davvero che sai che arriva una tupla
fai delle cose come quelle che conosci noi
ottenere una spanna questo è in realtà
un sottoinsieme di una topologia per l’elaborazione
Zipkin Street Zipkin si estende da noi
roba con esso fai qualcosa con esso
e poi emetti in una tupla diversa
e incollerai solo un mucchio di
queste cose in genere e tu lo sai
sai di entrare così quando reciti a
molti colori davvero non si presentano
sul proiettore questo è tutto colorato
questo non ti aiuterà molto
discreto, mi scuso così perché non lo facciamo
voglio andare in come la tempesta funziona a
grande grado da un programmatore
prospettiva vogliamo parlare di come
fallo quando ne hai tantissime
le squadre che lo utilizzano un sacco e molti eventi
e come lo fai ragionevolmente
in modo efficiente è importante capire
le astrazioni principali che la tempesta usa
perché stiamo andando a parlare di loro
e poi li torcheremo
intorno a lato e metterli attraverso a
strizzacervelli e fai bene Eric sta per fare
cose orribili per loro così quando guardi
alla tempesta ci sono alcune altre cose del genere
un cluster di guardiani dello zoo perché non è possibile
avere un sistema distribuito senza
guardiano dello zoo nel 2015 con Nimbus the Nimbus
concettualmente è il controller per il
tutto è come se ti assegnasse
invia la tua topologia che è il tuo grafico
di elaborazione sai al Nimbus e
lo distribuisce a un gruppo di lavoratori
nodi sai che questo è come tre
server diversi ora i nodi worker
sai che un supervisore è in esecuzione e
questo è simile a un o mentire
supervisore ma appena sufficiente diverso
essere confusi dove un supervisore esegue un
lavoratore un lavoratore contiene dirigenti e
i lavoratori sono processi separati loro
processi del bambino del supervisore
è iniziato ma è il suo JVM
executor non è un esecutore Java nonostante
essere in Java è una singola esecuzione
thread in un thread di programmazione e tu
di solito se si mettono compiti per una topologia
in un esecutore puoi tecnicamente
mettere più di un compito su un esecutore
correndo in un lavoratore ma non lo fai mai
vogliono farlo perché non c’è
è brutto e se qualcuno lo sa davvero
perché hai mai messo più di un compito
in un esecutore mi trovi dopo e
spiegalo perché non capisco
è possibile quindi è scusa allora
abbiamo visto è diviso in un intero gruppo di
piccoli compiti che funzionano così se pensi
riguardo al beccuccio l’ erogatore è impostato su di te
eseguire tre istanze dello spout qui
sai dire che questo è Kafka, ne abbiamo tre
partizioni che puoi effettivamente ottenere
tre lettori simultanei che vomitano
le cose in poi hai un flusso di
cose che vanno dal beccuccio che spingono dentro
boltay in bolt X e sai che puoi
fai varie cose per dire, prova e mettila
sulla stessa macchina ma se non riesci a metterlo
da qualche altra parte ed è sempre uno a
uno così emetterà una tupla qui
questo ammetterà in alto qui o in
qui dentro e la tempesta si prende cura di
tubare le tuple fino in fondo
il sistema che il lavoratore che conosci prende
cura di eseguire tutti i compiti per a
topologia e qui abbiamo la tempesta
sembra quasi fuori dalla scatola
cercando di eseguire solo quella topologia ora
abbiamo dozzine di topologie così diventa
ancora più complicato che è ciò che il
il resto del discorso riguarda circa la metà di
il resto del discorso riguarda um I do
voglio fermarmi qui però perché sono andato
attraverso la spiegazione rapidamente e io
voglio dire se non capisci il
diversi componenti qui un fisico
server o macchina virtuale esegue a
supervisore un supervisore gestisce i lavoratori
forse più di un lavoratore corre
dirigenti che eseguono attività associate
con una topologia ci sono molti livelli
di sorta di nidificazione di controllo qui e
diventerà torbido quindi questo è il tuo
possibilità di porre le domande prima
diventa torbida Sono molto meglio
spiegando che pensavo di essere se
non ci sono domande che vanno una volta in corso
due volte va bene quindi ecco le basi di
tempesta fuori dalla scatola ora per parlare
come effettivamente facciamo questo lavoro per a
gran numero di squadre un gran numero di
topologie su un set leggermente più piccolo di
hardware
abbiamo Eric Weathers che guida il genere
di tempesta su mezzos lavorano a Groupon così
semplicemente lavorando si, va bene così come Brian
abbiamo detto che abbiamo un sacco di cose diverse
topologie in esecuzione all’interno di
Groupon e lo era sempre
le singole squadre dovrebbero gestire
i loro stessi storm stormi ottengono tutto il
competenze in esecuzione tempesta conoscere
tutti i diversi aspetti operativi
e poi abbiamo anche inefficienze
dove abbiamo gruppi sottoutilizzati
a causa di problemi generali con necessità
acquistare hardware in anticipo per
Fornisci le tue macchine per i cluster e
anche quella tempesta in sé non si presta
stesso a un utilizzo efficiente di
hardware sottostante a causa del
modello di pianificazione delle risorse di tempesta che
Entrerò qui tra un secondo così prima
Voglio introdurre il concetto di maggio
saponi e come funziona in generale e
quindi lo applicherò specificamente al nostro
usa il caso di tempesta, quindi se nessuno ha sentito parlare
di maggio cuce o farò la cosa del sondaggio
come chiunque è quante persone sono
ho familiarità con Mesas così che è in realtà
piuttosto fresco quindi non devo andare in
super dettaglio ma in fondo potrebbe cucire fa
pianificazione delle risorse sui nodi dei lavoratori così
dato un quadro applicativo come
Hadoop o tempesta o MPI o qualsiasi altra cosa
puoi immaginare che potrebbe voler correre
molti ospiti diversi si diffondono in un
cluster e può cucire ti permette di
pianifica i tuoi compiti su questi diversi
i nodi worker ha i suoi meccanismi
per mantenere lo stato per il maestro così
che può essere un che e due del
concetti fondamentali di maggio così che devono essere
capito per te davvero afferrare il
resto del discorso la mia sezione almeno lo sono
lo schedulatore e l’esecutore quindi ciascuno
tempesta quadro Hadoop qualunque cosa ha a
programmatore che è una cosa che fa
quelli parlano e dice come fanno
vuoi correre qualsiasi cosa su Mesa Sand
gli orari come si per favore corri
questi compiti allora possono essere realizzati da cucire
tali compiti al lavoratore effettivo
note slave e ci sono diversi modi
di farlo, ma il modo standard in cui noi
anche usando in tempesta è quello di eseguire un altro
esecutore ed è qui che entriamo in a
un po ‘di confusione terminologica
perché ho parlato di compiti e
i dirigenti qui e Brian ha anche parlato
su compiti ed esecutori e questi sono
cose diverse quindi tornando di nuovo
il modello di tempesta che hai dirigenti e
compiti questi sono i più bassi livelli
le cose in questo intero sistema operano
sulle singole tuple che sono
che fluiscono attraverso il sistema che potrebbero fare
cose come aggregarsi insieme due
diverse linee di registro, qualunque cosa tu possa
immagina e loro corrono in questo
modello threaded dell’esecutore le attività
ora formate una salsa risalendo il
l’esecutore era il vero controllore di
tutto ciò che è in esecuzione su a
slave particolare per il tuo framework e
sta per eseguire singoli processi
per il tuo framework come rende tali compiti
quindi questa è una specie di bambola matrioska I
Ho dimenticato come lo hai detto ma babushka
bambole non lo so del diverso
strati in modo che all’esterno hai un lavoratore
ospita dentro di te una tempesta
supervisore che è in realtà la mazza
esecutore all’interno di questo abbiamo la tempesta
lavoratore che è in realtà il compito di mezzos
processo quindi hai l’esecutore tempesta
e poi il compito della tempesta così ogni volta
stai parlando di compiti e
dirigenti per quanto riguarda questi due
diversi sistemi devi essere molto
chiaro su quale livello stai parlando
quindi per collegare insieme questo due diversi
sistemi abbiamo sfruttato un esterno o
progetto open source piuttosto esistente per
creando una struttura in cima a mesos per
la tempesta è in realtà scritta dal
autore originale di storm nathan martes
e quindi l’abbiamo appena eseguito per un po ‘
non adulterato e abbiamo recentemente iniziato
apportare modifiche ad esso così come funziona
è che si interfaccia tra la tempesta e
mazze implementando varie Java
interfacce e ho ben capito
un po ‘su esattamente come il
interfaccia
lavoro, ma la cosa più importante da
capire davvero per aver pensato
tempesta contro mesos è che sono molto
diverso in termini che sono risorse
la tempesta di pianificazione non ha alcuna conoscenza
CPU e memoria e cose del genere
che Mesa AZ sa tutto perché come
mesas funziona è guarda un dato host
ed è come se avessimo 20 core
avere 20 gigabyte di RAM disponibili e
lo offre agli scheduler
dicendo hey voi ragazzi volete usare questo ma
tempesta non sa nulla
tutto ciò che conosce è questo concetto di slot
che spiegherò quindi immaginate questo top
box è un singolo host ha quattro slot
siamo davvero tutto ciò che sono è un posto
dove può memorizzare quel negozio ma eseguire a
processo di lavoro perché le tempeste Nimbus ha
questi lavori o processi che stanno andando
per fare tutto il processo di cui ha bisogno per sedersi
loro su due nodi in modo da ciò che fa è che
chiede il cluster hey quanti slot faccio
ho a disposizione ed è come va bene che ho
quattro da questo host ed è come va bene
Ci metterò solo alcune topologie
quindi è quello che rappresento qui sotto
la topologia rossa è in alto a sinistra e poi
la buccia si trova a destra con due
diversi processi di lavoro nel singolo
host e c’è una terza topologia nel
in basso a sinistra ma una delle cose brutte
su questo intero modello è molto
statico che hai quando hai impostato la tua tempesta
cluster devi decidere quanti
processi di lavoro che stai per creare
non puoi renderlo dinamico nel reale
le richieste delle varie topologie sono
sta per essere eseguito all’interno del tuo sistema
quindi è piuttosto inflessibile e se lo sei
allocare diversi tipi di macchine
devi pensare bene questo è un
molto essere la macchina gratis quante slot fa
questo rappresenta davvero così preferiremmo
avere un modello che invece prende in
conto delle reali risorse reali all’interno
i nodi slave e ci permette di
pianificare le esigenze delle topologie effettive
l’ altra cosa a cui tutto si riferisce è quella
quando stai correndo all’interno di uno standard
cluster di tempesta non hai alcun incentivo reale
pensare a quante CPU o quanto
memoria ho bisogno per processo di lavoro così
può portare ad alcune inefficienze in
termini su come stai sintonizzando la tua topologia
potresti semplicemente buttare un mucchio di duro
metallo e non pensarci davvero
come oh questo processo non ha davvero bisogno
a
tonnellate di memoria è tutto ciò che fa solo
La CPU funziona ma quando inseriamo questa roba
all’inizio di maggio ci cuce che ci costringe a iniziare
pensando a questo e guadagna di più
efficienze in termini di utilizzo del
hardware quindi sono già coperto
questo ma fondamentalmente mesas pensa alla CPU
e la tempesta della memoria non li rende
si occupa di allocare CPU e memoria
per compiti solo su Brindisi tempesta solo di nuovo
pensa alle slot quindi è questa la tempesta
questo è come un’altra immagine del
la precedente rappresentazione Brian si presentò
tempesta dove hai un lavoratore che ti ospita
avere un supervisore e tu hai diversi
topologie che funzionano sotto la supervisione di
quel singolo supervisore nella tempesta di
il modello di mesas è in realtà diverso così
assegniamo supervisori diversi per
ogni topologia che funziona su un particolare
ospitare il vantaggio di questo è che tu
può isolare le topologie da una
un altro puoi decidere che questo
la topologia ha bisogno di più ram su questa topologia
ha bisogno di più CPU ed è possibile allocare
appropriatamente e l’altra cosa è
davvero importante da notare sul
qualcosa che è un po ‘nascosto
lo schema è che anche queste scatole viola
rappresenti l’ esecutore di Mesa ‘he’s which
in realtà se stai usando gruppi c sono
contenitori in modo che abbiano dei limiti duri
la quantità di memoria o CPU o altro
roba come maggio cucia migliora un po ‘
gestione delle risorse in modo da poter evitare
diverse topologie che influiscono su ciascuna
altro mentre in questo modello precedente
la topologia potrebbe potenzialmente prendere il sopravvento
tutta la RAM sulla scatola e spremere
topologia a e B quindi questo è un vantaggio
quindi questo diagramma è un po ‘
presente occupato è che abbiamo bisogno in qualche modo
mappa le risorse che possono essere così innevate
a questo proposito nelle slot e nelle tempeste
modello dove sa in anticipo ho X
slot ma nel mondo labirinto non c’è
questa cosa non esiste preesistente
il numero di slot che dobbiamo prendere in qualche modo
la quantità esistente di risorse che
è stato offerto da May Cuce e Munge
Loro dentro
fare una serie di slot per il lavoratore
processi per essere programmati da voi
tempesta così questo rappresenta come il
due interfacce di sistemi che attraversano
Entrano interfacce e risorse Java
da asos viene calcolato in slot e
poi tempeste programmazioni dei processi di lavoro
su quegli slot che lo rimandano indietro
l’interfaccia di nuovo in Mesa giura
vengono creati supervisori che quindi iniziano
processi di lavoro quindi lasciatemi parlare un po ‘
un po ‘vado troppo veloce, immagino ma
fammi parlare di come Groupon tempesta come un
servizio in realtà sembra in cima a questo
tecnologia esistente che è là fuori in
il mondo reale, quindi abbiamo dedicato
grappolo di muratore dove investiamo la tempesta
creato un’applicazione di submitter dove noi
può aprire le topologie che stanno arrivando
nel nostro sistema in modo che possiamo controllare
e tipo di sapere chi sta correndo
le topologie alla fine potremmo usare questo
per bloccare le topologie anche dal lancio
se vanno oltre certi come
limiti di richieste di risorse che abbiamo superato
qualcosa che non ho ancora toccato
ma potresti aver notato in precedenza
fai scorrere qui che questo è un single spa
punto di fallimento il nimbus se va
giù poi la tempesta non è in grado di mantenere
lanciando nuovi lavoratori per accorgersene
i lavoratori sono giù e ha bisogno di creare nuovi
quelli per prendere nuove topologie e lanciare
loro quindi devi lavorare duro per ottenere il
numeri di backup il più presto possibile se
va giù tempesta come riferimento Brian
memorizza un gruppo di stati in zookeeper
ma ha uno stato che non è in
guardiano dello zoo come i barattoli di tempesta
loro stessi per la tua topologia, così è
perché è Singapore fallimento al momento e
non ha un che così ci porta a
stanno affondando, quindi siamo sincronizzati
dal nostro attuale maestro Nimbus a
backup uno in modo che possiamo far apparire
uno abbastanza rapidamente perché tutto lo stato
è su quella casa o in guardiano dello zoo
e abbiamo attraversato quell’esercizio a
un paio di volte e funziona bene che abbiamo
anche dovuto creare ha dovuto creare un
un paio di librerie da darci
coerente
visibilità nel sistema per consentire al nostro
gli utenti di essere in grado di utilizzare il sistema
per cui ti permettiamo di effettuare il log in
Kafka o splunk usando le nostre librerie noi
anche fornito un sistema metrico in modo che
le persone possono avere una visione di come loro
topologia sta eseguendo come il numero
stanno attraversando tuple al secondo
diversi bulloni quanti atti stanno arrivando
indietro puoi anche mettere il livello dell’applicazione
metriche nel sistema in modo che tu
potrebbe grafico vari livelli di applicazione
cose interessanti per il tuo
particolare topologia e abbiamo implementato
questo solo in cima a una tempesta incorporata
cosa che non è molto ben documentata
chiamato il consumatore di metriche sì sì
i professionisti per l’utilizzo di questo sistema invece
di usare la tempesta nativa sono ciò che fornisce
la vera tempesta di isolamento fornisce
qualcosa chiamato lo scheduler di isolamento
tuttavia partiziona staticamente il
cluster così il modo in cui funziona è che tu
Dedicherebbe particolari nodi operai
in una topologia, quindi questa topologia lo farebbe
solo mai eseguito in quei nodi come quelli
supererebbe solo quelle topologie
processi in modo non abbiamo davvero così
questo è un vantaggio dell’uso del Mason
il sistema spaziale ci fornisce flessibilità per
aumentando o diminuendo il numero e
la dimensione dei processi di lavoro che tu
avere per il tuo cluster di tempesta o topologia
piuttosto in gruppo evita di avere un
grappolo di grappoli separati sottoutilizzati
che tutti devono gestire
guardano al futuro e provano
per prevedere come stanno crescendo le cose e quali sono
richiedere dal nostro team operativo
ospita in più solo che si riduce molto
dell’onere ne dà anche un po ‘
visibilità costante nel
operazioni dei nostri storm stormi in modo tale
possiamo confrontare tra topologie e essere
come oh bene questa topologia si sta comportando
bene questo non è così è davvero
qualcosa sulla tua topologia e no
il sistema sottostante che abbiamo costruito
beh credo che cederò la parola a
aj in questo posto, tutto bene, girami
va tutto bene quindi questo è il gatto che ci piace
gatti un groupon ma questo è un gatto proiettile
e ho chiamato una tupla felina per la piastra
parte del discorso quindi la parte della piastra di
il discorso sarà focalizzato su no
solo velocità ma latenza, quindi tempesta
davvero concentrato per ottenere il massimo
numero di tuple che puoi scorrere
attraverso la topologia se torniamo a
quella foto della tempesta con tutti quelli
scatole sia Brian che Eric hanno parlato molto
su come una tupla lascerà la Macchina
e vai da qualche altra parte bene, allora che ne dici?
casi in cui la latenza conta e tu
non voglio sopportare il costo di
serializzazione della rete deserializzante I oh
okay, così si chiama la piastra per la piastra
fondamentalmente dà due squadre che vogliono
usa storm a DSL che esprime con a
DSP come flusso di lavoro cosa intendo con quello
solo P tradizionalmente piccolo
cose che vuoi combinare insieme
fare il tipo di comportamento della Gestalt
dovrebbero essere più facili dovrebbe essere facile
per combinare e abbinare la sintassi sul dsl
è come il grafo di adiacenza di Claire
il verdetto dice che dichiari che il tuo Jason vede
le topologie con cui lavoro
sono in particolare posto affari di dati
dati facciamo un sacco di normalizzazione così
siamo davvero concentrati su come otteniamo
tempesta per essere utile per i dati scienziati
o gente che apprende a macchina e anche noi
parliamo molto o di cui posso parlare
sulla simpatia meccanica che è come
sui casi in cui sai che vuoi
quelle cose nella cache della CPU che vuoi
per correre il più velocemente possibile maintence e
Va tutto bene ok, adesso parliamo
riguardo alcune foto e sono solo
saranno dei DAG e questo è molto
piccola parte della topologia dei dati del luogo
avere topologie molto complesse in negozio
la tempesta è un po ‘dura e difficile
dichiararli
quindi la nostra topologia del luogo è pensata venti
a trenta nodi che è molto per la tempesta
significa anche che hai 20 a 30
spunti va bene va bene così diciamo solo parlare
su questo quindi vogliamo normalizzare il
codice paese vogliamo fare alcune cose
con il codice postale del sito web questo si erge
per gli affari non fuori dalla banda e
abbiamo geocodificare così questo piccolo blu speciale
il bordo indica che questo è il
solo nota qui che deve fare qualsiasi io oh
ok, quindi va al nostro orologio felice
perché quel cloud sta ottenendo dati così
va tutto bene e poi vogliamo farlo
le cose con i numeri di telefono vanno bene così
questo è molto astratto, in realtà non lo è
catturare alcuni affari davvero importanti
utilizzare i casi che sono descritti qui whoa
va bene così riconosco che questa immagine è
brutto è intenzionalmente brutto perché
sta cercando di esprimere ciò nel reale
le cose del mondo si complicano e allora
questa scatola qui significa che abbiamo un
intero sotto-grafico che fino a quando non avremo qaid
l’effetto di questi vertici su a
dati del paese che in realtà non
voglio gestirli vorremmo andarcene
i dati così com’è perché non siamo così
come diciamo che abbiamo una monaca annoiata a
particolare paese ancora così posto dati noi
ottenere da tutto il mondo e abbiamo
ottimizzato l’architettura in modo che noi
può aggiungere paese per Paese per Paese
okay, diciamo che vogliamo aggiungere un nuovo
paese diciamo che stiamo facendo Spagna per
esempio e diciamo che questi non sono QA
bene ok ma non vogliamo ritardare il
affari da essere in grado di fare per chiamare
aziende in Spagna, quindi stiamo andando
per fare questa parte va bene o potrebbe essere il
caso che stiamo iniziando ad accettare
Paesi che non abbiamo nemmeno iniziato
l’allenamento va bene così va bene così
anche loro passeranno di qui
torna a sentire questo è davvero semplice
grafico ogni vertice ha un indegree di
uno ogni lato sta per farsi strada
va bene così, all’improvviso, siamo qui noi
ora hanno i nostri testi che hanno in grado
di due e non tutti i vertici stanno andando a
essere camminato
infatti diciamo che vogliamo elaborare
il nostro paese bene allora andremo
qui o vai vai qui la condizione post esiste
solo per essere come abbiamo fatto o no
questo va bene se non vogliamo elaborare
questo perché non apprezziamo come
la qualità di queste normalizzazioni bene
allora noi verremo qui così che è
interessante nel senso che quei due
i set di spigoli non sono disgiunti, okay, va bene
quindi andiamo avanti e forse possiamo ovviare
queste cose per far vedere questo grafico
almeno un po ‘più gestibile prima
cosa stiamo per fare è che stiamo andando
per dire che abbiamo questa cosa chiamata a
selettore di bordo attivo anche noi vogliamo
affermare che ciò significa che questo paese
normalizzatore del codice non ha idea di cosa
i vertici in realtà stanno andando in modo UD
accoppiare il comportamento che questo può cambiare
indipendentemente da questo, quindi è bello
sappiamo anche di avere una coppia diversa
tipi di vertici vanno bene così tutti e tre i
questi hanno un grado di due ok ma
questi due sono diversi perché fino a
ricevono dati su ciascuno dei loro bordi
hanno bisogno di bloccare e hanno bisogno di aspettare
così come ho detto è molto diverso
da questo non c’è bisogno di aspettare
qui non c’è adesione c’è c’è
niente di tutto questo va bene così
questo è anche questo tipo di articolazioni
molto difficile in una topologia di tempesta così
ora quello che mi piacerebbe fare è saltare a cosa
è come in una piastra
dichiarazione bene solo il tutto
brevemente e poi inizieremo
immergiti così questo è un dsl e c’è un
compilatore va bene così cerchiamo di iniziare
questo è un sottoinsieme dei vertici che noi
dichiaro ok, ci vedremo
start okay sintassi molto semplice quindi questo è
quello con cui stavo davvero cercando di andare
stai bene perché un dsl e B se lo sei
andando a fare un DSL assicurati di non farlo
costringere le persone a imparare un sacco di strani
roba casuale dovrebbe avere molto senso
questo vertice lo nominiamo e diciamo con
il tipo è ok
va bene così ora vogliamo parlare
Adiacenze okay, quindi stiamo dicendo che noi
ometti di scrivere codice e sito web dall’inizio
dipendente dal paese, quindi se torniamo così
potresti considerare il condizionale per essere
il paese dipende dal codice postale di qui
sito web va bene così questi sono tutti
piuttosto semplice e basico ciò che intendo è
che omettiamo su tutti i fronti, ok e
ecco una piccola ala davvero semplice tutto
bene andiamo a uno complicato
va bene quindi ecco il nostro vantaggio attivo
selettore quindi questo è fondamentalmente quello di dirti
omettere qualsiasi sottoinsieme di questa adiacenza
lista dall’inizio e tu usi il selettore
di questo tipo va bene e da qualsiasi detto io
significa letteralmente qualsiasi insieme può essere vuoto
e che potrebbe alternarsi così è
solo facendo in modo che questo sia ovvio
torniamo alla foto di nuovo
va bene quindi stiamo dicendo che omettiamo
condizionale post condizionale o fuori
affari dal codice paese okay ma cosa
stiamo facendo è scegliere questo bordo attivo
il tuo naso okay abbiamo normalizzato il
codice del paese qual è il paese oh noi
sostenere che uno così ho intenzione di andare a
questi due ok o no non lo dividiamo
uno così vado a questi due ok
codice del paese non ha idea di quel bordo
scelta va bene 02 ecco una foto
Potrei mostrare di nuovo il gatto anche così bene
come ogni volta che c’è un DSL che conosci
le persone dicono molto ragionevolmente come perché
lo fai quello che fa così lo darò
perché è meglio darti qualcosa
okay, quindi c’è un compilatore e basta
crea un grafico binario okay e quello
il grafico binario viene quindi elaborato da a
il quadro di runtime della piastra va bene e il
il framework di runtime è semplicemente un framework
non è un processo, quindi puoi metterlo
in qualsiasi tipo di server che si desidera e
quel processo fornisce ottimale
concorrenza per il grafico che hai
espresso okay quindi in pratica quello che abbiamo
ora in un groupon è quello per i nostri grandi
posto scuse dove abbiamo aree di
bulloni che in realtà non necessitano di alcun I / O se
c’erano sulla stessa CPU che avremmo ottenuto
un enorme aumento di latenza che siamo stati
portandoli a ciò che chiamiamo la piastra
operatore o piastra che è un bullone
correre sopra un grafico di piastra compilato
e ottenere questa concomitanza veramente buona
e abbiamo avuto empiricamente che dovrei dire
ogni volta che tipo di tirare un bullone in a
grafico della piastra torniamo almeno a 10
millisecondi a causa della coda um così
non sto dicendo che sia un buono o
una cosa brutta è una brutta cosa per la latenza
è qualcosa che non ti interessa davvero
circa per il throughput giusto perché se
vuoi dire come possiamo fare 10.000 a
secondo, significa che ogni secondo tu
aver elaborato 10.000 ok
non dice nulla su quanto tempo ci
va tutto bene così ora vado a
incrociamo le dita tuffandoci nella parte più profonda
e ti mostreremo questa immagine
che parla un po ‘di
modello di threading se quello che dico è
confondendo mi interrompo solo perché io
voglio davvero motivare come perché
creeremmo un’altra DSL, quindi?
bene i colori si sono presentati bene
quindi questo è un grafico piuttosto semplice
ha sei vertici
quelli sono blu e hai tutto il tuo
bordi e base e poi questi piccoli
i cerchi rossi indicano fondamentalmente
che ciò che un grafico di piastra elabora è a
il valore del dominio va bene, fondamentalmente questi sono
funzioni unarie hanno dominio loro
avere range okay come il tuo valore di dominio è
muoversi attraverso il grafico fino a quando non si ottiene
sputare fuori, ovviamente, sta andando a cambiare
state bene così se pensiamo a quel posto
come il sito web sta per cambiare
la geocoding cambierà i codici postali
andando a ottenere cose normalizzate del genere
va bene così eccoci qui il giallo
Scatena la nostra etichetta di vertice e una discussione
indicatore per quale filo sarà
facendo funzionare quel nodo va bene una cosa
dovrebbe indicare qui è che non ho
anche io non mi tuffo nel condizionale
passare più voglio solo parlare del
la concorrenza va bene così il verde
rettangolo arrotondato sta dicendo che c’è
un thread di pianificazione e quindi cosa
significa che la pianificazione non entra
la via di ogni lavoro che è già in corso
fatto bene va bene così abbiamo d0 è a
piuttosto banale è solo cercando di
avvia questo grafico ok, quindi attiviamo
questi tre per iniziare bene
ovviamente questo è gestito da non ma
ora abbiamo G nullo 2 1 T 2 che abbiamo
tre thread ok questi questi emettono a
valori di intervallo e siamo in grado di trasformare
d nulla in D 1 ok questo è uno di
questi vertici congiunti ok in effetti non l’ho fatto
non lo ha esplicitato ma all’interno del
sintassi abbiamo questa idea di aggregati
input ok che significa che devi aspettare
per tutti i tuoi input qualsiasi vertice
non ha quell’input che si innescherà
per continuare e questo diventa
interessante con questo per esempio
noterai dal momento che non ha un
scatola di ferro se entra qui
lì se arriva qui va a
va tutto bene così ora stiamo usando
Non è così ora torniamo indietro solo
avendo due fili e poi veniamo a
qui e abbiamo solo un thread finale
Brian e io stavamo parlando stamattina
e basato sulla reale implementazione
potrebbe recentemente criticato questo il
fatto che il T nulla sta funzionando
probabilmente attraverso questo percorso
non dovrebbe aver fatto bene perché lo siamo
non pianificare i percorsi che stiamo pianificando
i vertici pronti per il lavoro vanno bene così
Potrei aver appena detto T nulla
nulla 2 1 T 2 ok e questo è molto
importante perché quello che significa è quello
come un vertice è pronto quindi cerchiamo di prendere questo
esempio, diciamo che r1 richiede a
millisecondo ma i nostri due ne prendono 10
millisecondi non so davvero io
aiuto non perché non suona
molto buona latenza, non appena questo è
quindi pronto verrà su e sarà
programmato perché dice che sono pronto a
fare un po ‘di lavoro in modo tale che la capacità di essere
pronto non è legato al particolare
percorso che è correlato allo stato del
vertice tutte le domande giuste
Please follow and like us: