Press "Enter" to skip to content

GOTO 2016 • High Bandwidth Data & Low-latency Java • Ryan Pratt, Justin Flude & Michael Vander Pluym


lasciatemi dire dicendo grazie a
piccola introduzione il mio nome è Ryan
Pratt, ho con me il flauto Justin e
Mike van der bloom da cui proveniamo tutti
società chiamata peak6 investimenti I’m the
CTO di quella ditta e sono entrambi senior
sviluppatori nella gestione del capitale
affari che fa parte del
attività di trading proprietarie che fa parte
di quel business siamo qui oggi per
fare una presentazione in particolare in giro
un sistema che abbiamo costruito sopra l’ultimo
diversi anni che si occupa altamente nostro
dati ad alta larghezza di banda e bassa latenza
sistemi alcuni di questi ultimi tempi di latenza
sistemi che abbiamo scritto in Java alcuni
abbiamo scritto in C, ci stiamo andando
attraverso le varie aree in cui noi
scelto e perché abbiamo scelto quelle cose
e come puoi vedere abbiamo una specie di a
rinominazione parentetica del nostro discorso che
sta bevendo dal Firehose senza
perdere una goccia che è forse una migliore
spiegazione di quale sia il problema
passeremo attraverso lasciami impostare
il palcoscenico per cominciare quando siamo i primi
iniziato a trattare con o scoprire
sul problema che abbiamo finito
era la costruzione di tutti questi sistemi
verso la fine del 2013 e ci siamo resi conto di averlo fatto
trascorso gli ultimi anni costruendo
un nuovo quadro per come il nostro generale
sistema di trading ha funzionato abbiamo fatto un sacco di
uso di Java e lungo la strada uno dei
le cose che abbiamo costruito erano un nuovo feed
disseminazione del sistema di disseminazione
quindi questi dati di mercato che siamo
ascoltando e usando come parte del nostro
affari e abbiamo un sacco di sistemi
che hanno bisogno di prendere quei dati e farlo
varie cose con esso e abbiamo scritto alcuni
roba che la analizzerebbe e la consegnerebbe
fuori a tutti i sistemi che dovevano
usarlo non lo avessimo correttamente previsto
alcuni dei cambiamenti che stavano per
capita con i mercati però e in
particolare una delle cose che abbiamo avuto
deciso dal punto di vista del design è stato quello di
disseminare i dati usando TCP
che aveva i suoi benefici di cui avevamo bisogno
consegna affidabile di questa roba e noi
volevo provare a mantenere le cose così semplici
come possibile e abbiamo avuto in precedenza
iterazioni di cose usate
multicast e ho provato a usare vari
cose per multicast affidabile e aveva
incontrare un sacco di problemi, così abbiamo ottenuto
molto intelligente e abbiamo fatto qualcosa di simile
confuso e compresso e fatto tutto
questa roba stravagante e abbiamo pensato che noi
sarebbe in grado di gestire la quantità di
dati sulla nostra rete da ancora mentre è
in grado di utilizzare TCP bene 2013 è arrivato e
le cose hanno davvero iniziato a cambiare le loro
erano già un po ‘su un a
muoversi negli anni precedenti ma loro
ha iniziato a crescere nel 2013 e
la grande cosa che stava accadendo erano
i mercati delle opzioni erano frammentari e
in realtà non era solo il mercato delle opzioni
ma per peak6 questo è o principalmente noi
concentrarsi e frammentare ciò che intendo è
ci furono molti nuovi scambi in arrivo
online quando torni al 2008 lì
c’erano sette scambi ish e tutti
è uscito in quell’anno e da oggi lì
sono 14 in corso il 16 entro la fine di questo
scambi di opzioni annuali e ciò che conta
intorno a quello è che ogni volta che hai
un nuovo scambio è online l’unico
la cosa di cui sei sicuro è l’importo
dei dati che gestirai sta andando
per salire sai più o meno puoi dire
doppio intendo che è un po ‘di più
complicato di così e non lo è
significa che c’è necessariamente di più
opportunità da un volume commerciale
prospettiva perché davvero tutto tuo
sapendo c’è un altro posto dove
ci sono ordini tra virgolette per il for
gli strumenti per i quali potresti essere
cercando di fare attività di trading su ma
mentre ci possono essere più citazioni per quelli
cose che non è necessariamente intenzione di
causare più attività di trading reale
e così ogni volta che ne porti una nuova
scambiare online l’unica garanzia
è che c’è più complessità in
i sistemi che devi costruire e
ci saranno molti più dati
per 4 dal 2008 ad oggi per farlo andare
da 7 scambi per chiudere il 16
scambia la quantità di dati che abbiamo a disposizione
maneggiare quando è pazzo per darti una visione
opzioni mercati mercati opzioni sono solo
superandoci rapidamente a nostro vantaggio
opzioni i nostri prodotti derivati ​​dove
il bene sono un derivato di è
vincendo così avresti familiarità con
questo come scorte scorte pubbliche pubbliche che
commercio in borsa ma per
tutte le azioni che potrebbero essere scambiate
e citando uno dei titoli
gli scambi lì possono essere pensati
conoscere diverse migliaia di persone
strumenti che sono prodotti derivati
contro quell’equità e così mentre c’è
un sacco di dati all’interno dei mercati di acuità
la quantità di dati che è proprio quella
pompato fuori da una prospettiva di codifica
dai mercati delle opzioni è ordini di
magnitudine più grande fino al punto
Voglio dire è all’interno dei gigabits per
secondo dei dati che tutti questi
gli scambi fuoriescono e se lo sei
costruire sistemi che hanno bisogno di fare con esso
devi in ​​qualche modo essere in grado di tenere il passo
con esso, che è dove diciamo bene, dico
è come bere dal firehose a
darti un senso nel 20 2013
all’inizio dell’anno eravamo in corso
con la costruzione di un sacco di cose per il nostro
per i nostri affari e quando avevamo le cose
più o meno lavorando piuttosto bene e da
la fine dell’anno mentre noi avevamo
ha prodotto con successo un mucchio di pezzi
del nuovo software che era entrambi
infrastruttura architettonica e
nuove strategie effettive per il business
ci siamo anche trovati un po ‘dentro
una modalità di crisi in cui le cose erano state
lavorando non lavoriamo più che ho
Ho un paio di grafiche che conosci
come si dice, le foto valgono un valore
mille parole che tipo di parlare ad esso
questo è forse il modo in cui ci siamo sentiti al
all’inizio del 2013 e francamente noi
forse non eravamo così sicuri che noi
stavano diventando così pieni ma eravamo
gestendolo abbiamo avuto una grande quantità di dati
uscendo dai mercati delle opzioni ma
i nostri sistemi sono stati in grado di prenderlo e
sono stati in grado di gestire più o meno e
i miei sistemi intendo sia il nostro software che
il nostro hardware, lo sappiamo, girerà a lungo
sentirsi veramente bene con le cose
costruire notizie e fare strategie e
a metà anno all’improvviso ha iniziato a
andare così dove era molto di più
di tutti i nostri sistemi sia hardware
e software davvero in grado di pienamente
gestito soprattutto tra le punte e
abbiamo iniziato a vedere la nostra capacità di 20 gig
La rete inizia a perdere pacchetti che conosci
come specialmente all’aperto e in altri
vette nel giorno di mercato in cui il noi
stavano cercando di spingere più di 20 re
di dati attraverso i nostri router e loro
stavano semplicemente lasciando cadere i pacchetti e
giusto e entro la fine dell’anno noi
finito in una situazione che
questo è probabilmente un breve video
miglior rappresentante Oh Oh Joel Miller
hai appena trovato un marmo nella farina d’avena
sei un fortunato bambino fortunato
chi sai perché dai da bere?
il fuoco
Oh
quindi sì, era un po ‘difficile
le cose che stavamo scrivendo che avevano
quello era fondamentalmente allora è abbastanza
rappresentante di come stavano le cose
iniziando ad andare era il nocciolo del nostro
affari era la nostra capacità di riuscire
e gestisci entrambi i rilevamenti di Opera
e cogliere opportunità sui mercati
ma gestisce anche il rischio ce l’abbiamo
giocare ha richiesto che siamo davvero in grado di
continua con questo fuoco questa manichetta antincendio di
dati altrimenti semplicemente non lo sai
cosa sta succedendo non si sa che cosa rischi
sei a così abbiamo dovuto inventare un
modo per risolvere il problema fammi prendere un
fai un passo indietro e parla rapidamente di quale picco6
è così che è il piano commerciale questo è
nel nostro ufficio abbiamo un sacco di software
che abbiamo scritto e un sacco di
vari sistemi che mettiamo in atto
il nostro modo di creare questo veramente il
infrastruttura di supporto per tutto il
commercianti sul pavimento qui per essere in grado di
implementare le loro strategie e gestire
il rischio intorno a loro attraverso gli Stati Uniti
mercati delle opzioni azionarie peak6 è un cosa
sarebbe chiamato trading proprietario
fermo e solo per piacere cosa lo fa
significa che so che molte persone hanno sentito
questo e non sempre lo so cosa
Significa che in realtà significa solo picco6 è a
privato è una società che prende cum
il capitale che proviene dall’interno del
compagnia quindi non ci sono clienti esterni o
qualsiasi cosa del genere prenda quell’uso di capitale
le nostre strategie di Terry proprietarie
e software proprietario per provare a commerciare
sul mercato e spero di farlo
il capitale cresce e non si riduce a farlo
anno dopo anno è relativamente
cosa difficile c’è un sacco di
concorrenza nel mercato e il
sfide tecniche soprattutto quando si
provare a farlo su scala sono molto sono molto
ampio e molto difficile e in
particolare picco6 della nostra strategia
respiro si tratta di essere attraverso il
mercato essendo in grado di commerciare ed essere dentro
la maggior parte delle cose che sono là fuori come
per quanto riguarda le opzioni azionarie liquide che significa
in realtà non ci interessa una nicchia di
quella manichetta dei dati ci interessa a tutti
di esso ad ulteriore tipo di rendere il nostro
problema difficile negli anni precedenti
pochi anni portano a venti e tredici
quando abbiamo iniziato a correre nel
sorta di problema di eccesso di capacità con il nostro
le reti che avevamo riorganizzato tutte le nostre
sistemi in modo che la maggior parte della nostra roba fosse a
orientato al servizio distribuito e molto
di esso scritto in Java perché Java era un
francamente un grande ecosistema facile da fare a
molto di questo in quanto detto come abbiamo iniziato
cadere e rimettersi sui dati
stava esacerbando quello che era stato un
piccolo problema all’inizio lì
intorno alle aree in cui avevamo bisogno di bassa latenza
essere a posto e in particolare solo
un po ‘di stabilità per essere a posto e come
le cose sono andate molto peggio di quello che abbiamo
avevamo programmato di iniziare a colpire in grande
gc’s abbiamo creato un sacco di cose in a
linguaggio raccolto con garbage che ha un GC
e e abbiamo costruito cose in un certo senso
dove pensavamo di gestire il
tasso di creazione di immondizia che stava andando
lavorare e poi abbiamo scoperto che eravamo
fuori strada su quello che stavamo andando ad avere bisogno di
essere in grado di gestire e il e e il
il problema è che abbiamo avuto
ho passato anni a costruire questo e ora lo abbiamo fatto
bisognava capire come risolvere entrambi
infrastruttura da una gestione dei mangimi
prospettiva, ma non devono rifare
tutto era importante che Java
lavoro ancora per noi e poi per tipo di
gettare in finale una parte finale del
il problema era nello stesso momento in cui avevamo un
un sacco di nuove opportunità in mostra
il mercato per cui il
la soluzione stava fondamentalmente creando un mucchio
di più sistemi client a valle e di
a valle voglio dire che hai il tuo fuoco
tubo di dati in arrivo dal mercato
e hai una gestione interna
un modo di divulgazione che al momento
era TCP e avevamo bisogno di più o meno
potresti dire il doppio del numero di
sistemi che stiamo per ascoltare
a quei flussi di dati quindi se lo fossimo
solo già abbattendo i nostri router
ascoltando i dati su di te lo sai
comunque molti sistemi che avevamo intenzione di
due volte non lo sarebbe stato
lavoro così come dico che sapevamo di avere un
problema che abbiamo dovuto risolvere e noi davvero
sapeva solo tre cose su di esso noi
non sapeva esattamente come stavamo andando
fai tutto ma noi sapevamo che ci sono
tre cose che erano in gioco un tcp
dovevo andare, dovevamo in qualche modo capire
come tornare all’uso di multicast in
un modo affidabile senza colpire tutti
problemi che avevamo prima perché TCP era
noi non eravamo in scala per noi
uccidere cose che uccidono i nostri sistemi
uccidere la nostra rete con questo e così
questo è certo che sapevamo tutto il numero due
sapevamo che Java doveva far parte di
la nostra piattaforma abbiamo dovuto capire come fare
facciamo in modo che possiamo rimanere dentro
questo ecosistema scala fuori gestire il
diversi tipi di esigenze
tutti i sistemi che avevamo entrambi dove c’erano
era vero latenza molto bassa e se lo sei
a Peters hai parlato prima di non abbassarti
latenza significa un sacco di cose ma dentro
il nostro scenario c’erano alcuni sistemi
che dovevamo essere sottomessi molto
piccolo numero costantemente sottomarino
ce n’erano alcuni di più di cui abbiamo bisogno
coerentemente per essere in una sola cifra
gestione millisecondo e ancora
coerente così ogni volta, non importa cosa
tutto il giorno possiamo contare sulla fine e
questa cosa da lì a lì stava andando
per essere uno si conosce la singola cifra di Millie
e poi abbiamo avuto un sacco di cose in cui
era superiore a quella variabile che conosci
100 millisecondi a cui importa sapere come
non siamo totalmente a chi importa se intendo
si arriva in mezzo secondo o più noi
sicuramente cura ma molto meno rigoroso
ma avevamo tutto questo in questo
ampiezza di cose che vanno anche al di sotto
milli e abbiamo dovuto farlo funzionare
altrimenti stavamo guardando a
progetto pluriennale e non qualcosa
che saremmo in grado di realizzare
il business prospera e tanto meno affrontare il
nuove opportunità che stavano arrivando
la terza cosa che sapevamo è che non avevamo
idea che avevamo imparato la lezione che non avevamo
Sapevo cosa sarebbe successo alla scala
sarà solo parte del gioco
potrebbe essere 2 x 10 x x x chi lo sa
e questo significava dai dati in arrivo
a monte e significava potenzialmente nel
numero di sistemi che mettiamo in gioco
a valle e quindi dovevamo assicurarci
che l’architettura con cui siamo andati sarebbe
in realtà funziona indipendentemente da dove sia stato condotto
quindi abbiamo finito per costruire questa cosa
internamente abbiamo chiamato feed store caster
e inizialmente mi limiterò a saltare
Alla fine quella è la foto non c’è
il modo in cui affrontiamo tutto questo
questo in questo discorso c’è un sacco di
componenti ad esso stiamo andando per il
resto di questo discorso tiri fuori i pochi
pezzi di questo che penso siano i più
interessante sicuramente la cosa che c’è
dove abbiamo imparato di più da e dove
c’era potenzialmente qualcuno di più
divertimento innovativo
le cose che abbiamo ottenuto abbiamo avuto modo di giocare
con alti livelli di ciò che sta succedendo qui
ha un sacco di dati in arrivo su di te
vedi c’è quella piccola linea in
mezzo si può considerare tutto su
questo lato di esso è il lato server
il lato delle cose in cui sei
gestire i feed grezzi dagli scambi
e tutto dall’altra parte è
sistemi efficaci che sono a valle
quindi hai le cose che conosci multiple
server che dividono il mondo di ciò che è
arrivando dagli scambi qualcosa
chiamato feed mescolare che abbiamo scritto in
C ++ che sta analizzando quel feed raw e
quindi fondamentalmente lo scrivo in a
file di memoria condivisa, quindi ne abbiamo avuto un altro
cosa che si trova sullo stesso server
come la cosa che analizza i feed non elaborati
è scritto C e sta prendendo i dati
fuori dal file di memoria condivisa e giusto
trasmettendolo sulla rete sul
Dall’altra parte della linea ci devi
tutti i tuoi sistemi client ce n’è un altro
il piccoletto affitta e vede che sta ascoltando
a quel set di dati trasmesso fondamentalmente
facendo l’inverso di ciò che è il centro
facendolo portarlo in una condivisione
memoria quindi hai comunque molte app
potresti correre su uno di quelli
pezzi di hardware che è sul client
lato che sta accedendo a questi dati
dati di mercato internalizzati fuori da quello
archivio di memoria condivisa che è praticamente
è tutto quello che c’è da fare in generale
una sorta di visione ad alto livello di ciò che noi cosa
abbiamo fatto ora il vero trucco era come si fa
fare in modo che quel meccanismo di trasporto
dal lato server dove sta prendendo
fuori una memoria condivisa lo ha portato
trasmettendolo e poi ricevendolo
giù dal lato del cliente come si fa
in modo che sia affidabile perché di nuovo
ci siamo arresi su TCP e quindi siamo e
quindi siamo noi stessi il protocollo di rete
non ci garantirà che vediamo
cose in ordine per non parlare di vederli a
tutto ma ce ne serve ce ne dobbiamo alcuni
fare in modo che il lato client
di cose effettivamente vede tutto
e quindi abbiamo dovuto trovare un modo per
risolvo il problema che sto per avere
godendo la conversazione qui perché
Justin ha praticamente sviluppato la maggior parte di
questa roba ci è stata che ha lavorato con a
piccolo gruppo di altre persone in tutto il
tempo abbiamo fatto questo in particolare un altro
ragazzo di nome David, dove inizialmente
è venuto con la soluzione di come si fa
crea questa cosa multicast affidabile e
Ho notato che c’è un mucchio
di nomi
varie cose sullo schermo e e
quelli che sono sono un mucchio di vari
la paga di terze parti open source per alcuni lo sono
solo implementazioni di protocollo di ottenere
dati da una parte all’altra di a
rete in cui si sta tentando di ottenere
affidabilità sul posto e multi con
multi cast come consegna sottostante
meccanismo così Justin ci accompagna attraverso se
perché non abbiamo usato uno di quelli
di terze parti grazie Ron, quindi ci abbiamo provato
questi questi fuori e loro tipo di
le loro librerie di scopo generale che
risolvi il problema se vuoi un
dati multicast attraverso la rete voi
hanno rinunciato ai meccanismi di affidabilità
quel TCP ti dà gratis così da fare
questi sistemi funzionano è loro
in pratica conserva una copia di ciò che è stato
inviato attraverso la rete e quando qualcuno
ascoltando quel dato indica
attraverso ciò che è chiamato un negativo
Riconoscimento di un talento che non hanno
ricevere quei dati i dati sono
ritrasmesso su rete alla
dare al cliente un’altra possibilità
per leggerlo così così abbiamo provato questi questi
sistemi perché erano una specie di a
un po ‘come una sostituzione drop-in
solo per il nostro codice di rete non l’hanno fatto
ci impongono di cambiare un sacco di cose
vero tipo di applicazione per usarli
e sfortunati i risultati non lo erano
davvero molto soddisfacente e uno di uno
del problema principale che abbiamo avuto è quello
una volta che il tipo di larghezza di banda del
i feed di scambio in entrata sono aumentati e
la rete ha iniziato a rilasciare i pacchetti il
rete ci sovraccarichiamo rapidamente
il riconoscimento negativo da parte del naxx
loro stessi quindi in altre parole
la larghezza di banda aumenterebbe e questo sarebbe
causa la caduta di alcuni pacchetti
al che i clienti lo richiederebbero
per favore mandami quei pacchetti che noi
lasciato cadere sarebbero poi essere inviati sul
rete ma intanto l’in arrivo
i piedi di scambio devono ancora essere
consegnato sulla stessa rete in modo da voi
tendono a ingrandirsi esponenzialmente
davvero la quantità di larghezza di banda che tu
richiedono solo per sostenere lo stesso tipo di
dati di velocità effettivamente intendo quello che tu
potrebbe aver sentito questo se si utilizza qualsiasi cosa
come questo è solo una tempesta di abilità che conosci
che arrivano tonnellate di dati in arrivo
far cadere tutti i tuoi clienti iniziano a dire
hey ho bisogno
questo non l’ho capito e loro lo sono
inviando tutti questi snack ai flussi di backup
rinviare più dati mentre sta inviando il
altri dati che arrivano nella porta e questo
diventa proprio il suo circolo vizioso proprio così
quello non ha funzionato per noi che non ha funzionato
per noi e non ci siamo sentiti davvero così
anche se lo scopo generale
le librerie hanno risolto il problema dell’affidabilità
nel caso generale non l’abbiamo fatto davvero
sento che stavano approfittando di
cosa era speciale riguardo ai dati che eravamo
inviando la rete che era quella
i suoi dati di mercato e con i dati di mercato
sei davvero interessato al
messaggio più recente o più recente
valori per qualcosa che non sei
davvero interessato se ne hai lasciato un po ‘
pacchetti nel ricostruire cosa fosse
il caso pochi secondi fa o anche pochi
millisecondi fa davvero vogliono solo
sapere qual è stato l’ultimo pezzo di
dati che hai ricevuto per azioni Apple o
il prezzo di un’opzione Google giusta così così
l’unica cosa che è diversa è
sono queste le soluzioni che puoi usare
il nostro scopo molto generale ci sono io sono
andando a cercare di darvi un affidabile
consegna di pacchetti non mi importa cosa sia
nel pacchetto che sto per provare
dire meccanismo generale se si rilascia indietro
e chiedilo e ti darò questo
pacchetto se ho ancora quello che dal
il modo in cui il monte non può reggere
numero infinito di arretrati di
pacchetti in modo che alcuni punti un cliente
chi è abbastanza lento potrebbe dire hey ho perso
questa roba e anche la risposta è buona
male non ce l’abbiamo per affidabilità
tu e così così una cosa che sto andando
per passare alla diapositiva successiva su cui era
davvero questo aha un momento lo direi
che Justin e il team stanno lavorando
si trattava di non dover risolvere
fame nel mondo non dobbiamo risolvere il
soluzione generica che possiamo risolvere
qualcosa che è solo per il problema in
mano destra quindi intendo sullo schermo te
vedere una sorta di un tipico esempio di
cosa sta succedendo quando c’è un
molti dati sul mercato in entrata e abbiamo
ha ottenuto tre citazioni di Apple sul
legare uno dietro l’altro probabilmente
solo tu sai poche decine di micro secondi
a parte e quello che è in blu è il
il più recente e questo è davvero il
solo uno che noi
ci importa di quello che possiamo vedere sul
proprio sullo schermo c’è il nostro tipo di
archivio di valori chiave che stiamo mantenendo il
le virgolette le ultime citazioni in
il nell’applicazione client e il
portando a citazioni di Apple nel mio vero noi
sarebbe sarebbe stato meglio se
non sono mai stati inviati lì
davvero superato completamente dal blu
citazione di mela perché dal momento il
l’applicazione client sembra e dice cos’è
la citazione attuale per Apple it
vuole davvero l’ultima che vuole
che il blu e due che
preceduto sono ridondanti, quindi cosa ha fatto
questo cambiamento come hai fatto a usare
questo e quello che hai fatto in modo che cosa significasse
era per noi che vorremmo tipo di
capito questo è un aspetto peculiare
questa è una caratteristica peculiare del
i dati che inviamo sono in qualche modo
che possiamo approfittare di questo
peculiarità e trovare un modo migliore
protocollo per l’invio dei dati e altro ancora
importante decidere quando non inviare
i dati e il tipo di quello
strano tipo di cose riguarda il mercato
i dati sono quelli quando il mercato si sta muovendo
molto molto rapidamente e sta producendo a
molti tipi di citazioni per un sacco di
diversi titoli che è davvero il
tempo a cui tieni di nuovo le ritrasmissioni
meno perché se il mercato sta inviando
il tuo intero flusso di citazioni di più e
più rapidamente le possibilità sono che dal
tempo ti accorgi di aver perso il
citare solo pochi millisecondi sul mio
pochi microsecondi fa ci sarà
un’altra citazione che sarebbe rimpiazzata
sta arrivando comunque così davvero
non importa della ritrasmissione a
quel punto è davvero quando le cose sono
muovendoti molto molto lentamente che potresti
preoccuparsi della ritrasmissione perché
allora hai perso un evento
che sta per essere di lunga durata nella sua
significato e così questo è il
tempo a cui tieni davvero a replay
ma non quando le cose sono veramente
al massimo così come avrebbe fatto
ne approfitti come fa
funziona davvero dove lo fa
che non devi ritrasmettere
tutto così come funziona il sistema
è che l’ editore di
le virgolette in questo caso si associano a ciascuna
cambia in una citazione che viene inviata a
numero di versione e quando il client
l’applicazione si rende conto che è mancato a
pacchetto richiede essenzialmente attraverso
denti
un canale affidabile che richiede di essere
recenti i pacchetti che sono stati persi
che contengono la versione 27 della versione 28 disattivata
ha detto l’avi citazioni di Apple e poi il
editore può guardare il numero di versione
e nel frattempo l’editore è ancora
l’invio di una mela più recente lo cita
può guardare la richiesta di un cliente come
dicendo mi manca qualcosa e in realtà
guardare i numeri delle versioni dicono bene
Ho richiesto la versione 27 del
Apple cita, ma ho appena lanciato il multicast
versione 29 quindi non ho intenzione di inviarti
27 Ho intenzione di ignorare tranquillamente il tuo
richiesta perché so che hai appena finito
per ricevere la versione 29 se non lo fai
ricevere la versione 29 poi lo farai
richiedi la richiesta 29 e inizieremo di nuovo
considerando quello che dobbiamo fare ma
essenzialmente l’editore realizza
che può evitare di onorare la ritrasmissione
richiede perché sa che è già
multicast i dati superati
quella richiesta, quindi intendo il
depuy la particolarità dei dati è
davvero che ha una chiave e se
conversione dei dati che hai su
una chiave è fondamentalmente il tuo canale posteriore
in grado di sapere ho già detto che ho detto
più recente sai che non sono, non lo sono
andando a mandarti questo è giusto
e e la e la bellezza del
il protocollo è che più cadi
pacchetti perché la rete è multi
trasmettendo sempre più dati e meno
ritrasmissioni è effettivamente necessario
recuperare da quella goccia e quindi c’è un
tipo di effetto ammortizzante incorporato in
il protocollo quando a differenza con il
biblioteche di carattere generale più tu
lasciato cadere il più difficile da recuperare
con questo più si rilascia più facile
è quello di recuperare e ancora è
a causa della natura dei dati che noi
Conosceva i dati e come si comportava in più
per em, siamo stati in grado di almeno di tipo
in teoria e questo lo sai come noi
costruito è stato tutto come teoricamente
questo dovrebbe essere vero che siamo stati in grado di farlo
approfittare del fatto che quando il
il mercato impazzisce quando ottieni un
molti dati e impazzisce per a
un po ‘di tempo e questo è quando sei
probabilità di ottenere più cose multiple
le citazioni ne sapete molte a volte migliaia
centinaia di migliaia e all’interno di a
millisecondo della stessa cosa su e
di nuovo e così siamo stati in grado di dire
usando questo protocollo sapendo che quando
fa male stiamo andando indietro
fuori e stiamo andando a
fallo in modo che sia meno probabile
effettivamente gestire più traffico sulla
rete rispetto a quello che stava già arrivando
dal basso potenzialmente anche meno
mentre nello scopo più generale
soluzioni si ottiene queste tempeste e
in realtà finisce per essere sempre di più
e altro ancora e non riesci a mantenere
così è stato davvero per noi questo aha
momento e io non intendo per anni
abbiamo lavorato con questi dati
e costruito sistemi lungo questo e e
hanno detto che dopo averlo fatto l’abbiamo costruito
abbiamo entrambi in test e in
la realtà è stata là fuori per anni
ora questo si è svolto per essere del tutto vero
quando il mercato va molto bene
bonkers su di noi questa cosa solo ronza lungo
e arriva non come all’improvviso
magicamente non hanno alcuna larghezza di banda e uso
sono sulla tua rete ma non è molto
superiore a quello che avrebbe ciò che il
attuale upstream che proviene dal
gli scambi stanno causando così se tu sei
ottenendo 5 gigabit al secondo sostenuti
o 10 gigabit al secondo sostenuti
arrivando dall’upstream c’è di più
o meno quello che vedrai all’interno
la tua rete interna e anche se alcuni
le cose stanno lasciando cadere la probabilità
e poi stanno tornando e dicono hey
L’ho lasciato quasi invariabilmente
non importa perché hanno già
un altro che non l’hanno fatto cadere
ciò significa che non lo fanno più
ho bisogno di prenderlo e, per noi, intendo
di nuovo sembra ovvio ora ma ci sono voluti
noi anni per arrivare a questo in generale semplice
soluzione che ora sta funzionando molto bene
in scala abbastanza bene ma così così otteniamo
questo protocollo è in atto ed è fantastico
eccellente, siamo in grado di ottenere effettivamente un
un sacco di dati dalle cose a monte
questo sta gestendo tutti i dati di scambio
e spingerlo fuori a tutte queste macchine
ed è su multicast in modo che possiamo scalare
quelli a valle e non lo farà
causa in genere andando a causare ulteriormente
problemi con la copia di dati e sovraccarico
i nostri router e quant’altro, ma siamo ancora
avere questo grande sistema scritto dove siamo noi
avevamo un sacco di cose in Java che avevamo
francamente un sacco di cose in Python noi
iniziato a usare sempre più persone che di
il modo in cui abbiamo usato come parte della costruzione
componenti del sistema pure e e
abbiamo bisogno di risolvere quelle cose per essere in grado
per interagire con questi dati che eravamo
ora memorizzando nella memoria condivisa oh e anche
volevamo che le nostre cose potessero essere in grado di
continuare a ottimizzare l’hardware che avevamo
sul posto così e con quello che vorrebbe dire
quello che non dovremmo finire
avere se hai cinque app in esecuzione
su un pezzo di hardware perché le app
loro stessi non stanno facendo una tonnellata che vogliono
ognuno ha bisogno della propria versione di ottenere
questi dati inviati a loro e così è stato un
problema che dovevamo risolvere e che avevamo
fare in un modo che sarebbe figlio che conosci
in qualche modo lo rendono relativamente facile per tutti
queste app per integrarsi con questo così tu
conoscere Justin Ti lascio tipo di parlare con
cosa facciamo e come lo risolviamo
quindi avendo risolto il ridondante
problema di copia sulla rete che non abbiamo
voglio davvero riprodurre un sacco di
copie ridondanti sulle macchine client
dove abbiamo più applicazioni in
diverse lingue come dici di provare
accedere a questi dati così la soluzione ovvia
è votare come evitare di essere ridondanti
copia che sarebbe il caso per
istanza se questi ragazzi stavano aprendo a
socket o una connessione ad alcuni servizi
sulla macchina e richiedendo dati così noi
evitare questo problema utilizzando condivisi
memoria quindi memorizziamo una copia del
dati in arrivo in un file che noi memoria
mappa e che rende disponibili i dati
ogni processo che lo richiede senza
dover riprodurre più copie di
l’altro vantaggio è quello
fornire un dato in memoria e indirizzo
è più o meno facile in qualsiasi lingua
che usiamo per accedere a quei dati lì
sono alcune lingue dove è banalmente
facile da fare che ci sono alcune lingue
dove forse hai bisogno di avvolgerlo
accesso in una biblioteca perché non lo fanno
esporre la memoria grezza nella propria
il modello di programmazione lo fa
poi ciascuna di queste lingue è necessario
scrivi la tua versione personalizzata di andare
e guardando quel ricordo così abbiamo pensato
su come possiamo fornire uno uniforme
unico modo per renderlo disponibile e
c’è c’è una specie di ovvio
soluzione universale a ciò che deve
fornire una libreria C che accede a
memoria condivisa e la libreria C è il
la bellezza di una libreria C è così bella
ogni lingua del pianeta lo consente
accesso alle strutture fornite da ac
biblioteca in una forma o nell’altra è possibile
importa una libreria see in Python pretty
facilmente ovviamente molto facilmente in C ++
molto facilmente in partenza e molto facilmente
in Java può essere un po ‘
più lavoro in questa lingua o quella ma
è tutto molto fattibile, è a
modello di programmazione ben compreso e
anche la libreria C ha il vantaggio
che può nascondere i dettagli disordinati di
aprire un file della mappa di memoria e impostarlo
quel tipo di mappatura della luce e renderlo a
tipo di un molto più comodo
interfaccia per accedere a questi dati per
quattro persone all’interno di questi diversi
lingue giuste, così ci siamo, abbiamo trovato
un uso per vedere quale dei se tu
non l’ho capito, è di Justin
lingua preferita e ha trovato il suo
divertiti una buona casa alle sei di punta adesso
così grande che abbiamo una libreria di / c che possiamo
apri questa roba con cui possiamo interagire
attraverso quella libreria che non hai
per rifare tutto in tutto questo
lingue ma parliamo di Java così
ovviamente voglio dire se abbiamo persone che
stanno scrivendo Java là fuori certamente
Hooten se non hai fatto molto o nessuno
dalla roba dell’heap la prima domanda forse
è oh aspetta un minuto come sto andando a
accedi a questa memoria condivisa da
Java non è così
qualcosa che è naturalmente offerto fino a
API è che tipo di cade fuori
che quel regno di scrivere una volta scappa
ovunque e così che è stato il primo
cosa con che cosa fai?
memoria i miei file e da quando Mike ha fatto tutto
di questo tipo di solitario bene
poi cammina attraverso tutti i problemi e
quello che doveva fare di sicuro sì, giusto giusto
quindi sì, non ho preso solo un minuto come
proprio come ho parlato della memoria
file mappati un po ‘come intendo
sai davvero che puoi tessere la mappa della memoria
penso fosse solo un blocco di
memoria virtuale che conosci come te
puoi mappare nel tuo processo e poi
interagire direttamente con lo sai che posso
sarà sostenuto da qualcosa
altro come un file simile o semplicemente condiviso
memoria in questo caso in modo che tu sappia come
si abituerà spesso a
luoghi in cui è necessario condividere
memoria è necessario condividere una memoria
tra due processi diversi o tu
conosci come in posti simili dove tu semplicemente
ho un sacco di heiio e tu vuoi
esibirsi e così mi piace davvero sì noi
necessario essere in grado di interagire più come
con questa memoria condivisa siamo stati in grado di
usa i justin per vedere la libreria per il tipo
di gestire quello per noi sai come in
come in un modo in cui non avevamo
per reimplementarlo ci sono modi ben definiti
di come fare ciò che conosci come in Java
come la mappatura e la memoria, ma non lo è
non è qualcosa che è davvero
standard che conosci come su tutte le piattaforme
e cose del genere in modo che si sa come
siamo stati in grado di approfittare di quel
libreria per aprire il file e
tipo di interrogato indagato ma
ma ma sì, non lo volevamo esattamente
usa quella libreria per leggere
ogni singolo disco o ogni singolo
campo fuori dal comune
memoria e così che nella ragione principale è
che così stiamo usando questa libreria
giusto sai come la libreria C ma
sai come stiamo davvero cercando di usare
J & I o nel nostro caso come in realtà JMA a
interagire con quel file che conosci
piace essere in grado di chiamare funzioni che
sapere dove sono i record e
roba elettronica ma tu sai come
Davvero ce ne sono alcuni
prestazioni e come overhead che
stai per farti sapere come con
passando per quella libreria si sa come
con l’uso di Jay e io sai come
ancora peggio con Daniel a attraverso J tu
sai come e quindi c’è davvero c’è
non è davvero un bisogno che ti piace fare
che conosci una volta che conosci bene
dove è come dove si trova il ricordo
che vuoi davvero iniziare
interagendo con allora sai se tu
non devi attraversare il
libreria per fare questo tipo di raw
roba per essere in grado di leggere questo heap
memoria sai come se fossero il
i record vengono effettivamente archiviati correttamente
quindi cosa fai cosa fai come fai tu?
accedervi sì, la risposta è davvero
utilizzando pericoloso quindi se non avessi sentito parlare di
rodin pericoloso lo vedi come non sicuro sei tu
conosci come questa biblioteca che conosci
piace davvero classe che questa parte tu
so come questa parte di Java dove
non è chiamato sicuro per a
la ragione per cui non è davvero significa essere in grado
da utilizzare o non era originariamente destinato a
essere usato da voi come gli sviluppatori come
noi che stiamo facendo solo applicazioni
in realtà non deve essere usato internamente
lo sai e quindi è pericoloso e questo te
sa come la sua API stessa può cambiare
e in realtà ti sta cambiando
Java 9 e così siamo come si sta andando
devi sapere come rifare un mucchio di
il tuo co se si codifica troppo per farlo
l’API stessa e poi in secondo luogo
sei pericoloso perché sono Java
sai che siamo come se stessi creando oggetti
li butti in giro come se non fossi tu
non preoccuparti perché sai cose simili
come segfaults, ma tu puoi farlo
di solito ne prendi uno se piace se stai andando
attraverso e sicuro e utilizzandolo direttamente
così come è come devi essere
attento ma ma si lo so
come usare non sicuro è un modo che sai
come senza nemmeno usare come niente
Java esterno saremo in grado di
interagire con questi questi memoria condivisa
i file in un modo che è alto
le prestazioni vanno bene, quindi perché ci spingono a
un esempio qui dovrebbe mostrarci
esattamente quello che è ok così sai come
Diciamo che abbiamo ottenuto questo tipo di piccola classe
citazione sai come e ha solo un
poche aziende in esso lo sai tipicamente
e conosci sistemi come te
solo tipo di creare uno di questi oggetti
hai popolato sai come e poi
buttalo in giro ma sai come il
posto che lo si popola da would
in genere proviene da un altro su keep
la memoria ordina un po ‘su tenere il negozio così tu
conosci come qui, come abbiamo appena fatto
questi pochi campi come lo sai fondamentalmente
sai come puoi solo come
l’uso non ti ha chiesto di sapere come campi qui
per questi dischi piace come lo sai
come se fossero davvero rappresentati
come le proprietà di base che conosci
dei dati di mercato e vogliamo solo noi
essere in grado di leggere questi oggetti
i dati da op store e da off heat
e poi usali sulla jeep proprio così
ecco un esempio di noi che usiamo insicure
Per fare in modo che veniamo in qualche modo
qui sai come sappiamo cosa
record ID che vogliamo leggere scrivere e
quindi faremo solo calcoli
indirizzo sai che stiamo andando
per iniziare a leggere da destra così vediamo
che i record non sono lì come quelli
questo è davvero qualcosa che siamo solo
andando a saperlo, lo sai da vicino
leggendo la posizione dall’accusa
la biblioteca proprio come noi dobbiamo sapere
dove l’array di record o essere come
i dischi stessi iniziano così dobbiamo
tiralo fuori dalle storie in biblioteca
sappiamo qual è il loro ID record
usiamo ma poi dobbiamo sapere come vieni
e calcolare l’indirizzo usando semplicemente il
dimensione di record così così che anche
è venuto dalla biblioteca, quindi abbiamo ottenuto un
indirizzo questo record che stanno per
inizia a leggere sai come creiamo
una di queste citazioni sai che noi
crea il sai come il divisore
archivio valutato che i byte rappresentano
il simbolo della mela, lo copia da destra
un mucchio di pezzi sul fuoco e poi noi
ricrea l’oggetto stringa per chiamarti
sai come tenere quei morsi e leggiamo
l’offerta leggiamo la domanda e più debole il
Scambio giusto così sai come questi
sono queste sono tutte le volte che siamo
chiamare pericoloso qui poi sta leggendo
qualcosa che è fuori dal comune
memoria e poi metterla in un
oggetto che è totalmente pensato I
significa che gran parte di questo è la gestione
memoria fuori dall’heap in modo che tu non lo sia
creando un sacco di GC ma la tua soluzione
fondamentalmente sta generando un sacco di
immondizia giusto sì giusto quindi ti piace
come se fosse davvero un punto, quindi lo sai
come sai che questo è altrettanto sbagliato
come dove stiamo ancora creando questo
oggetto del cordone lo stiamo ancora creando
DeRay destra come non vogliamo veramente
fallo perché sai come costruiamo
su abbastanza oggetti e stiamo solo andando
per ottenere DC se sta per solo
introdurre più cause giuste così come noi
voglio stare lontano da così così qui tu
sapere come possiamo fare è passare
Quel oggetto di quotazione possiamo riuscirci
lo sai dal ragazzo che è quello
chiamandolo forse ti sta riutilizzando
sapere come forse un pool di loro per
alcuni sì sì, potrebbe essere in una piscina di te
sapere come se fossimo anche solo potrebbe essere
uno che è davvero un senso fino a
il thread che ti sta chiamando lo sa
lei se sappiamo che siamo in un
complesso a thread singolo che possiamo prendere
approfitta di tanti modi in cui tu
può piacere solo sapere come tipo di mantenere
un oggetto esistente intorno a quello che sei
andando a riutilizzare ancora e ancora okay così
ci limiteremo a passare quell’oggetto
e poi basta impostare il campo su quello
invece di creare qualcuno giusto così
notizie dilson lì però sì mi dispiace così
non ci piace abbiamo ancora quel byte
array abbiamo ancora quella stringa così tu
sai come risolverlo
quindi sai come qui possiamo passare
quell’oggetto del tabellone e possiamo cambiare
invece di avere solo un campo stringa
tu sai dentro quell’oggetto che stiamo andando
per renderlo un array di byte in questo
istanza come sai che è così che sono
era solo per leggerlo
array preesistente va bene così allora siamo
ancora solo non stiamo creando quel extra
spazzatura qui più
siamo in grado di approfittarne
sapere come la cosa potrebbe sembrare brutta
in un certo senso perché come stai pensando
come oh sì, tutti quelli che stanno chiamando
questo allora dovrà interpretare
sai che questo è come byte o
ancora andando a dover creare una stringa
per sapere davvero che è Apple, ma in
la realtà è come se pensassi a qualcosa
questa è davvero la chiave del disco
ha ragione il ragazzo che sta chiamando questo
e chiedendo questo disco che sta chiedendo
per questo disco per una ragione che mi piace
sa che questa è mela e lui può
probabilmente se sai come lui da quando lui
sa che è Apple, probabilmente
ha già una stringa che dice
Apple in esso che può quindi attaccare
all’oggetto dopo che possiamo leggerlo
di memoria così sai questo come questo
in realtà sai come sono le sue stringhe
notoriamente difficile adesso come quando
stai cercando di conservare il tuo
allocazioni ma sto facendo qualcosa
in questo modo aiuterà dove sai come
va bene amico e tipo di usarlo per
chiavi e in contesti in cui sai cosa
i dati sono perché puoi quindi andare e
riusare quelle stringhe tutto bene io
significa anche se un po ‘complicato
ovviamente sembra relativamente semplice quindi io
significa perché non fatto in fretta e dovremmo
ho interessato un piccolo sostituto
tutto e se ricordo bene
ci è voluto un po ‘di tempo per fare un po’ di tempo
sì, intendo davvero come lo sai
ci sono tutti questi piccoli problemi
è sorta di pop-up quando tu
potrebbe solo significare cambiare il sistema per
uno ma poi inizia davvero a usarne di più
questo approccio diverso così come lo sai
come con questi file dobbiamo sapere noi
sapere come ciò che ogni record rappresenta
sai come dobbiamo essere in grado di
guarda i nuovi record che vengono aggiunti
dopo che hai iniziato bene, sai come noi
devono essere in grado di interagire con quella C
biblioteca e dobbiamo sapere che
sapere come va bene se l’abbonato nel nostro
la scatola che conosci si spegne e poi
scarica uno nuovo che sta per lui
andando a creare una nuova memoria condivisa
memorizzato c’è c’è solo tutto questo
diversi problemi appena iniziati
spuntando che sai come sono tutti
problemi risolvibili ma comunque loro
fare anche un po ‘di lavoro
va bene così sembra davvero
relativamente complicato da cercare di raggiungere
questo mi piace quanto di quanto intendo io
spesso devi passare tutto questo
sciocchezze solo per poter usare Java
e non ce la farai a fare come un matto
questa quantità di dati sì, intendo no
per quanto tu possa pensare che io
significa davvero questo è il dieci per cento di
il nostro codice che conosci come noi davvero
bisogno di tipo di
pomodori a casaccio in genere di fare
molto molto molto veloce, ma intendo
come il resto del nostro codice come te
lo so come il novanta per cento di esso è
lo sai proprio come non è sofferto
sai che ti piace evitare le allocazioni
questo questo intensamente e molto bene
roba così sai come devi davvero
sai pensare al nono n roll
e il tipo di cui sarai capace quando
hai bisogno di sapere come applicare questa roba
ok ma no, come puoi vedere c’è un
mazzo che c’era davvero un mucchio di
problemi che ne sono usciti con uno di noi
anticipato alcuni che letteralmente solo
è venuto lungo la strada non c’è modo in cui noi
può passare attraverso tutti loro ma molti di
sono settimane molto interessanti
due abbiamo intenzione di tirare fuori che sono a
meno interessante da vedere prima
uno sarebbe questo che è come farlo
bloccare senza bloccare quale prima cosa
il mondo significa questo e perché?
era questo un problema si, voglio dire, lo sai
così così sai davvero che non è così
esattamente bloccando proprio come questo è di più
solo tu sei come vogliamo leggere un
reale come valore legittimo dal negozio
giusto così sai come noi non siamo davvero
non siamo davvero in grado di bloccare il
senso tradizionale perché non vogliamo
rallentare o creare una sorta di questo
contesa tra diversi processi
qui ricorda dove lo condividiamo
memoria sai come non siamo solo
parlando di blocco all’interno del jvm o
qualcosa del genere stiamo parlando
su di te sai potenzialmente potresti sapere
come fare qualsiasi soluzione di bloccaggio reale
bloccando nel processo giusto così c’è
questa cosa che Justin ha scritto è
scrivendo quanti dati hanno ragione
c’è questo centinaia di migliaia di
record aggiornati ogni secondo e
c’è in ogni file e c’è quello
ci sono molti di questi file differenti
e c’è un processo unix che è
scrivendo sul file e poi c’è un
mucchio di diversi processi di applicazione
programmi sulla macchina guardando quel
stessa memoria e hanno bisogno di tipo di essere
in grado di leggere quella memoria in una corretta
modo di non leggere spazzatura fuori di esso, perché
leggono l’aggiornamento parziale eppure loro
non posso davvero bloccare il record perché
potrebbero leggere qualcosa che è
correndo abbastanza lentamente o potrebbero esserlo
facendo qualche aggiornamento lungo o qualcosa di simile
che è andando a blocchi a destra così come
potrebbe essere scritta la cosa del pitone estivo
che hai bisogno di guardare questi dati
che per qualsiasi motivo fosse stato scritto
lontano dove blocca lo scrittore
va e colpisce un database ritorna
tempo dopo e poi dice oh si
Quella citazione che volevo e e tutto a
improvvisamente tutti cadono e quindi non possono
fallo, quindi dobbiamo vedere i dati correttamente
ma non bloccare quindi questo è davvero su
evitando di leggere i dati parziali giusti
dati parzialmente scritti sì, c’è
qualcosa di giusto così intendo che ti piace
stiamo andando davvero a questo esempio
in fretta così dire che abbiamo questo
questa citazione Apple si conosce come prima noi
scrivi come sai oh è 106 e
cinque centesimi e sai come chiedi è
106 a dieci centesimi proprio allora sai
come una nuova citazione arriva e noi siamo
ora siamo l’offerta ha cambiato 106 15 e
la domanda è cambiata 106 20 così sai
come quando lo si legge senza veramente
fare qualsiasi cosa se non ci proviamo
impedirlo quindi sai come possiamo ottenere
a una situazione in cui ciò accade dove
leggiamo che l’offerta è 106 e quindici
centesimi e chiedono è 106 e dieci centesimi
quando regale in realtà non è mai così
è successo davvero, sai che io ho letto
non è proprio un vero disco, quindi lo sai
come quello che stiamo per fare è questo tu
sai come stiamo andando a provare
bloccare semplicemente usando la versione dei dati
va bene così lo scrittore è, lo sai
ogni volta che è pronto su disco
sta effettivamente incrementando questo
versione allegata al suo record
ma non incrementa solo così lui
fa davvero tre cose che lui blocca
il che significa che nega la versione di
il record va bene, scrive un negativo
numero lì sai, poi scrive il
valore record completo e quindi lo sblocca
sì mux negando quel numero e
quindi aggiungendo uno va bene così efficacemente noi
incrementato ma abbiamo dovuto passare attraverso
questi tre passaggi per arrivare a
lettore d’altra parte sta andando a
aspetta finché non vede una versione positiva
lo sai come in quel disco che sta andando
per leggere il numero di versione, allora lui è
andando a leggere i valori completi del record e
quindi leggi di nuovo quella versione e
sta andando a ripetere se le versioni sono
diverso quindi è un esempio di questo tipo
sai come vedere che vediamo lo stesso
prima citazione ok abbiamo 106 in cinque centesimi
per l’offerta e 106 e dieci centesimi per
la domanda giusta così lo scrittore sta andando
sai come sta riavviando il suo
versione 101 ha intenzione di scrivere negativo
1 01 e sta per scrivere il nuovo
citare okay, quindi il nuovo valore del record
e poi scrivi la versione 102 ok
lettore d’altra parte come se stesse andando
leggere la versione iniziale 101
ci sta andando a leggere alcuni misti
registra come un record con la nuova offerta
ma il vecchio chiede tutto bene allora lei è
andando a vedere oh ok c’è questo
versione negativa negativa uno su uno
questo significa che io
a tipo di andare avanti perché negativo 1
0 1 e 10 in 101 la versione del
i primi rossi sono diversi, quindi ho
Devo ripetere così forse lui legge
la versione è ancora negativa
ora lo respira ed è tutto
giusto e così ora può leggerlo pieno
registra valore e sai che può leggere
la versione di nuovo e odio sono loro
lo stesso che significa che abbiamo ottenuto un coerente
leggi e possiamo usare quel valore così
un’altra cosa che abbiamo dovuto affrontare è
c’è la biblioteca di ac che siamo
trattando e fa un sacco di
roba su di noi e noi non controlliamo ciò che è
dall’altra parte di questo pure
in entrambe le interazioni con quella c
biblioteca dal vivo e solo in te lo sai
lo sviluppo generale è diventato problematico
proprio come intendo parlare di un po ‘di dolore
punti che avevamo qui sì, intendo davvero
questo non è un sistema altamente concorrente
proprio così come sai quando vanno le cose
sbagliato siamo come all’avvio o
qualunque cosa tu sappia, c’è
sicuramente i tempi erano quel blocco di
memoria quelli o uno di quei blocchi di
memoria che stiamo leggendo da te
sai come all’improvviso lo sai
come bisogno di passare ad usare un nuovo blocco
di memoria per quello stesso stesso dato
questo significa che è così giusto dare come
il perché diciamo che l’altra parte si è schiantata
o qualcosa ha cambiato deve essere
riavviato o spostato cosa sta per finire
sta succedendo è che avrai
questa cosa questo ecosistema dall’altra parte
quello dirà oh, ho finito
con quel file sto per chiuderlo
riapertura e inserimento di un nuovo file in
posto e potresti avere questa altra app
seduto lì cercando di accedervi al
stesso tempo perché sono giusti
disconnesso sì, voglio dire che siamo davvero noi
devono essere in grado di cambiare tipo
due cose fuori e tutti quelli che sono
leggendo da questa roba nel
processo significa quel tipo di tutto in una volta
essere in grado di iniziare a guardare il nuovo
blocco di memoria e cercare di non seg in difetto
nel processo va bene così sai come e
allora l’ altra cosa è proprio come noi
usando Java è giusto bruciare
ovunque e tutto proprio come è
dovrebbe essere facile per te
sapere come compilare e poi iniziare a correre
più ovunque come C non è così
lo sai e così ora siamo un po ‘come siamo
cercando di assicurarci che stiamo costruendo
con la versione giusta della libreria
quello che corrisponde a ciò che vogliamo fare
roba con e quindi abbiamo dovuto tipo di
scrivi alcune cose su compilation personalizzate
essere in grado di prenderlo per costruire questo vedere
roba e tu sei come stiamo costruendo
il nostro materiale java e lo spediamo insieme ad esso
sono solo sciocchezze pratiche ma simili
Justin seduto lì a scrivere furiosamente
questa API è come oh, abbiamo bisogno di questo così
dobbiamo
stai ferocemente cercando di usarlo, sì
e che la strumentazione per solo il
buggy e roba erano altrettanto cattivi
solo cercando di sapere come chiamare a
la biblioteca di Seaver e mettersi al sicuro
difetti lì e poi capire come
dove è andato storto così intendo
sai che ci sono modi funky
di farlo ma sai come è
difficile non è non è giusto
perché stai guardando il nucleo da
il tuo jvm va bene, sì, decisamente dolore
punti e come ho detto c’è un intero
elenco di cose, ma se lavori
attraverso di loro e soprattutto se tu
contiene l’ area del tuo programma
hai a che fare con questi problemi tu
può raggiungere prestazioni molto elevate
sistemi e quantità controllabili anche a
alte velocità di trasmissione dati e and and and uh a
grande quantità di attività in corso all’interno
il tuo VM è ancora possibile controllare la quantità
di rifiuti che vengono creati e così quando
tutto detto e fatto abbiamo fatto questo e noi
è riuscito a mantenerlo relativamente controllato
siamo passati dalla crisi a ok forse liscio
le partenze stanno andando un po ‘lontano ma è così
ha funzionato ha funzionato non avevamo per il nostro
tre problemi sono stati più o meno risolti
la nostra rete non era più
completamente distrutto da loro entrambi i
mercati così come il nostro tipo di abuso di
li internamente usando TCP per ottenere tutto
questi grandi dati in giro abbiamo avuto tutto questo
cose che avremmo costruito in Java che noi
devo tenere che abbiamo dovuto cambiare alcuni dei
elementi chiave di come ha interagito con
dati di mercato alcune altre cose lungo il
il modo in cui abbiamo imparato è stato il risultato di pari
facendo questo lavoro abbiamo detto hey
essere intelligente da fare per voi sapere usare questi
stesse tecniche tecniche in altri
posti pure e abbiamo avuto una migliore
sistema come risultato e non abbiamo davvero
Coprilo esattamente nei dettagli ma questo
cosa scala estremamente bene se il
la parte a monte continua a crescere, dieci
più scambi l’anno prossimo se tutti loro
triplicare la quantità di dati che sono
spingendo possiamo ridimensionarlo davvero
facilmente non avremo intenzione di scrivere
una linea di codice per essere in grado di averlo
scala e ancora a causa del modo in cui
abbiamo gestito e segmentato i dati
il downstream che sarà anche
vero da quella prospettiva lo sono anche il
tre cose che vinciamo sapendo di aver bisogno
per risolvere facendo questo ci siamo davvero riusciti
ad una buona soluzione e e abbiamo finito
avere un
che più o meno è in grado di fare tutto
queste cose e qui sono alcune delle
cose che abbiamo imparato come 10
gigabit al secondo mentre non è così
succede tutto il giorno ogni giorno alcuni giorni
succede e può succedere per un
disagio lunga quantità di tempo dove
stai ricevendo tanti dati da tutti
i mercati e devi solo tenere il passo
con esso e in effetti quando ciò accade
è il momento peggiore per la tua attività
se la tua roba non regge o non lo è
sta iniziando a perdere dati ed è il
la più alta opportunità per te se costruisci
cose che in realtà possono tenere il passo con esso
di solito non ci sono 30 milioni
messaggi al secondo ma succede
ed e questo è ciò che il decimo 10 concerti di
i dati possono essere suddivisi in e devi
essere in grado non solo di dire ecco il
larghezza di banda ce l’ho ma la analizzo anche
e fare qualcosa con esso e da un basso
prospettiva di latenza sai che abbiamo avuto
sistemi che sono costruiti in Java dove noi
deve avere o sub sotto milli a
gestione di Milly sub ordinata o
un milione di cifre e ha funzionato noi
anche fatto un sacco di tutte quelle cose
lungo la strada abbiamo usato andare per parti di
questo non ci siamo entrati in questo ma
stiamo davvero trovando che è un amore
piccolo linguaggio e c’è un sacco di
cose sulla loro filosofia di mantenere
cose semplici che funzionano e noi
tutto ciò che abbiamo provato a fare con esso ha
ha finito per essere abbastanza veloce abbastanza
manutenibile e decisamente più acceso
il lato divertente delle cose con cui lavorare
abbiamo detto prima che vedi è ancora lì C è
comunque divertente C ++ è ancora in giro, non abbiamo fatto
liberamene completamente, lo so che c’è
decisamente un po ‘di amore / odio
tra le persone al picco6 intorno a dove
abbiamo C ++ e usare, ma ha una casa
e più o meno il modo in cui abbiamo costruito questo
ha raggiunto gli obiettivi attraverso l’ottimizzazione
hardware e lavorando su tutti questi
lingue e che è più o meno lo
Si grazie
tu

Please follow and like us: