Press "Enter" to skip to content

GOTO 2016 • Scheduling & Securing Microservices with Nomad • Armon Dadgar


breve contesto il mio nome è Armand, lo farai
trovare me in tutto l’Internet è anche
solo ARMA
così relativamente facile da trovare e come Nikki
ho detto che sono uno dei co-fondatori e CTO
di Hacha Corp.
probabilmente siamo meglio conosciuti per i nostri
strumenti che per il nome della società molti di
probabilmente sei familiare o hai usato
vagabondo uno dei nostri strumenti più popolari noi
anche fare terraforme e packer e volta
tra gli altri quello che Nikki
menzionato per gente come HMRC ma oggi
Voglio passare un po ‘di tempo a parlare
nomad che è il nostro gestore di cluster e
scheduler questi sono entrambi una sorta di
relativamente nuovi domini in modo che mi piacerebbe
sorta di spiegare che cosa è uno scheduler come me
penso che questo lo renda molto di più
utile quando abbiamo parlato di nomade
e il suo design che cosa sta cercando di fare
questo è il livello più alto di ciò che è
lo scopo di qualsiasi schedulatore è un programmatore
alla fine è lì per mappare una serie di lavori
su un diverso insieme di risorse giuste
e quindi un esempio concreto qualcosa che
siamo tutti abbastanza familiari o se
non abbiamo familiarità con ancora lo usiamo
senza rendersi conto tutto il tempo è una CPU
scheduler quindi se ne pensi
macchina ha un numero limitato di
nuclei fisici proprio lì c’è un fisico
realtà che abbiamo solo tu sai a
core per forse può hyper thread e
sono una sorta di thread virtuali in esecuzione
ma effettivamente c’è un limite fisico
alle nostre risorse ma c’è una sorta di
un numero illimitato di carichi di lavoro che noi
potrebbe essere in grado di mettere in questo diritto
non è inconcepibile avere migliaia
di thread come programmato su un operativo
sistema e quindi questa responsabilità di
mappare questo carico di lavoro, indipendentemente dal fatto che sia tu
conoscere i thread del kernel dei thread del server Web
più applicazioni sul fisico
le risorse sono il lavoro della nostra CPU
scheduler e così nel tempo lo scheduler
sta cercando di ottimizzare per diverso
cose giuste per la maggior parte dei tipi di CPU
schedulatori che stanno ottimizzando per alcuni
quantità di fair use della CPU se è a
programmatore desktop per lo sai che sai
OS X si ottimizzerà per un certo livello
di reattività quindi lo farà
cose come mescolare ciò che è
effettivamente correndo su questi fisici
risorse per garantire un accesso equo o
ottimizzare per la reattività
questo è solo un esempio di come sai a
programmatore che usiamo e interagiamo con
tutto il tempo
la realtà è che gli scheduler sono assolutamente
ovunque ma la loro funzione è
fondamentalmente lo stesso è solo il loro
mappare diversi gruppi di lavoro su due
diversi set di risorse quindi la nostra CPU
gli scheduler stanno mappando i thread virtuali
su nuclei fisici puoi davvero pensare
su nuvole come ec2 o OpenStack Nova
altrettanto efficacemente essere scheduler
mappando le VM su hypervisor hai IO
scheduler che lo stanno mappando sul disco
mandrini e il tipo degli esempi vanno
avanti e avanti quando parliamo di cluster
scheduler sono un tipo di dominio come
mappare le applicazioni su un insieme di
server e quindi in generale, perché farlo
usiamo utilità di pianificazione a tutti quali sono le
vantaggi di usarli in una sorta di qualsiasi
impostarlo si riduce davvero a tre
diversi vantaggi primari uno di loro
è maggiore utilizzo del sottostante
risorse se si tratta di un hypervisor
che si tratti di un core fisico della CPU
un disaccoppiamento del lavoro dalle risorse e
è la migliore qualità del servizio che siamo
meglio dipende dal tuo
applicazione e le tecniche che usiamo
arrivare lì come una sorta di condiviso su tutti
tipo di scheduler per ottenere livelli più alti
di utilizzo delle nostre risorse che facciamo
cose come bin che imballano così se pensi
su un hypervisor hai il tuo
macchina fisica con 64 core che giri
su molte VM su di esso stai facendo i bagagli
più macchine sullo stesso carico di lavoro
lo stiamo facendo in modo efficace
cose come iscriversi troppo così potrebbe
sii che tu ne stanzi di più
memoria per quelle VM rispetto al fisico
la macchina ha RAM perché sei un po ‘
sei relativamente sicuro che il tuo
VM non stanno andando a consumare tutto il
memoria in modo che possiamo in qualche modo iscriversi
il sistema e siamo ottimisti sul fatto che siamo
in realtà non sarà esattamente scarico
risorsa possiamo fare cose come lavoro
fare la fila così se abbiamo più lavoro di noi
avere risorse fisiche possiamo metterle
in una coda tale che nel momento in cui liberiamo
alcune risorse disponibili possiamo iniziare
gestendo la cosa nuova subito così noi
ridurre al minimo le risorse inattive, quindi possiamo parlare
su una sorta di benefici di disaccoppiamento
questo è fatto attraverso alcuni diversi
piega uno di questi è che ci permette di
dettagli astratti del fisico
risorsa lontano dal lavoro logico in a
Questo tipo di libertà ci libera dal doverlo fare
preoccuparsi di alcuni dei sottostanti
dettagli così per esempio quando siamo
scrivendo un’applicazione non lo facciamo davvero
cura che tu sappia
qual è l’allineamento di cassa della mia CPU e
Ho una sorta di condivisione di una linea di cache e sono io
attraversando un limite di memoria questi sono
sorta di dettagli che vengono sottratti
da noi per lo schedulatore della CPU è una specie di
ci permette di lavorare ad un livello più alto
senza dover essere infastidito da
astrazioni di basso livello e così il modo in cui noi
in definitiva ottenere questo è avendo un’API
contratto che il nostro programmatore ci dà e
standardizzare intorno a questo e l’ultimo
uno è migliore qualità del servizio e
questo dipende davvero da una sorta di ciò che il
gli obiettivi della tua domanda sono se il mio
l’applicazione è qualcosa come Hadoop e
Ti sto solo facendo conoscere migliaia o
centinaia di migliaia di frammenti di lavoro
sai che la mia qualità del servizio è
qualcosa intorno a te sa che tempo fa
ci vuole per completare tutto il mio carico di lavoro
giusto e quindi la migliore programmazione
le decisioni sono probabilmente qualcosa in giro
fair use se sono un programmatore desktop e
Sto programmando di conoscere Safari e un
Interfaccia interattiva Mi interessa di più
reattività quindi mi interessa il
latenza di interazione dell’utente
gestito a destra e se io sono un lander luna io
posso volere che mi interessi davvero come il mio
spara fuoco in momenti in cui non mi scontro
nella terra e in contrapposizione a te
so che ho pianificato abbastanza il
sfondo sai il processo di caricamento dei dati
quindi la nozione di qualità del servizio
dipende davvero da cosa è il tuo dominio
potrebbe essere molto diverso da quello che ti interessa
ma alla fine arriva davvero
fino a tre diversi meccanismi che
ottenere applicato uno è la priorità in modo da sapere
è il sai che è il razzo che conosci
programma di fuoco una priorità più alta di
il programma di caricamento della telemetria quindi gradisce
assicurati che abbia accesso prioritario a
risorsa la sua risorsa isolamento in modo uniforme
se hai più risorse multiple
risorse fisiche hai basso
lavoro prioritario che sta accadendo per rubare
risorse lontano dal lavoro ad alta priorità
quindi vogliamo essere in grado di isolarlo
e la sua prelazione quindi se tutto ad un tratto
il lavoro ad alta priorità si presenta ma lo siamo
occupato a fare un sacco di cose a bassa priorità
possiamo sbarazzarci delle cose a bassa priorità
e passare a fare priorità alta
lavora così il concetto di usare qualcosa
come un programmatore di cluster per raggiungere
questi gli obiettivi non sono nuovi ed è stato
fatto per decenni che Google, ad esempio, ha
tavole famose da sempre
2000 se pensiamo davvero a AWS come
è solo essere un programmatore gigante
circa un decennio ci Netflix e Twitter
più di recente entrambi hanno la loro
programmatori che usano così questo
una specie di approccio comune che vediamo fatto a
su larga scala per raggiungere questo tipo di
economie di scala efficienti così con
quello sfondo che contatta quel genere
di ci porta ora a Nomad che è il nostro
programmatore di cluster così quando stiamo parlando
su un programmatore di cluster da cui proviene
importante ricordare quello che stiamo facendo
sta mappando le applicazioni su un insieme di
server giusto e così facendo questo noi
avere un numero di obiettivi nella progettazione e
costruire nomade una di queste cose
è facile distribuire le applicazioni
essendo sorta la funzione primaria di
lo schedulatore a quello è operativo
semplice per eseguire questa cosa proprio come te
potrebbe immaginare programmatori molto simili a te
conosci lo schedulatore della CPU del tuo cluster
scheduler finisce per essere una sorta di
centro dell’universo per i tuoi dati
centro e che vuoi questa cosa
essere costruito per la scala ma non vuoi
i nomadi diventeranno sempre la scalabilità
limite della tua più ampia applicazione così
dove questo inizia per noi è con il lavoro
specifica è come possiamo prevedere che
carico di lavoro come specifichiamo cosa
applicazioni a cui vogliamo davvero che arrivino i nomadi
distribuire e dove questo inizia con nomade
è un file di lavoro a cui è destinato il file di lavoro
essere umano modificabile semplice leggibile
scrivere e capire e questo è
un esempio totalmente valido di un file di lavoro
quello schiererebbe Redis così eccoci qui
definendo un lavoro nominandolo Redis fondamentalmente
specificando un’immagine di finestra mobile da eseguire e
fornendo una serie di risorse che vogliamo
Nomad da dedicare al nostro lavoro prima di noi
tipo di entrare nei dettagli di esso
ciò che è veramente importante con il lavoro di posti di lavoro
il file è che dichiara ciò che vogliamo
corri a destra e cosa importante
non lo fa è dire dove farlo o
come eseguirlo questi sono dettagli che sono
lasciato a destra Nomad e così questo tipo di
va a quel secondo obiettivo di un programmatore
che è come disaccoppiamo il lavoro
dalle macchine sottostanti giusto e
quindi se i nostri sviluppatori ci dicessero
specificamente macchine per metterlo su o
come dovrebbe essere eseguito non c’è davvero
disaccoppiare lo sviluppatore in quanto non c’è
astrazione fondamentalmente quindi la chiave qui è
da non permettere alle persone di fornire
questo è ciò che permette a Nomad
astratto il lavoro dal sottostante
risorse così ora può fare Nomad
decisioni su dove dovrebbe essere il lavoro
eseguire come dovrebbe essere eseguito
dovrebbe essere preventivato dovrebbe essere
spostato da qualche altra parte e così è
super chiave per avere questo disaccoppiamento
astrazione in modo che possiamo avere un’API
contratto in termini di tipo di
carichi di lavoro che potresti eseguire in cima a Nomad
esso
sai che l’esempio è successo a
contenitore docker ma può essere in qualche modo
qualcosa di giusto dalla prospettiva dei nomadi
stiamo mappando una serie di applicazioni
se sono containerizzati o
virtualizzato o standalone su un insieme di
server non importa particolarmente
qual è il tipo di applicazione
sotto di esso sta andando usare una certa quantità di
storage computing e networking e
questo è davvero ciò che stiamo tenendo in considerazione
qui così se stiamo correndo in container
carichi di lavoro come docker e marciume mi dispiace
docker e razzo quelli sono supportati
carichi di lavoro nativamente virtuali tramite Q EMU
cose indipendenti come jar Java o
i binari collegati staticamente sono tutti
supportato oggi il sistema è progettato
avere un innesto flessibile
architettura quindi lo sapresti
relativamente semplice per estenderlo
per supportare i contenitori di Windows Server
quindi Hyper-V l’elenco sorta di va avanti come
potresti immaginare così dove questo veramente
inizia per i nostri sviluppatori è con questo
file di lavoro dichiarativo che consente loro di farlo
esprimere il loro carico di lavoro in un
infrastruttura come il peso del codice di questi lavori
i file sono pensati per essere il controllo della versione
ma sono pensati per essere sottoposti a peer review
puoi fare richieste di pull e parlare
conosci e usa il tuo codice normale
processo per evolvere il modo in cui definisci e
esegui la tua applicazione e, cosa importante,
ci permette di rimuovere la logica imperativa così come noi
fare cose come passare dal cloud AWS a
Google Cloud o spostare il traffico da
queste cose possono essere on-premise al cloud
quindi essere sottratto ai nomadi
perché non abbiamo una lis imperativa
dichiarato dipendenze da loro ma cosa
sulle nostre dipendenze esterne che cosa
su tutte le altre cose un’app
deve fare altro che iniziare subito a destra
quindi domande in giro ok come connettersi
al nostro registro di individuazione dei servizi come fare
noi monitoriamo queste applicazioni come salute
riceviamo segreti applicativi per loro
come affrontiamo il nostro stato?
applicazioni che non sono particolarmente
come essere spostati e così c’è
una sorta di risposte attraverso ognuna di queste
ma la risposta sarà sorta di essere
ripetitivo nel senso che lo metti
nel lavoro che il file che si dichiarativo
definisci cosa vuoi fare e lo sarà
lavoro nomade per assicurarsi che ciò avvenga
Così, per esempio, come possiamo dichiariamo
voglio essere parte di una scoperta di servizio
indice bene dichiariamo che con quello il
cosa che stiamo facendo funzionare la nostra applicazione
è un servizio in sé, quindi potremmo dire noi
abbiamo un servizio che vorremmo esporre al nostro
Porta HTTP al resto del cluster e
dal modo in cui abbiamo un controllo sanitario come
bene quindi per favore colpisci l’ endpoint salute
ogni cinque secondi e che sta per
dicci se questa app è o meno un inferno
quindi cosa farà quando forniremo
quella specifica ai nomadi è tutto a
improvvisa nel formato che oh dal modo in cui
necessità di interfacciare con console e
avvisalo che la cosa che stiamo correndo
è un servizio e perché non lo facciamo?
questo automaticamente bene potrebbe essere il
caso che quello che stiamo facendo è un lotto
carico di lavoro quindi per esempio se stiamo correndo
un lavoro Hadoop massiccia o SPARC compito
potrebbe averti conosciuto decine di migliaia di
frammenti che non sono servizi vorremmo
mai voglia di scoprire giusto così sarebbe
solo un po ‘sarebbe solo inquinare
lo spazio dei nomi della nostra scoperta di servizi
se stessimo registrando una sorta di anonimo
lavori in batch, quindi vogliamo essere espliciti
registrazione dei servizi quando ha senso
quindi qui cosa accadrà come nomade
molto disaccoppiati dalla console sono
basta interfacciarsi tra loro su un
API così Nomad è costretto a solo
preoccuparsi dei problemi di pianificazione quindi no
la questione sta andando a pianificare il
applicazione potenzialmente collocandola su a
cliente accanto a qualsiasi numero di altri
app che è stata imballata e quindi
perché lo abbiamo dichiarato come servizio
Nomad informerà la console locale
agente che, a proposito di app 1 è un servizio
ed ecco le informazioni sul controllo sanitario
e poi la console si prenderà cura di
la registrazione del servizio di monitoraggio della sua
salute e assicurandosi che questo sia disponibile
al resto del cluster uno dei
vantaggi del disaccoppiamento di queste preoccupazioni
è che possiamo avere applicazioni che
vivere all’interno di Nomad e sono in programma
e sono come vivere il sogno
insieme a domande che conosci
monoliti basati su VM legacy che sono
interfacciamento su console per cui console può
tipo di agire come un servizio condiviso
bus di scoperta per applicazioni all’interno
e al di fuori di Nomad, che ci porta
la distribuzione segreta sorta di a
alto livello quando dico segreto
distribuzione sta rispondendo davvero al
domanda su come fanno le nostre applicazioni finali
ottenere le credenziali API ad esempio
parla con un database s3 conosciuto
credenziali SSL e certificati TLS
questi sono molto sensibili
pezzi di informazione che il nostro
esigenze di applicazione e una sorta di peggiore
caso, ma sai che è molto
comune molto facile da fare, lo sai bene
sai solo passarlo al
applicazione come variabile di ambiente
la sfida è giusta se ci stiamo muovendo
verso cose come l’infrastruttura come
codice questo file vive in github destra o
questo file sia Sai templato da
qualcos’altro che poi tira da
gap e quindi alla fine questa cosa è
vivere in testo semplice in sistemi che
avere un controllo di accesso molto limitato
giusto così quanti sviluppatori nella tua organizzazione
avere accesso a GitHub e puoi andare a vedere
quale nome utente e password per
il database diventa così molto difficile
motivo per chi ha accesso a questi
cose come la limitiamo se lo è
compromesso chi avrebbe potuto fare uso di
questa informazione è molto difficile
motivo per questo e quindi per questo motivo
abbiamo creato un caveau quindi è diverso
il prodotto che facciamo il suo obiettivo è davvero
affrontare lo spazio di gestione segreta e
fallo in un modo che ti dia controllo
abilità ti dà accesso a grana fine
il controllo garantisce che i segreti siano crittografati
transito e riposo quindi non abbiamo un
molto tempo per entrare nei dettagli di
tutti, ma a un livello elevato si conosce il suo
obiettivo è davvero facendo stoccaggio segreto è
sai come affrontare la staticità
segreti che può generare dinamicamente
credenziali per cose come i database
e cloud provider e lo fa in a
modo che ti dà un controllo di accesso ricco
auditing e autenticazione client
meccanismi così al più alto livello
anche se molto simile a qualsiasi tipo di database
c’è una sorta di flusso di login per te
sapere prima di poter richiedere i dati dal mio
sequel per prima cosa stabilire una connessione
e fare una sorta di accesso al vault della stretta di mano
è molto simile al riguardo così
ogni volta che iniziamo a parlare con volt
c’è un flusso di accesso iniziale dove
stiamo fornendo alcune credenziali
ad esso se va bene vault
restituire un gettone volta di nuovo a noi molto
simile a come sai un server web
esempio restituirebbe un cookie di sessione
fa bene hai effettuato l’accesso e tutti
il tempo che eseguiamo un’operazione siamo
fondamentalmente threading quel cookie che
reinserire nel caveau e se lo sai
siamo ancora loggati pensavamo di farlo
preoccuparsi di rispondere effettivamente al nostro
operazione quindi la domanda diventa allora
grandioso come ci stiamo muovendo in qualcosa
come nomade come facciamo a ottenere questi token
la nostra applicazione giusta e una specie di cattiva
la risposta sarebbe ben fornita solo come
a conosci la variabile di ambiente e
incollare il motivo nel file Java
questa diventa una cattiva risposta è è
efficacemente solo un grado di
separazione dal vero solo
inserendo la password del database lì
giusto quindi è come il database
password potrebbe essere vivere in volt, ma la
credenziali necessarie per accedere al
la password del database sta vivendo nel gap così
siamo ancora solo di un passo indietro
così come possiamo aspettarci che la risposta sia
bene c’è un blocco dichiarativo che
facci fare e allontanati da questo
problema quindi l’ultima versione di nomade
ci consente invece di specificare solo cosa
insieme di tutte le politiche della nostra applicazione
esigenze
così noi
in realtà bisogno di fornire ora il caveau
token stesso diciamo semplicemente che abbiamo bisogno di un token
questo ha almeno questo livello di
privilegio e possiamo inserire un elenco di
tutte le politiche di cui abbiamo bisogno se
sappiamo che la mia app ha bisogno di accedere a s3
e tu conosci il database che possiamo definire
una politica per questo e basta dire la mia app
ha bisogno di quella politica prima che sia
in esecuzione
quindi che cosa farà il caveau è fare attenzione
di fare il flusso intorno a quello per noi a
runtime in modo tale da non dover essere difficili
codifica questi segreti più così quando il nostro
gli utenti presentano ora un lavoro ai nomadi
può fornire il proprio deposito di token del vault
allora sarò dispiaciuto, non importa
verificare effettivamente Armand
privilegio sufficiente come se fossi
consentito solo per eseguire 10 operazioni
che ho appena presentato una domanda
deve essere eseguito con il privilegio di livello root
nel sistema e poi all’improvviso
possiamo rifiutarlo e dire di no
cercando di aumentare il tuo livello
privilegio nel sistema quindi non importa
cosa assicurarci che non stiamo intensificando il nostro
privilegio se stiamo ancora rilanciando un
app con te sa uguale o inferiore a
privilegio di noi stessi allora nomadi
andrà avanti e pianificherà il
applicazione da qualche parte così grande che pone
Apple 1 insieme ad altre app e
allora ci sarà una specie di trasparente
flusso alla nostra applicazione dove non importa
si occuperà di generare un token
con sufficiente privilegio e rinnovamento
dietro le quinte e sarà giusto
appare magicamente come un ambiente
variabile per la nostra app, quindi la nostra app è ancora disponibile
ottiene il token del vault come un
variabile ambientale ma non ce l’abbiamo
a codice duro che ovunque e questo è
tipo di memoria ovunque e mai
tipo di nessun rischio reale con esso
quindi la chiave per l’integrazione nativa è
possiamo rimuovere questi segreti dai nostri
file di lavoro e basta parlare di politiche
che sono sicuri da conservare all’interno di a
sistema di controllo della versione i nostri segreti mai
nascosto i dischi di conformità in modo che Nomad si spenga
del suo modo di ordinare dell’uso temperatura FS
sistemi e mantenere le cose in memoria e
anche quando si scrive su disco è reale
ancora scrivendo su RAM e possiamo minimizzare
la fiducia in tutto il nostro sistema
I server Nomad non devono essere mantenuti
i token client stanno mantenendo le cose dentro
le cose di memoria non devono vivere
github cool, quindi riguardo il nostro stato
applicazioni quelle che non possiamo facilmente
appena saputo può soffiare via come piace a me
per descrivere lo stato non è davvero
come un binario non è completamente apolidi
o totalmente stateful è solo il
spettro giusto e diverse app lo faranno
vivere in posti diversi su questo così per
esempio sai a sinistra
tendono ad avere applicazioni come API
cache dei server Web dei server a cui tendono
essere un po ‘più apolidi che non con
alcune cose come denaro potresti effettivamente
immagina avvicinandoli verso di loro
il lato stato dello spettro
non sono totalmente apolidi nel
senso che stanno accumulando alcuni
affermare è solo quello per la maggior parte degli scopi
non ci interessa davvero se li perdiamo
sono una specie di effimero dal design e
poi più verso il centro del
spettro hai sistemi come HDFS
Cassandra Mongo questi sai cosa
potresti chiamare database nativi del cloud
si aspettano di essere in esecuzione in a
configurazione distribuita che si aspettano di avere
i loro dati replicati si conoscono n volte
attraverso i dati nel cluster e loro
aspettatevi un guasto della macchina e questo è un po ‘
della differenza fondamentale è la loro
le macchine in attesa di progettazione falliscono in
molto fine del tuo spettro hai il tuo
tradizionale sequel system quindi il mio sequel
Postgres ms sequel sapete di andare giù il
elenco e questi sistemi sono altamente
stateful si aspettano fondamentalmente che se
chiamano giusto e F sincronizzano i dati
mai perso a destra e così di conseguenza il
modo in cui possiamo gestire ciascuno di questi questo
passa da facile a molto difficile
giusto e il motivo per cui va da facile
molto difficile è la fine molto difficile
dello spettro hai ipotesi
che sai che non combaciano
la realtà ha ragione, la realtà è se tu
chiama F sync e poi supponi che non lo farai mai
perdere di nuovo i dati bene hai fatto tipo
un presupposto che l’ hardware non fallisce mai
e si scopre che in realtà non è il
caso specialmente se stai correndo in a
ambiente cloud che hardware
sicuramente fallisce con un array elevato
e così la promessa che questi
le applicazioni si aspettano l’API
contratto se si è molto oneroso
è molto oneroso da mantenere
se stai facendo funzionare il metallo fisico
perché devi andare fuori di testa
con controller raid e dischi multipli
e tipo di fare ridondanza sotto
il database perché il database che io
chiamato F sincronizzare il tuo problema come il
operatore giusto, quindi questo è un po ‘ difficile
su un mondo non scheduler e di solito
richiede un sacco di hardware per ordinare
incidere questo ma poi come ti muovi
in un mondo schedulatore questo contratto
diventa particolarmente difficile proprio perché
ora non necessariamente abbiamo il lusso
di controller RAID e unità ridondanti
su ogni singola macchina o utilizzando lo spazio di archiviazione
reti collegate che stiamo eseguendo in a
cloud non c’è spazio di archiviazione collegato
Rete tutto è effimero e
le cose non riescono per tutto il tempo in modo tale
contratto diventa molto più difficile così dentro
pratica quello che devi fare è lavorare
intorno a questo dal mare usando distribuito
file system in modo da fornire
quello che sembra essere si conosce un locale
filesystem ma davvero al di sotto del
cappa che stai intrappolando due EBS EBS
scrivendo su più dischi che sta usando
codice di cancellazione che va sopra e
oltre a tipo di simulare il fatto che
l’hardware non fallisce quindi siamo nomadi
cerca davvero di concentrarsi è un po ‘ sul
facile e medio oggi e dice che lo sai
puntiamo questo a RDS e tu conosci il
meccanismi tradizionali che abbiamo ordinato
di battaglia indurita per questo e davvero
concentrati su di te conosci il non stateful to
il moderatamente affermativo di quelli così gentili
di lavorare con la realtà un po ‘meglio e
quindi se stiamo solo lavorando con quel tipo
di applicazioni cosa possiamo dare a Nomad
è un suggerimento che dice che sai qual è la mia app
non è completamente apolide, preferirei di no
perdere i miei dati è una specie di dati
appiccicoso accanto a me e che cosa succederà
Che Nomad faccia è dargli il diritto
suggerimento che dice che sai cosa fare se faccio un
aggiornamento dell’applicazione o qualcosa e io sono
cambiando sai la mia versione uno a
seconda versione preferirei non perdere la mia
dati, quindi non importa cosa proveremo e faremo
a questo punto è bello che sto aggiornando
dalla v1 alla v2 se possiamo posizionare l’app
la stessa macchina quindi ci sposteremo semplicemente
i dati tra le due attività quindi fermarsi
la vecchia versione di Cassandra sposta il
i dati iniziano la nuova versione di Cassandra
grande non abbiamo dovuto fare un pieno
ricostruisci quel nodo di Cassandra da te
sappiamo che stiamo tirando in dati dal
altre repliche se quella macchina è piena
o per qualche motivo abbiamo cambiato il
vincoli dei nostri lavori che non più
ci sta bene, per esempio, da cui siamo partiti
versione uno di Cassandra alla seconda versione
ma lo abbiamo cambiato e detto in realtà noi
davvero bisogno di correre su lo sai
la versione per il kernel Linux e
Cassandra era già in esecuzione
la versione 3 Nomad non può più indossarla
la stessa macchina perché siamo cambiati
qual è il posto in cui sono idonee le macchine?
quindi non importa che troveremo una nuova macchina
che ha spazio disponibile per eseguirlo e
copierà i dati dal vecchio
macchina alla nuova macchina prima
iniziare Cassandra così possiamo ancora ordinare
di consentire ai nostri dati di migrare a fianco
della nostra app ed evitare di fare un pieno
ricostruzione di Cassandra State
potenzialmente la chiave è questa è una
replica best-effort, quindi se noi
in realtà appena perso quella macchina il
macchina che gestiva Cassandra
in precedenza, appena morto, l’AWS ha deciso di uccidere
quindi non c’è nessuna macchina per copiarlo
da così Nomad troverà ancora un nuovo
macchina e avviare Cassandra da qualche parte
altrimenti non sarà in grado di migrare il
dati quindi la chiave è la migrazione appiccicosa
è davvero il miglior sforzo giusto e così se
stiamo facendo funzionare questi mezzi
app stateful che si connettono
spectin tollerare il fallimento dei dati allora loro
inizierà la loro costosa applicazione
livello ricostruire di stato così dal
prospettiva di cercare di fare
schieramenti facili questo inizia davvero
la parte superiore con il lavoro dichiarativo lo archivia
si assicura che sia flessibile
abbastanza per supportare diversi carichi di lavoro così
se si dispone di carichi di lavoro VM esistenti o
stai migrando verso i contenitori o lo sei
come ho appena ho un sacco di stand-alone andare
binari e io davvero non ne ho bisogno
portare in seguito strumenti più pesanti
puoi eseguire tutto ciò attraverso Nomad
una sorta di interfacce flessibili portando
in cose come il vault di integrazione della console
integrazione e volumi appiccicosi che possiamo
tipo di gestire un insieme molto più ampio di
l’applicazione ha bisogno e sfida così
ci porta al lato operativo di questo
cosa è grande dal lato di
sviluppatori che è facile da usare e
possono ottenere il potere di cui hanno bisogno, ma il nostro
gli operatori stanno ancora gestendo questa cosa
i nostri team di piattaforme sono responsabili
così come facciamo a rendere facile la loro vita
questo inizia facendo in modo che Nomad sia giusto
un singolo binario senza esterno
dipendenze quindi se lo stiamo eseguendo
in modalità client e ne abbiamo migliaia
istanze di esso dove stiamo pianificando
lavora – se lo stiamo eseguendo
modalità server che è in realtà il cervello
del cluster è un singolo binario
stiamo solo lanciando bandiere su di esso non c’è
nessuna memoria di stato esterna come su CD o
guardiano è autonomo come a
sistema in termini di cercare di conoscere
come costruiamo un sistema che è
operativamente affidabile dove siamo veramente
iniziato è stato costruendo sul
esperienza che abbiamo con surf e console
questi sono altri due strumenti che facciamo surf
è uno strumento di gestione dei cluster e basta
molto più basso è davvero un pettegolezzo
strumento peer-to-peer basato che ci dà
tre caratteristiche principali una è l’appartenenza
che è ciò che altre macchine sono nel
cluster questo è una sorta di un problema complicato
quando sei molto elastico
ambiente in cui i server stanno arrivando e
andando hai gruppi di autoscale cose
stanno fallendo, quindi il rilevamento dei guasti è
chiave in quanto ci fa sapere bene quale
le macchine sono nel cluster e
attualmente vivo e l’ultimo è un
sistema di eventi quindi come trasmettiamo a
messaggio all’intero cluster
in modo efficiente questo diventa più
problema difficile quando si dispone di
centinaia o migliaia di macchine e così via
il surf è stato dimostrato su larga scala
è un sottotitolo indurito dalla battaglia
sistema che possiamo usare e costruire
dal centro di supercalcolo di san diego
ha un cluster di surf di 10.000 nodi che ottiene
usato che usa
servire velocemente usa un per orchestrare il loro
CDN quindi ha un sacco di molto su larga scala
utilizzo della produzione e cosa possiamo usare
questo per sotto il cappuccio nei nomadi
è quello di darci un clustering molto semplice
Federazione quindi se hai mai usato un console
e sapevi che un console si unisce a te
come si, è stato facile non farlo
pensare a quali erano gli IPS di
tutte le migliaia di nodi nel nostro
cluster gestito da Cerf
sotto il cofano e così possiamo portare
quello ai nomadi e renderlo facile
gestisci questi cluster a grande scala
l’altra cosa che abbiamo iniziato è stata la console
qual è il nostro strumento di individuazione dei servizi e
davvero fornisce una manciata di
scoperta di servizi di funzioni che conosci
dove sono i server API?
salutare qual è la configurazione di
quei server API sono le future bandiere
sai abilitato o disabilitato siamo noi
facendo il traffico dell’ombra ci lascia fare
coordinamento ad alto livello, ad esempio
blocco distribuito e funziona molto
allo stesso modo nel server centralizzato
modello client distribuito, quindi cosa eravamo
tipo di in grado di imparare e portare come
gli apprendimenti dalla console è come facciamo noi
supporta le configurazioni multi data center come fare
abbiamo un’implementazione di zattera robusta così
che abbiamo questi server che sono
altamente disponibili hanno coerenti
dichiarare e assicurarsi che il sistema
funziona davvero con te lo sai in a
modello client distribuito su server centrale
su larga scala, quindi siamo in grado di farlo
prendi in prestito molti dei nostri insegnamenti
console quando si costruisce nomade e in modo che
una sorta di obiettivi operativi di alto livello
con esso stava facendo in modo che fosse un singolo
binario senza dipendenze esterne come
autonomo come possibile parte di questo
sai ridurre il modo in cui devi
ragione per un potenziale fallimento giusto
se è un sistema che dipende da molti
altri sistemi e hai un fallimento
è un po ‘ difficile da debugare e
capire dove si trova dove se noi
può rendere il sistema un po ‘come
autosufficiente possibile, essa può
minimizzare la superficie che dobbiamo
ragione circa ed è altamente disponibile
fuori dalla scatola quindi non c’è niente di speciale
configurazione hai appena eseguito più
server e si replicherà altrettanto
disponibile se i clienti sanno come
scoprire i nuovi server e affrontare
quello e così l’ultimo stava costruendo
per la scala e questo obiettivo è davvero
assicurati che stai mettendo qualcosa come
Nomade nel cuore del tuo datacenter
è giusto pianificare i tuoi servizi è
programmare i lavori batch che può diventare
il collo di bottiglia centrale con cui tutti o
la loro orchestrazione sta aspettando così come
ci assicuriamo che il sistema sia in qualche modo
mai il fattore limitante di ciò che sei
facendo e così abbiamo iniziato
costruendo con la console di navigazione ma il
problema con questo approccio non è né di
quelli ne hanno
logica di programmazione come forniscono
strumenti di basso livello per sapere cosa c’è dentro
il cluster e il sistema di alto livello
architettura e multi data center
routing ma in realtà non pianificano
lavori che risulta essere il
collo di bottiglia quindi il nostro ritorno alla ricerca
per capire tu sai qual è lo stato
dell’arte cosa è stato fatto
là fuori e chi possiamo imparare da e
i due gruppi che sono più
influente al nostro pensiero è il
laboratorio di formiche berkeley dove hanno fatto a
molto lavoro su cose come MapReduce e
filo e Mase e scintilla e
google che probabilmente conosci il
negozio di pianificazione preminente nell’industria
e quindi ci sono probabilmente quattro principali
documenti che hanno maggiormente influenzato il nostro
pensando a uno di loro e al più grande e
il più importante è davvero Borg
è il principale interno di Google di Google
scheduler fino ad oggi e quindi questo documento è stato
strumentale in una sorta di come Google
pensa ai loro carichi di lavoro su larga scala
vengono i loro ultimi miglioramenti a Borg
sotto forma di Omega che è un aggiornamento
architettura di sistema e poi da amp
laboratorio abbiamo imparato a conoscere sorta di come facciamo
fare una latenza molto grande di volume basso
programmazione di lavori batch da Sparrow as
bene come da ASOS come si fa flessibile
sai una programmazione flessibile quando tu
hai diversi tipi di carichi di lavoro così tu
sai che il tuo servizio è molto diverso
tipi di carichi di lavoro che poi le cose
come lavori batch e quindi cosa siamo finiti
con era una specie di architettura che
sembra molto simile alla console se lo sei
familiarità con esso hai un set di
i server centrali eleggono i leader
internamente in modo da sapere in questo caso
abbiamo i nostri leader nel mezzo è
essendo esso sta replicando i dati all’altro
server che gli altri server stanno inoltrando
una richiesta al leader che è una specie di
manutenzione della maggior parte delle operazioni e
allora abbiamo clienti che si estendono su molti
diversi data center così possiamo avere
conosci il datacenter uno due e tre
tutti schiavi in ​​un unico set di centrali
controllori se abbiamo bisogno di distribuire i nostri
controllori su più regioni per
esempio sai che forse abbiamo un americano
regione e una regione dell’UE e abbiamo
deciso che è così che decidiamo noi
vogliamo dividere i nostri carichi di lavoro che potremmo
dividilo e dì che abbiamo questi due
regioni separate e negli Stati Uniti
tre data center e nell’UE hanno
tre data center ma separati
controllano le pianure per loro ma nonostante noi
abbiamo ancora piani di controllo separati
vuole il nostro sviluppatore di essere in grado di appena
inviare un lavoro a uno qualsiasi dei propri dati
centra una qualsiasi delle loro regioni e così
il server è federato quindi lo sviluppatore
non c’è bisogno di pensarci
non devono preoccuparsi di quale è il
punto finale per i server UE rispetto al
I server degli Stati Uniti a cui lo hanno appena presentato
ovunque e inoltrerà la richiesta
come appropriato uno degli obiettivi di
avere il tipo di multi regione
l’architettura è che diventa anche un
dominio di isolamento per fallimento giusto così
puoi pensare a questo tipo di like
la paratia di una nave, se prendiamo
un’interruzione in una delle nostre regioni
altre regioni dovrebbero continuare a funzionare
e così questo ci dà una specie di
confine di isolamento che possiamo ragionare
circa okay dove vogliamo disegnare il nostro
linee di fallimento e così perché possiamo avere
qualsiasi numero di data center per regione
è come spettare a noi essere in grado di
modelliamo come vogliamo fare così forse noi
dì che sai cosa ne faremo uno
set di server e 12 data center
in tutto il mondo e il mondo intero è
il nostro limite di isolamento fondamentalmente se noi
perdere i nostri server centrali non saremo
in grado di pianificare ovunque o potremmo andare
all’estremo opposto e dire
ogni singolo data center dovrebbe essere completamente
indipendente dovrebbe essere la sua regione
e programmato separatamente e grande noi
può farlo se vogliamo avere un
rapporto uno a uno dei data center a
controller di regione va bene così
in ultima analisi, sebbene l’ obiettivo di design del
sistema doveva essere in grado di supportare
centinaia di regioni perché abbiamo te
conosci utenti e clienti che hanno te
conoscere diverse decine di data center e così via
cosa succede se vogliono modellare ciascuno di
quei data center come indipendenti
dominio di fallimento che dovrebbe essere all’interno
portata per nomadi ognuno di questi dati
i centri dovrebbero essere in grado di gestire decine di
migliaia di clienti e ogni regione
dovrebbe essere in grado di gestire migliaia di
lavori in esecuzione e così il massimo
l’architettura del sistema è la maggior parte
fortemente influenzato da Google Omega questo
significa che è ottimisticamente concorrente in
la sua programmazione significa che può farne molti
decisioni di programmazione parallela al
stesso tempo e utilizza diversi controlli
per assicurarsi che questo sia fatto in modo sicuro e
parte di questo cambia il modo in cui lo dichiariamo
coordinamento quindi questo significa il sistema
mantiene tutto il suo stato internamente
libera un tipo di esterno gratuito
dipendenze dal sistema ma consente
noi per supportare il servizio e il lotto
carichi di lavoro anche se separati
tipi di logiche diversi tipi separati
di problemi di qualità del servizio e così via
il livello più alto del tipo di
modello mentale l’architettura del
il sistema è fondamentalmente solo questi quattro
tipi di nomi ci sono due tipi di
input dal mondo esterno al nomade
uno è il carico di lavoro del lavoro in modo che gli sviluppatori
stavano sottoponendo lavoro al sistema cosa
sono le cose che abbiamo bisogno di eseguire questo è
una sorta di lavoro e poi c’è
operatori che stanno fornendo risorse così
quali sono le
nodi di carico sottostanti che possiamo
in realtà pianificare il lavoro sulla mappatura
la tabella di lavoro sulle risorse è attraverso
un’assegnazione a cui abbiamo assegnato lavoro
una macchina e il modo in cui Nomad decide
queste cose è facendo una valutazione
quindi valutiamo bene uno sviluppatore
ha presentato un lavoro qual è il
risorse disponibili quante risorse
hanno bisogno di creare un’allocazione
quella mappa è queste due cose l’una all’altra
e così approssimativamente possiamo pensare a un
valutazione come avviene in qualsiasi momento
c’è un cambiamento di stato quindi qualcosa ha
cambiato nel mondo reale e nota ha
avviato sai che è stato creato un lavoro
note cancellate aggiornate sono arrivate e
mancate assegnazioni fallite o
finito così qualcosa è cambiato nella
mondo esterno e ora abbiamo bisogno di
conciliare ciò che è necessario portare
il mondo torna nello stato desiderato
e così il modo in cui possiamo pensare al
funzione di una valutazione o mi dispiace
è la funzione di un programmatore
davvero una funzione che prende un
valutazione che dice hey qualcosa
per il mondo è cambiato per favore
generare una serie di aggiornamenti per il mondo
questo ci riporterà in linea
va bene così in una specie di astuccio per forme Tara
potrebbe essere che conosci il tipo di
equivalente è che hai chiesto una macchina virtuale
VM non esiste quindi è compito di Tara
creare i nomadi VM equivalenti sei tu
appena chiesto dieci server web non c’è
attualmente zero server web quindi il suo compito è
creare un nuovo server web da qualche parte così
questo è il modo in cui possiamo pensare a qualcosa di
il lavoro dello schedulatore ma la logica
all’interno dello scheduler di decidere dove
lo mettiamo tu conosci i vincoli che noi
voglio fare la qualità del servizio che noi
applicare questa funzione è una sorta di libero di
fare le cose come vuole il più a lungo
alla fine sta generando questi
contratti e quindi potresti immaginare
aventi differenti scheduler nel
sistema che dà la priorità a fare cose dentro
modi diversi così nel caso di annunci oggi noi
spedire con tre distinti tipi di
scheduler scheduler servizio
batch scheduler e lo scheduler di sistema
e così si aspetta un pianificatore di batch
le cose che verranno eseguite terminano
alla fine giusto e si aspetta anche
che sta facendo un volume estremamente alto
cose che sono generalmente relativamente
di breve durata in modo da poter effettivamente volere
fare cose come ottimizzare per il posizionamento
velocità nel trovare il posizionamento perfetto
va bene così se ne ho decine di migliaia
di macchine nel mio cluster, ma tu invia
un lavoro Hadoop con te conosci un milione
componenti sai cosa c’è di più
importante trovare il tipo di perfetto
posizione per eseguire ciascuno di quelli
milioni di pezzi di lavoro o semplicemente
programmandoli rapidamente perché la maggior parte di
loro saranno finiti in dieci secondi
comunque così lo schedulatore
dà la priorità a fare le cose più velocemente dove
lo scheduler del servizio presuppone che il tuo
i lavori saranno di lunga durata e così è
vale la pena spendere più tempo per trovare un
posizionamento ottimale quindi ad altissimo
livello senza realmente immersioni in esso il
l’architettura di sistema sembra qualcosa di simile
questi sono dettagli totalmente interni
che se vi piace Nerding con sono
tipo di divertimento la pipeline in termini di come
Il nomade si occupa di cose è che le cose accadono
nel mondo reale quindi c’è esterno
I lavori degli eventi sono in fase di creazione dei nodi
andare e venire così via e così via che
risultati in valutazioni create così
queste sono cose che lo schedulatore ha
per affrontare e riconciliare tutti quelli andare
in una coda quindi il broker di valutazione
le accoda e poi si applica
ordinamento prioritario quindi ad esempio un massimo
il lavoro prioritario è più importante per
riconciliare rispetto a un lavoro a bassa priorità quindi
questa cosa fornirà una sorta di
ordinando e poi faremo il fan-out
lavorare per qualsiasi numero dei nostri server così per
ogni server che stiamo eseguendo ogni
uno dei suoi core è in esecuzione un nuovo
scheduler quindi se lo avessimo saputo
hardware ragionevolmente robusto potremmo essere
fare centinaia di decisioni di programmazione
in parallelo, quindi questo verrà allargato a ventaglio
attraverso queste cose che sono
correndo ottimisticamente allo stesso tempo
non c’è nessuna presa pessimistica
posizionare ognuno di loro può essere invocando
diversi tipi di logiche quindi il servizio
scheduler l’ utilità di pianificazione in batch personalizzata
scheduler se vuoi e poi sono
presentazione di piani e quindi questo è come noi
affrontare il fatto che siamo
prendere decisioni ottimistiche e
ci sono razze giuste se stai facendo un
cento decisioni in parallelo si potrebbe
gareggia e dici di conoscerne cinque diversi
scheduler o progettazione per mettere su lavoro
la stessa macchina così come possiamo risolvere che
e questo è dove l’ottimista
il coordinamento arriva in questo piano
in coda tutti i nostri programmatori inviano piani
e possono essere pienamente applicati significato
ottimo che hai presentato conosci i tuoi dieci
server web c’è spazio libero su quelli
le macchine iniziano a gestire quelle cose
creare l’insieme di assegnazioni o esso
potrebbe essere il caso che ci fosse un
conflitto quindi ci potrebbe essere stata una gara
e tu metti il server web accanto
un server API perché un altro programmatore
ti picchi e non c’è più spazio
per eseguire il tuo server web in modo che possa ottenere
rifiutato in modo che la coda del piano consenta l’ordinamento
di ammissione parziale del lavoro di programmazione
e restituirà le cose al
scheduler se non ottengono le cose a
cento per cento a destra la prima volta
in giro così per carichi di lavoro su larga scala
loro sanno che ne sai novecento
tra le migliaia potrebbe essere programmato
al primo tentativo 99 su quello successivo
cento e il secondo prova e quello
finale nel terzo tentativo e così permette
noi per fare progressi anche se lo siamo
fare il
Sejin è in parallelo così
in ultima analisi, a causa del tipo di
l’ architettura di alto livello è molto
fortemente modellato intorno a Omega cosa questo
ci permette di fare è fare questi
decisioni ottimistiche di programmazione e e
fai queste centinaia di decisioni in
parallelo senza sacrificare il
correttezza del sistema in modo da non farlo
devono preoccuparsi di sorta Nomad di voi
conoscere quadruplo su allocazione e nodi
risorse che corregge per questo
roba internamente in modo che l’utente non lo faccia mai
vede una sorta di problemi con il
sfide ottimistiche quindi la domanda è
sai passare tutto questo lavoro
di costruire un sistema che è
ottimisticamente concurrent e dealing
con tutto il merito nell’adottare l’Omega
sfidare la domanda diventa sapere
Siamo riusciti a destra abbiamo speso tutti
questo sforzo ingegneristico è stato per questo
tutto per nulla così una sfida che noi
sorta di allevati per noi stessi
dì pure, come sappiamo questa cosa?
ha funzionato come sappiamo che effettivamente incontrato
i suoi obiettivi di progettazione perché siamo partiti
questi nobili obiettivi dove abbiamo detto che vogliamo
decine di migliaia di clienti e
migliaia di posti di lavoro in esecuzione e possono il
il sistema in realtà lo fa e così siamo venuti
con una sfida per noi stessi che
abbiamo chiamato il contenitore Nomad milioni
sfida che era fondamentalmente possibile
basta eseguire un milione di contenitori sul
sistema e vedere quanto velocemente possiamo farlo
giusto e così lo stress estremo
test del sistema e quindi abbiamo lavorato
a stretto contatto con i nostri amici di GCP
questo ci hanno dato un sacco di risorse
quindi abbiamo speso oltre cinquemila macchine
GCE e quindi sostanzialmente presentato un
milioni di contenitori che dividono e dicono
Avremo inviare un migliaio di posti di lavoro ogni
il lavoro conterrà un migliaio di contenitori
così che stiamo creando qualcosa che sai
un carico di lavoro leggermente più difficile per
lo scheduler di cui occuparsi e
in modo che il totale finale dovrebbe essere quello
stiamo eseguendo un milione di contenitori e
quello che abbiamo visto è che il sistema si comporta
è ammirevole che in realtà lo dia
tu che scala quasi lineare di avere
un’architettura Omega che è in grado di
farti conoscere le centinaia di decisioni
in parallelo e così anche se noi
inviato questo lo sai assolutamente
carico di lavoro brutale per il sistema che è
ancora in grado di pianificare tutti i milioni
contenitori con successo in meno di cinque anni
minuti a destra e quindi sta sostenendo a
il tasso di programmazione di voi sa inizialmente
è un po ‘più veloce ma alla fine
un altopiano a dir poco a nord
2.200 al secondo e quindi è carino
abbastanza abbastanza impressionante per un sistema di
essere in grado di mantenere questo e quindi lo sai
una delle cose che potresti notare
è in realtà il
c’è tuffi casuale come sta andando è
che non è una linea perfettamente monotona
una delle cose interessanti che
in realtà vedi quando lo stai facendo sai
i punti di riferimento di questo grande sono le cose
fallire nel mondo reale così come lo era Nomad
percorrendo tutto questo e pianificando tutto
di questi lavori, in pratica, l’abbiamo visto
macchine stavano fallendo in GCP così Nomad
lo programmerei su un set di macchine
quella macchina fallirebbe e quindi a
la nuova macchina sarebbe stata sollevata e poi
Vorrei riprogrammare il lavoro, quindi nessun uomo
era una sorta di combattere il fatto che alcuni
delle macchine venivano perdite è
facendo questo lungo il nostro cammino anche noi
ha scoperto alcuni bug nel motore della finestra mobile
solo perché la velocità con cui noi
stavano programmando per il motore era così
alto che ha esposto alcune condizioni marginali
e quindi abbiamo perso probabilmente circa due
percentuale dei nostri motori di finestra mobile a causa di a
condizioni di gara e quindi anche Nomad
aggirare il problema in modo che lo rilevasse
quelle macchine e posti di lavoro sono stati persi
e riprogrammato così c’è questo
una specie di protuberanze perché è una specie di perdita
macchine e riprogrammazione, ma anche
anche se sta perdendo macchine così com’è
andando è ancora riuscito a finire il
milioni di contenitori in meno di cinque
minuti e quindi penso che il più comune
la reazione che sai per noi è stata una specie
di simile missione ha completato il sistema
ha fatto ciò che abbiamo promesso che avrebbe fatto, ma io
pensa alla reazione generale da cui siamo venuti
persone quando ne abbiamo parlato con loro
Sapevi qualcosa lungo questo che?
era come se 640 KB fossero sufficienti
per nessuno perché mai avresti bisogno di un
programmatore e posso fare tutto da remoto
vicino a questo e tu conosci il modo in cui io
Mi piace pensare a questo, lo sapevi
e se io sapessi cosa fare se quando Oracle
creato il sai uno degli originali
i nostri sistemi DBMS hanno detto che possono
fare due transazioni al secondo come perché
avresti mai bisogno di un database loro
potrebbe fare più di due transazioni per
seconda destra se sei se hai strumenti
che vincola ciò che puoi realmente
costruisci sopra di loro e non lo sei
andrò a costruire Twitter in cima a a
database possono fare due transazioni
al secondo a destra come sta andando a
limitare le possibilità di cosa
lo farai sopra così quando saremo
pensando a carichi di lavoro di questa portata
stiamo pensando a cose come bene
cosa succede se hai un tipo di funzione lambda
carichi di lavoro
giusto cosa succede se stai facendo lavori in batch
con milioni di pezzi cosa vuoi se vuoi
per raggiungere il punto in cui non lo fai nemmeno
avere servizi di lunga durata e spendere
li su richiesta così all’interno della richiesta
flusso che stai iniziando e fermando il tuo
servizi perché il tuo programma di pianificazione è veloce
abbastanza per farlo, quindi perché preoccuparsi di riserva
risorse per una macchina che ne fa cinque
richiede un giorno e quindi per arrivare a quelli
livelli di capacità che non puoi fare due
transazioni al secondo si devono essere
in grado di operare a questi veramente immenso
volumi e quindi lo sai questo lo sai
molte di quelle cose sono come te
conosci il fantasma
carichi di lavoro futuri che ti stanno bene
beh quando arriviamo li attraverseremo
ponte così una delle cose interessanti
per noi essere in grado di parlare è un
cliente il cui carico di lavoro ha effettivamente
ancora più grande della sfida c1m e
così poco dopo sai che abbiamo pubblicato
questo punto di riferimento abbiamo avuto la possibilità di parlare
con la gente a Citadel e per quelli
che non sono familiari sono di tutto il mondo
il secondo più grande hedge fund che gestiscono
oltre 160 miliardi di dollari e loro
ci ha contattato e ha detto che sai cosa
il c1m è carino ma ne abbiamo alcuni
carichi di lavoro che conosci da soli
lo scheduler in-house può fare ed è cinque
volte più grande di quello che fa il tuo c1m e
siamo curiosi di sapere se resisterà al nostro
sfide e noi siamo come bene
interessante questo è una specie di molto
diverso tipo di carico di lavoro perché è
molto pesantemente in modo da sapere nel nostro
punto di riferimento un pupazzo di neve aveva programmato il
container docker erano di vecchia data
servizi che non dovevano essere
riprogrammato
siamo in esso c’è un continuo
flusso di lavoro in serie che è in corso
finito e quindi non è che non possiamo
nomad può programmarlo ed essere fatto
perché 30 secondi dopo quella cosa
termina un nuovo carico di lavoro per il
sistema e così nel loro benchmark loro
ha eseguito un cluster con 18.000 core della CPU e
fondamentalmente per cinque ore continue
continuare a inviare carichi di lavoro a questo
cosa e nomadi continuano a pianificare
li a oltre 2200 container al secondo
tutto il tempo quindi mi consentono di eseguire le
matematica su questo, ma nel corso di
il loro burnin per il loro carico di lavoro era
qualcosa oltre 40 milioni di allocazioni
e così di alto livello lo è
Nomad destra è un è davvero progettato
essere un programmatore di cluster e fornire
quei benefici chiave di una maggiore risorsa
utilizzo disaccoppiamento del lavoro e
risorse migliore qualità del servizio e
per fare questo in un modo che è
rendendo facile per gli sviluppatori finali
self-service e distribuire il proprio
applicazioni quindi come facciamo a liberare
loro dal dover parlare con i nostri
operatori e lasciali semplicemente presentare
qualunque lavoro vogliano allo stesso tempo
c’è gente dall’altra parte di questo
che devono mantenere le nostre piattaforme e le nostre
sistemi operativi così come facciamo
la loro vita è facile, così non sono
paginato continuamente e poi come facciamo noi
costruiscilo per scala in modo da sapere quando
tu provi e costruisci lo stile lambda
carichi di lavoro e sistemi di stile batch in cima
di questa cosa che non è la tua scala
collo di bottiglia e quindi non importa in a
no, questo è tutto ciò che ho avuto grazie ragazzi
così tanto
Penso che probabilmente ne avremo tre
minuti per le domande sì, lo farò
inizia con la prima domanda che viene
attraverso l’app non è uomo nomade consapevole
dell’utilizzo del sottostante
risorse in altre parole possono aiutare i nomadi
evito le risorse calde spostando i lavori
questa è una buona domanda, quindi è così
una sorta di due diverse domande uno di
quelli è non importa dove
la risposta è sì così per qualsiasi lavoro tu possa
fondamentalmente chiedi ai nomadi di darmi il
stato di assegnazione e ti dirò
conoscere l’utilizzo della CPU dell’utilizzo della memoria, ecc
ti darebbe una sorta di grana fine
utilizzo delle risorse la seconda domanda
è possibile i nomadi fondamentalmente automaticamente
attenuare il problema del vicino rumoroso così io
capita di essere co-localizzato con un’app che
è davvero rumoroso, può solo spostare il mio
domanda per affrontare quello non oggi
è sicuramente qualcosa che potrebbe essere
abbiamo avuto il giusto feedback
loop per questo abbiamo il sottostante
telemetria c’è solo tu sai no
processo oggi con cui sta guardando
per questi hot spot e facendo a
migrazione ma è molto immaginabile
che potrebbe e perché è tutto API
spinto potresti davvero immaginare
costruendo un’applicazione da te che fa questo
proprio come si potrebbe semplicemente interrogare
sai per le tue allocazioni a cui tieni
su capire va bene ha un rumore
prossimo mi piacerebbe che tu lo sappia
macchia questo e costruisci la forza nomade
Nomad fondamentalmente lo migra da qualche parte
altrimenti così puoi solo immaginare
usando le sue API oggi per costruirlo
te stesso
ciao così nell’esempio che hai dato di
usando KVM come piattaforma sottostante quando
parli di un po ‘di stato
applicazioni che hai parlato dell’abilità
copiare i dati si aspetta che siano condivisi
stoccaggio per lavorare ah bene
domanda quindi la domanda è quando siamo
facendo la copia dei dati per il semi
applicazioni stateful si aspetta
la loro archiviazione condivisa no così non è così
dipende dall’utilizzo come una SAN o rete
la memoria allegata è letteralmente come
copiare i dati da una macchina a
un’altra macchina che non si aspetta che
ci sono un po ‘di sottostanti
archiviazione condivisa e quindi preferisco tenerti
sulla stessa macchina così i nomadi lo faranno
piuttosto non copiare sulla rete e
invece trova spazio sulla stessa macchina
ma se deve o hai cambiato il tuo
vincoli allora lo schiavizzerà sul
Rete
qualsiasi altra domanda fantastica, grazie
voi ragazzi , grazie mille
[Applausi]
tu

Please follow and like us: