
quindi per rendere le cose un po ‘equo io
parlerà di Phoenix sul web
quadro ma ho intenzione di esplorare
la fondazione che Phoenix è costruita su
in cima solo per avere una foto mostra di mano
chi ha sentito parlare di Phoenix prima
va bene e chi non ha sentito parlare di Phoenix
ma almeno sentito parlare di Alex vedo lo so
che Alex qui è una cosa dentro
linguaggio di programmazione va bene così
ci sono tre cose che dobbiamo sapere
abbiamo solo bisogno di sapere le parole che sto andando
per esplorare tutte quelle cose così Phoenix
è il framework web in cui è scritto
l’ Alex è un linguaggio di programmazione e funziona
in cima alla prima macchina verticale
okay e l’altra macchina virtuale se
tu inizierò con la storia alle spalle
Phoenix e ha sempre iniziato con il
idea macchina virtuale quindi per chi
non ha familiarità sensazione macchina virtuale non
familiarità con Alex, ma così aria che posa il
macchina virtuale è la narrativa runtime
cosa è creato da Ericsson che è un
società di telecomunicazioni e uno dei
cose che stavano facendo in quel momento
era di circa tre decenni fa erano
costruzione di interruttori telefonici e uno di
le cose di cui necessita un interruttore telefonico
fare è essere in grado di connettere la persona a
parlare con la persona B giusto e ciò che è
è davvero interessante riguardo il collegamento aereo
che quando stavano costruendo il
lingua il runtime avevano tutti questi
in mente i requisiti a cui sono correlati
interruttori telefonici così per esempio voi
non voglio che l’interruttore telefonico sia a posto
essere in grado di collegare solo una persona che parla
ad un altro in realtà vogliamo molte persone
possibile parlare tra loro okay
quindi vuoi essere in grado di gestirli
molte connessioni molte persone che parlano al
nello stesso tempo ci sono altre cose
come ad esempio a volte vuoi
chiama qualcuno ma quella persona è già
parlare con qualcun altro per un altro
cambia quindi devi essere in grado di avere
gli interruttori scambiano informazioni così
loro sanno che puoi parlare con questo
persona perché questa persona è occupata correttamente
ora e oggi le sfide che sono
lavorare sul solving Weaver mentire è
ancora più interessante perché abbiamo
mobilità ora
giusto il nostro telefono non è più installato
nella nostra casa è nella nostra tasca quindi per
esempio una delle cose che loro
risolvi per quanto riguarda oggi dentro Eric’s on
quei sistemi di comunicazione sei tu
parlare con qualcuno al telefono e poi
come sei nella tua auto ma non parlare
e guida ma immagina di essere dentro
il sedile del passeggero nella tua auto sta andando
da qualche parte sei connesso a uno
passare o ad un’antenna e poi loro
bisogno di consegnare ad un’altra antenna
perché sei più vicino a quell’altro
così hanno costruito questa lingua questa build
costruiscono questa macchina virtuale e
tutto per risolvere un sacco di
Casi Zeus ed era limitato a
telecomunicazione che stavano usando per lo più
a Ericsson per un lungo periodo di tempo
fino a quando tutti hanno cominciato a rendersi conto che
questo è il caso qui con cui abbiamo
interruttori telefonici scritti che stai stendendo
e un sacco di connessioni è molto
simile al web va bene così abbiamo impostato a
cambiate avete un server e il server
può essere sta per ricevere richieste per
un sacco di clienti diversi proprio tu
bisogno di parlare con endpoint interni e
poi la gente ha iniziato a porsi
hey se guadagnare era buono per
telecomunicazione è molto probabile che vada
essere bravi anche per questo e molti
le aziende hanno iniziato a farlo in modo Amazon
e Facebook usano la compagnia aerea
società di telecomunicazioni come
Ericsson il Motorola sono ancora
usando presto oggi abbiamo aziende come
una compagnia Morrison come Heroku e
ryuk quindi se mai distribuire un
applicazione a Heroku ogni volta che ci provo
per leggere la tua domanda sta passando
attraverso uno strato di routing all’interno di Heroku
questo è scritto in Erlang Iraq il
database scritto narrativo va bene e
c’è un caso d’uso che ne ha molti
attenzione un paio di anni fa due anni
fa quale è WhatsApp uno dei motivi
hanno ricevuto molte attenzioni perché
sono stati acquisiti da Facebook per 19
miliardi e whatsapp è un’applicazione
questo è l’installazione del telefono e quindi
puoi scambiare messaggi con il tuo
amico questo è un argomento su quale dispositivo
stanno usando e ciò che è veramente bello
su whatsapp è che usano il collegamento aereo
e andrebbero agli eventi di collegamento aereo e
parliamo dell’infrastruttura e
come loro
gestendo il loro traffico nel loro sistema
in modo da avere semplicemente non hanno un’idea
oggi
whatsapp gestisce al giorno più messaggi
rispetto all’intero sistema SMS globale al giorno
questo è quanto è grande il loro traffico oggi
puoi andare e provare a trovare discorsi o blog
messaggi e c’è questo che ha a
questo punto è un po ‘vecchio da questo
Gennaio del 2012, ma stavano dicendo
questo post sul blog che avevano due milioni
connessioni su una singola macchina, quindi cosa
stava succedendo è che ne avevano due
milioni di dispositivi che erano collegati
a un nodo una produzione meccanica e
poi quei dispositivi che stavano inviando
messaggi che stavano ricevendo messaggi
e tu sei su una singola macchina che avevano
due milioni di connessioni e quando vai
per vedere la macchina puoi vedere bene
a è una buona macchina, ha 24
core diciannove sessanta gigabyte di RAM
ma anche con tutta questa capacità in
lì quando ne stanno avendo solo due
milioni di connessioni che stai usando solo
40% della risorsa CP della macchina più avanti
parlare attraverso la porta SATA in grado di ottenere
a 3 milioni e 3 milioni e mezzo
connessioni in modo da avere un’idea
okay , questo è un po ‘circa
compagnia aerea e mi piace parlare di cosa c’è
questo perché whatsapp era esattamente quello che
ha portato a Phoenix in fase di costruzione, così Chris
McCord è così gentile con Chris McCord
creatore di Phoenix e stava lavorando su
un’applicazione che ha richiesto un po ‘di reale
componenti di tempo che ha bisogno di inviare
invio rapido di informazioni in tempo reale sul web
informazioni ai clienti rapidamente a
trasmesso per un sacco di diversi
i clienti raccolgono queste informazioni
e quando ha sentito parlare di questo ha detto
non sarebbe sorprendente se potevo usare
questa tecnologia per risolvere questo problema
Sto avendo in questo momento gli strumenti che era
usando al momento erano davvero poveri
prestazioni ed è stato difficile lavorare con
12 difficile da programmare il modello da pensare
riguardo al problema che aveva era davvero difficile
per dire che guarda questo e dice che voglio
voglio usare questa tecnologia per risolvere
questo problema ho adesso e
Phoenix ha iniziato con qualcosa
chiamati canali Phoenix okay, quindi cos’è
l’idea tra i canali di Phoenix
quindi Phoenix a Phoenix è un canale aperto
canale di comunicazione tra un cliente
e un server e quindi stanno inviando
e ricevere informazioni in ogni momento
okay , diamo un’idea di come Phoenix
i canali funzionano quindi iniziamo con alcuni
Codice JavaScript perché se abbiamo un
comunicazione tra il cliente e il
server è necessario scrivere un po ‘di
codice nel client e un po ‘di
codifica il server in modo da avere questo
informazioni che vanno e vengono e uno di
il maggior numero di clienti che abbiamo oggi è
il browser quindi abbiamo bisogno di scrivere
JavaScript quindi se vuoi integrarti
con i canali phoenix nel browser
questo è un codice semplice che scrivi
quindi la prima cosa che facciamo nel primo
linea lì in cima creiamo un socket
e poi chiediamo al socket di connettersi così
in questo momento lo facciamo
collegando il client al server e
ora abbiamo un sacco di diversi
canali che possiamo registrare così qui
stiamo scegliendo un canale che è se
abbiamo un’applicazione di chat su questo canale
sarà la lobby quindi la LOB è
sarà il luogo in cui tutti gli utenti
sono in grado di inviare messaggi a vicenda
o iniziare una conversazione privata o
qualcosa del genere quindi posso dire bene
per la lobby del canale qui per la chat
Lobby ogni volta che un nuovo utente si unisce
per stampare sullo schermo hey questi nuovi
l’utente si unisce così ogni volta che lo ricevo
evento dal server che il nuovo utente
unisciti voglio mostrarlo ogni volta
c’è un nuovo messaggio che voglio stampare
quel nuovo messaggio e vogliamo anche farlo
l’opposto giusto quindi per esempio tu
voglio ascoltare il to a input e
dillo bene ogni volta che l’utente preme Invio
Voglio mandare questo messaggio a Matt
tutti così tutti possono riceverlo
messaggio e poi quando si specifica il tuo
regole in fondo qui chiamate
canale di join in modo che il client va bene
e poi il server che stiamo facendo due
passi ecco che possiamo vedere che abbiamo
due dita abbiamo la presa e noi
avere il canale così nel server che siamo
andando a definire il socket e qui è
un po ‘di Alex, il tuo codice, quindi di solito ci rompiamo
il nostro codice all’interno dei moduli e così siamo
dicendo hey ho questo socket utente che
sta per essere una cosa phoenix socket
e ogni volta che qualcuno sta cercando di inviare
per connettersi a questo canale di chat room
Voglio gestire questa logica in questa chat
modulo canale amore punto e ogni volta
qualcuno vuole inviare un messaggio o entrare
in una stanza che voglio gestire quella logica
in quell’altro canale e naturalmente
specificare il canale mi dispiace I Francis di
il socket possiamo implementare il nostro canale
quindi quello che faremo qui è che noi
segue la stessa struttura del
telefono ora stiamo definendo un altro modulo
che invece di dire usa Phoenix
la presa sta dicendo di usare un’ombra Phoenix
e ora definisco le nostre regole così per
esempio stiamo andando a definire ciò che è
succederà quando l’utente si unisce ok
quando gli utenti si uniscono alla lobby della chat cosa
vogliamo fare vogliamo trasmettere I
voglio dire a tutti ehi questo utente solo
uniti a destra e poi faremo
quello e dico hey voglio trasmettere su
il socket a cui queste cose si uniscono
e qui c’è lo username ogni volta
qualcuno invia un messaggio dal client
vogliamo gestirlo così ogni volta che
il cliente invia un messaggio a ciò che vogliamo
vogliamo trasmettere quel messaggio a
anche tutti e questo è quello che facciamo
sulla seconda funzione qui di seguito così noi
avere due funzioni una che gestisce a
parte congiunta e l’altra quella
gestisce tutti i messaggi in entrata no
preoccupati molto del codice élitaire
solo se non hai familiarità con esso
solo avere un’idea di come stiamo lavorando
con quelle preoccupazioni va bene e basta
ora quando ora con tutte quelle brevi linee
di codice che abbiamo scritto sul client di
il server abbiamo informazioni in arrivo
andando tra client e server così io
invece di esplorare molto del codice
aspetti voglio prendere la vista esterna
di questi e cercando di capire prima
come le cose stanno andando a lavorare da un
prospettiva esterna e poi come le cose
stanno andando a lavorare internamente e come perché
è importante per i nostri sviluppatori ok così
ci sono qualcos’altro giusto in questo
punto nel discorso quando mostro quelli
diapositive puoi vedere che non c’è niente
davvero nuovo, probabilmente useremo a
sentito parlare di altre soluzioni in altri
lingue o altri quadri di quel tipo
di fornire astrazioni simili ok così
potresti anche starti chiedendo qui cos’è
qual è il grosso problema con Phoenix loro
ok quindi rispondiamo a queste domande così così
La prima cosa è che così quando abbiamo il
server proprio qui a destra ora noi
avere un browser e abbiamo scritto
codice cliente abbiamo scritto la chiamata del sud
il codice del server e ora possiamo connetterci
il browser al server quindi il primo
differenza che abbiamo con Phoenix
canali è anche quello che diciamo che il
comunicazione tra il cliente e il
il server è agnostico di trasporto quindi per
esempio qui sta usando un browser ma se
stai usando qualcosa come un browser
come Internet Explorer che non lo fa
supporta qualcosa come WebSockets
devi avere un altro modo di
comunicare con il server che puoi
avere un’applicazione mobile nativa dove
hai esigenze personalizzate dove hey I can I
non voglio usare un WebSocket qui
perché ho un protocollo più efficiente
per fare questo genere di cose che puoi fare
quello pure o anche i dispositivi incorporati
quando parliamo di embedded
dispositivi a volte hai particolari
bisogni o protocolli particolari come la co-op
dove vuoi avere il cliente
comunicato al server e uno di
le cose belle di questo sono così
ora abbiamo un sacco di cose diverse
clienti che potrebbero essere in esecuzione diversi
piattaforme o utilizzando diversi modi per
parla al server e cosa è bello
su questo è che immagina che al
inizio ok lasciami tornare indietro ok
immagina che all’inizio qui tu
hanno solo un singolo server ok e poi
stai iniziando a ricevere più clienti
e abbiamo una specie di idea che questo sia
sta per essere efficace giusto perché noi
sentito parlare del caso Whatsapp e questo
tipo di cose proprio lì erano prosciutto
che erano in grado di gestire un mucchio
di connessioni ma alcune la maggior parte del tempo
non vuoi gestire tutto su a
server singolo perché se qualcosa va
sbagliato che tipo di scende per alcuni
motivo inaspettato è connesso a tutti
quindi cosa puoi fare con Phoenix e questo
funziona in modo trasparente
è che al momento ne aggiungi un altro
server quei server stanno per iniziare
a parlare tra di loro e gestire
tutto per te è che devo preoccuparmi
a proposito
per quanto ho immaginato che quel
il browser si disconnette e quindi perché
è così che non so andare sotto a
bridge o l’utente ha un problema Wi-Fi
e poi quando ritorna si connette
per l’altro server ora è tutto
andando a lavorare bene ogni volta il
il browser deve inviare un messaggio ok è
andando a inviare un messaggio al primo
server che parlerà all’altro
server che sta per far crescere la cache
per tutti i diritti e le maniglie di Phoenix
questo davvero bene e sta andando in scala
sia orizzontalmente che significa
avevamo più macchine che saremo
in grado di continuare a gestire il traffico
e sta andando anche a scalare verticalmente
perché abbiamo visto nel caso Whatsapp come
sai che arriveremo se avremo un potere
macchina con 24 core per 8 core come noi
aveva più connessioni a questo server
sarà in grado di gestire bene
giusto e il motivo è questo
che se guardi di nuovo come questo caso
qui dove hai i browser con a
un sacco di diversi dispositivi è esattamente
il caso stai parlando all’inizio
della parte superiore destra dove si ha
interruttori telefonici e poi hanno a
diversi gruppi di telefoni collegati e
questa è una delle cose che è molto
eccitante per Phoenix, proprio come noi
usando possibilmente l’ unica piattaforma il
solo la macchina virtuale che è stata progettata
gestire casi come questo giusto così
ampiamente utilizzando la produzione è stato progettato
la persona là è esattamente così e
Phoenix sta facendo leva che va bene così
questa è la vista esterna , quindi abbiamo un
idea di come gli effetti del client sul server
e come ci aspettiamo che sia in grado
gestire la scalabilità sia su
aspetti orizzontali e verticali ma
le cose diventano ancora più interessanti
la vista interna perché intendo che lo è
grande che scala ma se è un povero
astrazione per noi sviluppatori e tu sei
avrà difficoltà a scrivere il codice
non ne vale la pena, quindi abbiamo anche bisogno
considerare questo aspetto quindi parliamo
su come le cose funzionano internamente, così noi
stavamo scrivendo un software che corre urlando
macchina virtuale così quando scrivi a
piccoli programmi per esempio tutti loro
il codice viene eseguito all’interno dei processi e da ora
sul resto del discorso ogni volta che io
dire che il processo non mi ha reso operativo
processo di sistema voglio dire molto a buon mercato molto
esecuzione leggera di Radl quindi ne ho uno
idea nel caso di whatsapp ne avevano due
milioni di connessioni così avevano almeno
due milioni di processi vanno bene così possiamo
sì, molto economico , puoi creare un mucchio
di quelli e Phoenix fa esattamente questo
così quando il cliente che è qui sul
l’ultimo collega al server ciò che è
andando a visitare inizierà
processo che gestirà il
comunicazione tra il cliente e il
server e questo è il nervosismo
responsabile della gestione del trasporto
parte agnostica va bene e ora così è
cosa succede quando chiami socket
connettersi e ora ogni volta che ci uniamo a
canale
ok, hai intenzione di creare diversi
processi in modo tale che il lob della chat sarà uno
di quei processi ogni stanza che
particolare utente si unisce a sta per essere
un altro processo e il motivo per cui lo facciamo
questo perché i processi ci danno
isolamento e concorrenza, quindi questo è
bello perché ad esempio immagina quello
ci sei un bug nel tuo codice e
allora qualcosa va storto nella chat
lobby che non vuoi per l’altra
funzionalità della tua applicazione a
smettila di funzionare bene, vuoi quel problema
essere incapsulato solo su quello
canale particolare in cui ciò è accaduto
quando si parla di incorporato
dispositivi per esempio a volte
stabilire una connessione è costoso
quindi non vuoi un bug in un canale o
qualcosa di sbagliato in un canale in crash
il trasporto e il processo ci danno
l’ isolamento perfetto per scrivere questo codice
ci dà anche concorrenza così immagina
che tu per qualche motivo sei
elaborare un’immagine all’interno di uno di quelli
processo di canale in modo che qualcuno abbia impostato un’immagine
in una stanza particolare e poi sei tu
fare cose dentro quel canale che è
non andando a bloccare l’altro canale il
altri canali continueranno
lavorando nella stanza e il registro sta andando
per funzionare funzioneranno solo messaggi soddisfacenti
andate e andate bene, quindi è davvero bello
perché possiamo quando stiamo scrivendo il codice
a un canale particolare otteniamo davvero un
isolamento e concorrenza e ci vuole un
molte preoccupazioni per gli sviluppatori ci stanno bene
ho solo bisogno di pensare a un particolare
canale e non come sta interagendo con
l’intero sistema va bene e quindi quando
stavamo parlando del codice che abbiamo
questo ideale quindi avremo il
diritto di trasporto e connessione naturale
al trasporto stanno per iniziare a
mazzo di canali su cui ogni canale gira
processo separato che isolato in
concurrent e abbiamo anche un terzo
entità qui che è il sottosistema del pub
e questo è ciò che ci consente ogni volta
inviamo un messaggio a un particolare
macchina va a tutte le altre macchine così
il sub del pub si occupa di questo e di
di default usa compagnie aeree distribuite
qual è il motivo per cui è plug
e gioca mentre aggiungi le macchine Phoenix
il tuo cluster inizieranno
parlando tra loro perché Erlang ha
questa idea di distribuzione butene ma se
non puoi farlo in aria
il languore ha alcune preoccupazioni che puoi portare
il tuo pub / sotto mappa
– Va bene, era un breve
introduzione a Phoenix e alla storia
dietro di esso e puoi andare e tu puoi
saperne di più su Phoenix sul sito web
e in un modo che potrei tipo di piacere
interrompi il discorso qui adesso e tu
avere una buona idea di come è arrivata Phoenix
essere ma non è rappresentativo di
cos’è Phoenix oggi
Phoenix cresce molto più oltre il
aspetto del canale e questo era vero
definire il vapore si renderà conto che lo eravamo
in una posizione davvero unica perché nella nostra
esperienza fino a questo punto per la maggior parte di
la strumentazione per il web che ti hanno fatto
scegli bene che hanno da dire che hai
due opzioni o puoi essere produttivo se
ti daranno questo quadro
questo sta per avere un sacco di strumenti
da cui prendi un sacco di preoccupazioni
la tua mente, ma non sarà così
veloce o stai andando o puoi usare questo
opzione qui che è molto performante come
a lungo quando scrivi cose usando strani
callback che usano stili di callback o uno
particolare stile di programmazione
non si sente così bene e noi
capito che noi Phoenix non abbiamo bisogno
per farti scegliere, va bene
entrambi puoi avere un quadro che è
sta per essere eseguito quello che sarà
scalabile e si sta andando ad essere
produttivo con esso sia nel breve
termine e nel lungo periodo va bene così è
quello che voglio esplorare per ora per il
gran parte del discorso parleremo
un po ‘sulle prestazioni e
allora parleremo di
produttività sia a breve che a lungo
termine
così ho iniziato la performance perché eravamo
solo parlare di te conosce la scalabilità
e intorno a quest’area, quindi prendiamo questo
fuori mano quindi solo cosa che
dovrebbe essere curioso di sapere di cosa è il canale
prestazioni che potresti star stando chiedendo bene
mi hai detto che sai che whatsapp ha scritto
quella cosa e aveva due milioni
connessioni su una singola macchina
ma è vero si applica anche a
Fenice
siamo davvero curiosi della risposta
a quella domanda – così abbiamo deciso di farlo
punto di riferimento e qui ci sono alcuni grafici
abbiamo ottenuto quando facevamo benchmarking sul
asse orizzontale abbiamo tempo quindi cosa
stiamo facendo è che abbiamo creato un cluster
di macchine penso di nuovo che abbiamo 40
macchine che inviano l’apertura di nuove connessioni
ad un singolo server in modo che stavamo ottenendo
nuove connessioni
otto tra 10.000 nuove connessioni in su
a 20.000 nuove connessioni al secondo
va bene così puoi vederlo qui e poi
sulla verticale si sono accumulati
numero di clienti e puoi vedere qui
quello che stiamo spingendo si carica proprio come tutto
quelle 40 macchine per i loro clienti
l’apertura si connette al server che possiamo
tenere il passo bene fino a quando noi
arrivati a due milioni di connessioni così quando
abbiamo avuto modo di milioni di clienti è possibile vedere
che continuiamo a spingere il carico e poi
la stella nera del server star giace su
duemila e il motivo che accade
perché quando configuriamo la macchina noi
configuralo per aprire al massimo due milioni
connessioni così se in realtà abbiamo detto noi
voglio aprire cinque milioni di connessioni
continuerebbe ad andare che è veramente
bello e ok così bello che siamo in grado di ottenere
due milioni di connessioni su un singolo
tasso di macchina che lo riprodurrà
caso ed ecco come appariva la macchina
come va bene quindi è una buona macchina in
macchina con 40 core che non ricordo di me
penso che fosse 96 gigabyte di RAM o 120
gigabyte di RAM e puoi vederlo
quando arriviamo a milioni di clienti connessi
e non succede nulla che siano
non inviare alcuna informazione al nucleo
stanno solo aspettando qualcosa
accadere e poi quello che abbiamo fatto è quello
otterremmo articoli di Wikipedia e
trasmesso a quei due milioni di clienti
e abbiamo potuto vedere un picco nell’I / O e noi
potrebbe vedere l’articolo di Wikipedia
inviato a quei due milioni di clienti in
da tre a cinque secondi che è davvero
fantastico dolce e abbiamo buono
performance e più tardi nel parlare quando
Parlerò della produttività che sono
andando a mostrare esattamente come siamo in grado di
arrivare a quei numeri che non era
magicamente dobbiamo fare un po ‘di
lavoro e ho intenzione di dire quella stella
presto ma le prestazioni non si applicano solo
ai canali perché si ottiene un
essere in tempo reale in tempo reale sul web
scambiare messaggi tra client e
il server è un aspetto importante ma il
tutta la rete statica che non abbiamo oggi
web statico ma dinamico che abbiamo oggi ma
abbiamo solo richieste e risposte
per una parte enorme del nostro traffico proprio così
ti starai chiedendo se lo sto facendo
richieste HTTP HTTP regolari
è andare a cose
si sta esibendo – e la risposta è sì
aspetta fammi tornare indietro dopo
la gente si arrabbia con me così ho intenzione di farlo
mostra alcuni parametri di riferimento tra diversi
lingue e tecnologie e devo
avvia la dichiarazione di non responsabilità che non si fida
benchmarks okay
Ho intenzione di pubblicare i collegamenti di come quelli
esattamente le cose sono state misurate e il
repository che stiamo misurando ma
idealmente vuoi costruire un prototipo in
quelle cose che menziono sul mercato te stesso
avere senso che applichi quello di Charlie
caso che è che mi dispiace vediamo
alcuni numeri così puoi vedere qui che abbiamo
lingue diverse con differenti
le tecnologie di Phoenix sono costruite in cima
di una cosa chiamata plug che è molto
economico un ostacolo molto piccolo intorno a
web server in modo da vedere che la spina è il
più veloce per una macchina penso che il
la macchina aveva dieci barre che puoi avere di più
informazioni nella formazione dell’URL con
dieci macchine sono state in grado di ottenere 200.000
richieste al secondo e poi puoi vedere
che Phoenix arriva secondo davvero
vicino a una soluzione vanno con 180.000
richieste al secondo ciò che è veramente bello
di questo è che stiamo andando da
qualcosa che è molto piccolo
astrazione attorno al web server su un web
quadro e non stanno perdendo molto
di root va bene solo il dieci per cento quale
significa che quando aggiungi la tua logica
okay, non hai intenzione di influenzare
prestazione molto e così possiamo vedere
quello in cima al tavolo che abbiamo
le soluzioni in Alex qui vanno e alla Scala e
poi in fondo al tavolo che hai
una soluzione che viene da go e Ruby e
nodo okay ed è anche importante per
evidenzia qui che da questa tabella il
quelli che si definivano effettivamente web
quadri è Phoenix
giocando con Scala e rotaie così e
il motivo per cui lo sottolineo è
perché stanno facendo più lavoro per te
fuori dagli schemi sono preoccupanti
stessi sulla sicurezza e su questo tipo
di preoccupazioni dove sono gli altri strumenti
più come qui andare a costruire il proprio
un tipo di catena di cose e devono impostare
un sacco di celle così prima che finiamo il
sezione delle prestazioni quando abbiamo parlato
canali abbiamo avuto quella vista interna così noi
potrebbe capire come stanno andando le cose
internamente e come ciò influenzerà il
lo sviluppatore ora fa lo stesso per
richieste HTTP regolari solo per avere questo
idea di come le cose stanno lavorando all’interno
la macchina virtuale quando stiamo usando
Phoenix e stiamo ricevendo un sacco di
richieste okay, prendiamolo dentro
guarda di nuovo così sull’ultimo lato che abbiamo
il client sul lato destro abbiamo il
server e ogni volta che c’è un nuovo
chiedere cosa accadrà è quello
stiamo per iniziare un nuovo processo che
è che molto a buon mercato molto leggero
piuttosto un’esecuzione in modo da ottenere un sacco di
diverse richieste che stiamo appena iniziando
nuovi processi per gestire tali richieste
e come prima questi processi sono
ok isolato e concomitante e andiamo
guarda cosa significa ora nel contesto
di richieste web regolari va bene così
la prima cosa che abbiamo visto è che si blocca
siamo isolati, vogliamo farlo se
qualcosa va storto non abbiamo mai quest siamo
non voglio che influenzi tutte le richieste
giusto dovrebbe essere contenuto
richieste ma significa anche che i dati lo sono
isolato e questo è veramente buono perchè
significa che non abbiamo una fermata di
la raccolta dei rifiuti del mondo dipende
sulla piattaforma che stiamo usando
distribuisci applicazioni oggi puoi avere a
ottimo tempo di risposta in media
si sta andando a guardare la media si
dì hey, sto rispondendo 50 millisecondi
Sto rispondendo in cento millisecondi
giusto ma quando vai alla fine del
curva al nono percentile verso il
99 ° percentile stiamo iniziando a vedere
alcune richieste che stanno prendendo
un secondo e mezzo due secondi e
quelle sono le richieste sfortunate che
innescare i netturbini così loro
stanno iniziando a fermare tutto e
pulire così abbiamo Alex qui i dati sono
isolato così i processi che non fanno
condividere i dati tra loro che significa
loro non hanno fermato la parola
garbage collectors una garbage collection
che ci permettono di avere un’idea del
latenza diciamo che abbiamo prevedibile
latenza okay è facile prevedere come
la nostra applicazione si comporterà esso
significa anche che in alcuni casi quando tu
avere richieste rapide che non sprechiamo
cicli facendo garbage collection perché
immaginare che ci sia una richiesta di andare
fai tutto il necessario per te
rendi che tu lo invii al client
proprio come è fatto e dire hey the
la richiesta è fatta ho generato alcuni rifiuti
qui ma sai che non c’è bisogno di fare
camion della spazzatura e basta recuperarlo
non è necessario fare il segno di spazzare il contrassegno
generazioni o cose di sorta vanno bene così
è davvero bello e lo sono anche loro
concurrent che significa che stanno andando a
bilanciamento del carico di entrambi i / o e CPU voi
non è necessario scrivere callback o nulla
quello o niente di quel genere tu solo
dire che se una richiesta ha bisogno di parlare con
un’altra API ti basta parlare con un API tu
puoi inviare una richiesta esterna a a
servizio e non bloccherà
qualsiasi altra cosa va bene hanno bisogno di preoccuparsi
per quanto riguarda il bello è stata la performance
ora parliamo di produttività okay
e come ho detto mi piace rompere
produttività in due parti quindi la prima
uno è una produttività a breve termine che
sono davvero entusiasta di Phoenix e
vuoi provarlo giusto così come
produttivo hai intenzione di essere perché
è un nuovo è un nuovo quadro giusto
per coloro che non hanno familiarità con
Phoenix ancora, ma è anche una nuova lingua
ed è anche un nuovo runtime è un nuovo
macchina virtuale devi prendere un aereo
di alcune di queste cose, così come saremo
in grado di ottenere qualcosa in esecuzione così
puoi essere motivato e continuare
lavorarci su e continuare ad imparare
va bene, ma è anche a lungo termine
produttività che abbiamo bisogno di parlare
perché molti dei framework
Là
si preoccupano solo per il breve termine
diritto di produttività che è veramente veloce
per iniziare ma come si aggiunge complessità
come stai correndo quella finitura
la produzione inizia a rallentare voi davvero
giù va bene così la produttività a breve termine così
una delle cose come possiamo aiutarla
attività di copertura quindi una delle cose sono
ottima documentazione va bene molto bene
guide in Alex qui abbiamo un modo di dire
che ci piace che la recensione sia
la prima classe ha riservato del tempo
oggi in grado di parlare di fare un po ‘di live
codifica forse possiamo esplorare quello ma
è una documentazione di prima classe
perché dovrebbe essere facile da scrivere e
facile da leggere, quindi dovresti essere in grado di
accedere alla commutazione nel tuo terminale
nel tuo browser nel tuo editor e nel
due i due set ti permettono davvero di fare
quella
okay abbiamo una guida in clinica
siti che permetterà di ottenere
iniziato c’è anche molto riguardo a
flusso di lavoro e generatori che stai per
ne parliamo presto e c’è anche il
produttività a lungo termine e qui che cosa
Matt è che se gestisco il Fenian
produzione di destra vogliamo parlare
introspezione come posso vedere cosa è il mio
codice che ho messo in produzione di cosa si tratta
effettivamente facendo come posso dire che come
posso capirlo e come possiamo
mantenere la base di codice perché a volte
ne aggiungeremo funzioni saranno
migliorare le funzionalità che abbiamo già
schierato come possiamo farlo
attività membro così breve quindi se vai
la Phoenix una pagina web che ho pubblicato
prima lo vedrai lì
è un’intera sezione lì in alto con
guida la documentazione e abbiamo un ragazzo
che ti porta dall’installare tutto
che hai bisogno di iniziare Phoenix
al punto abbiamo anche un libro
è uscito sono uno degli autori
al fianco di Chris McCord che è il creatore
di Phoenix nello stato di Bruce , in realtà
avere il libro nella cabina lì così noi
avere un posto al di fuori del qui dentro
la recensione vestiti dove abbiamo
pranzo e mangiare e parlare tra loro
dove ci sono libri e vendita
il programma di programmazione a Phoenix è lì
quindi se vuoi prendere una copia e
se vuoi parlarne, lo sarò
anche in giro così i libri aiutano anche a
molto con l’imparare per iniziare
esperienza giusta a breve termine
relatività Ho menzionato i flussi di lavoro e
generatori quindi una cosa che sta per
accadere è che si sta andando per iniziare
costruire questa applicazione e dire hey
quello che effettivamente devo fare è che io
bisogno di costruire un paio di moduli, ad esempio
o un paio di risorse dove ho bisogno
ottenere informazioni dal database mostra
per l’utente consentire all’utente di cambiare
così se è quello sono casi
preoccupato che tu possa eseguire il primo
comando che è mix Phoenix gent HTML
così mix è un tool di creazione che abbiamo in
Alex Siri e tutto quello che fai
con il mix quindi crea una nuova Phoenix
l’applicazione lo fai con la compilazione del mix
il tuo codice prova il tuo codice e tu
può anche usarlo per generare da avere
quei flussi di lavoro che ti dicono come
costruisci le cose quindi se ti interessa
per esempio gestendo più lato dhtml di
cose che puoi eseguire il primo comando ma
se sei interessato a costruire un’API
okay, ci sarà da parlare con Jason
con diversi client puoi eseguire a
secondo comando e stiamo andando a
generare del codice e lo dirò
un po ‘ su come funziona come
dovrebbe collegare tutto insieme e
poi progredisce sull’aspetto del canale
Stavo parlando prima hai appena eseguito questo
altro comando per la creazione di canali ok
quindi sulla produttività a breve termine e
di nuovo come tutte quelle cose che abbiamo
visto altrove destra abbiamo visto altri
quadri o rapporti che hanno come
che che hanno caratteristiche come quello che
permettigli di generare del codice e ottenere
iniziato e diventare produttivo presto e
tutte quelle cose che hai visto
altri quadri che vedrai
quelle cose a Phoenix vanno bene così ero io
parlando di HTML una delle cose che ho
è necessario essere in grado di ottenere dati
dal database mostrare all’utente
consentire all’utente di cambiarlo e ottenere questo
dati indietro così abbiamo i costruttori di moduli che
si prendono cura di che se si è
in particolare la costruzione di applicazioni HTML
non c’è modo di scappare da te
bisogno di scrivere qualche JavaScript che ti serve
scrivere dei CSS o scrivere
qualcosa che compila in JavaScript o
CSS composito quindi Phenix ti consente di
prenditi cura di questo, ma ne hai anche alcuni
caratteristiche davvero belle delle nostre così per
esempio una delle caratteristiche che viene
con Phoenix è in diretta ricarica così se io
lavora in un’applicazione e poi tu
cambia il file CSS o cambia a
modello non appena lo salvi usiamo
i canali fenice di cui stiamo parlando
per ricaricare automaticamente la pagina e
questo ti dà una grande produttività
flusso di lavoro a volte se stanno lavorando
qualcosa di particolare dove hai un
per me fare clic su tre posizioni e poi
apre il modello e è necessario
personalizzare quel modello è davvero dolce
perché cambi il file CSS e tu
vedere che il cambiamento si riflette su una pagina e
se non hai quello che ti serve
ricarica la pagina fai tutto il flusso sul
forma di nuovo scoprire cosa c’è di sbagliato
va bene così una caratteristica davvero conveniente
vivere ricaricando
se qualcosa va storto abbiamo davvero
belle pagine di debug che consentiranno
tu per vedere dove sta accadendo e
IO connetterti non solo a ciò che amo
questa caratteristica concorrente di prima classe
strumenti per le attività così tutte le cose che facciamo
è che noi se scrivo un’applicazione noi
spero che tu stia scrivendo dei test ma quelli
test a volte hanno bisogno di parlare con il
database in modo che abbiamo
un meccanismo può effettivamente scrivere test
che parlano al database e quelli
test che stanno eseguendo contemporaneamente questo
molte di queste idee riguardo al
commutazione come prima classe
documentazione di concorrenza di prima classe
il passaggio di prima classe viene dal
altra macchina virtuale e Alex qui io
Mi piace dire che è tutto 2016
lo fai oggi nelle tue macchine
usare tutti i core come il mese scorso
Apple ha annunciato che l’orologio di Apple
vero e il tuo orologio da polso può avere due
core proprio così tutto ciò che facciamo in a
macchina dovremmo usare tutto il
risorse disponibili e in galassia ci sono
andando a farlo compresi i tuoi test
va bene così che conta molto e anche noi
abbiamo una comunità in crescita che abbiamo
qualcosa chiamato hack che è un
gestore di pacchetti e se qualcuno ha
risolto il problema se si sta lavorando
un problema che qualcuno ha risolto è possibile
usa i loro pacchetti integrare come parte di
la tua domanda quindi è a breve termine
produttività così tante cose che
ci hanno visto dove sono solo
lì a Phoenix e un altro paio
quindi ora voglio parlare dell’altra
parte ho citato che è il lungo termine
produttività e avevo separato due e
questa parte aveva due sezioni okay così uno
della prima parte della prima sezione
riguardava il modo in cui alex è funzionale
linguaggio di programmazione ed era circa
in che modo la programmazione funzionale può aiutarti
scrivere più applicazioni tangibili
ma ho intenzione di saltare questa parte okay per
adesso
possiamo parlarne alla fine del
parlare perché voglio mettere a fuoco e fare un po ‘
codifica dal vivo sull’altro aspetto di lunga durata
attività a termine che è qualcosa che noi
chiama le applicazioni okay, così sta andando
di essere l’ultima sezione del discorso e mi
voglio andare veramente in profondità in questa parte
perché come promessa è molto il
traccia lingua che voglio esplorare a
un po ‘come tutto funziona dentro
la lingua all’interno della tua stessa macchina
applicazioni di relatività a lungo termine
Quindi, al fine di capire che cosa è
applicazioni e come otteniamo a lungo termine
produttività da questo voglio tornare indietro
a quella vista interna stanno parlando
va bene quindi abbiamo il cliente qui sul
a sinistra e poi abbiamo il server sul
giusto e poi abbiamo parlato di ogni
tempo il
il client si connette al server otteniamo a
nuovo processo giusto e poi diciamo
in realtà si sa più client sono
agendo allo stesso tempo, quindi stiamo andando
avere un sacco di diversi processi
e puoi immaginarlo per tutti quelli
processi avremo un processo
in alto a destra è un po ‘ come
gestendo quelle connessioni per noi uno di
le cose che ho menzionato per tutti i discorsi
che abbiamo anche avuto un problema di processo
era responsabile di pubsub, quindi ogni
tempo inviamo un messaggio a una macchina noi
in qualche modo bisogno di portare quel messaggio a tutti
dei tuoi cluster in modo che possano trasmettere
quello ai clienti che sono connessi
a una macchina particolare un’altra parte di
il tuo cluster quindi abbiamo un pub / sub
processo per quello anche e ora quando noi
inizia a sapere quando ci sentiamo
importo di Ercoli dobbiamo pensare
quei processi che sono molto economici
molto leggero e sono in esecuzione
simultaneamente e isolati iniziamo a
pensa bene abbiamo tutti quelli
entità come nel nostro codice ora
quelle connessioni abbiamo questo pub / sub
elaborazione e iniziano a iniziare
chiediamoci come va bene, ma che cos’è
succederà come se quei processi
sono indipendenti e isolati cosa
sta per accadere se il sistema Pubub
va male se l’essere responsabile di
riempire le masse in tutto il cluster
c’è qualcosa di sbagliato in quel codice
in quel particolare processo, okay
inizia a fare quelle domande come è
succederà nella mia domanda se
qualcosa va storto
quindi la nostra risposta a questa domanda è questa
definiamo supervisori e cosa
i supervisori ci permettono di perdere gli adulti
per dire hey tu guardi quei processi
qui e se qualcosa va storto così
sei pronto a supervisionarli e se
qualcosa va storto voglio che tu reciti
su di esso quindi se qualcosa va storto
il sistema di pubblicazione / sottosistema è il supervisore
andando a notarlo e iniziare una nuova
pub / sottosistema e il suo posto e perché
questa idea è importante giusto perché lo è
rilevante per cui presidente siamo a volte
Sto usando stiamo usando le nostre macchine e
qualcosa inizia ad andare come c’è
fornaio in un angolo dello schermo mai
come quello che sta succedendo e poi vai
Riavvia la nostra macchina e quella cosa
scompare non tornare più
quando abbiamo avviato la macchina , risolvi il problema
problema e questa è esattamente la stessa idea
stiamo applicando a questa parte del codice noi
stanno avendo un supervisore che sta per
supervisore del sistema pub / sub perché se
qualcosa va storto va bene prima
questo incidente pub / sub eaton pub / sub entity
perché il supervisore sta per iniziare
un altro per correre al suo posto ok e
e questa è l’idea a cui iniziamo
esplorare in modo che possiamo vedere che a volte
hanno processi che ne hanno
i genitori che è un supervisore che ha
qualche altro supervisore di un modello di Tesla
supervisore quindi questo finirà per essere gentile
di un albero di controllo e poi quando noi
avere un albero di supervisione che impacchettiamo
tutto all’interno di un’applicazione ok così
questa è un’applicazione quando hai un
albero dei processi su cui stanno lavorando
diverse funzioni e poi metti
tutto in un pacchetto quindi cosa
le domande ci danno l’ altro giorno ok
quindi ci danno un meccanismo per impacchettare
ed esegui il nostro codice così ogni volta che sei
è la creazione di un’applicazione Phoenix
in realtà questo Alex è la tua applicazione
dove impacchetta tutto ciò che ha tutto
il codice e le applicazioni possono essere avviati
e fermarlo come unità e applicazioni
fornire anche la configurazione unificata
questo è bello
perché se sai come lavorare su uno
applicazione e come è fatta
e come è iniziato e come
configura che sai come scoprirlo
come vengono avviate tutte le applicazioni e come
tutte le plicazioni sono configurate correttamente e
abbiamo anche avuto questa idea perché quando ero
mostrando questa diapositiva qui dove abbiamo
l’ albero di supervisione giusto se il
l’applicazione contiene tutto il
processi giusti ha che ha tutto
che la nostra parte più fredda di ok così facciamo
questo potrei andare avanti e dire di cosa
l’applicazione riguarda il processo
stato nell’albero di supervisione ma penso
Sarò in grado di guidare quelli
punti a casa molto più fortemente se lo faccio
una vera diga ok quindi facciamolo
Tutto ok
ecco può perfezionare così quello che ho intenzione di
fare qui è che sto andando così ho
creato questo progetto Phoenix prima di così
Ho intenzione di iniziare e quello che sto andando
fare è perderlo quindi ecco qui
shell alligatore interattivo con il mio
L’applicazione di Phoenix che corre qui posso
Digita un codice di elisir che voglio ma uno di
le cose che ho intenzione di fare qui sono
che ho intenzione di avviare questo strumento chiamato
osservatore che ci permette di vedere cos’è
succede nel nostro sistema okay così
dopo aver eseguito quel comando è iniziato questo
la bellezza qui e l’ osservatore ci danno un occhio
tutte le informazioni di cui abbiamo bisogno su questo è
quel particolare in tempo così dice quello che
è la versione di sistema che sto utilizzando
quanti core ho sulla mia macchina per
quanto tempo è in esecuzione quanti
processori ha funzionato in questo momento e
tutto questo tipo di informazione e anche
utilizzo della memoria e dove le memorie sono
situato e questo tipo di cose anche noi
caricare i grafici ma l’ho appena iniziato
l’applicazione che nessuno sta effettivamente inviando
richieste ad esso quindi non è interessante
sta per succedere qui e abbiamo un mucchio
di altri riquadri diversi che potresti
esplora la cima in alto che voglio
parlare di due in particolare, quindi il
il primo è il processo uno va bene così io
stava dicendo come ogni volta il cliente
si connette al server iniziamo un nuovo
processo molto sagomato molto
leggero diritto di esecuzione e in
tutto il nostro codice tutto il codice che noi
scrivi in Alex Siri tutto ciò che fai
a Phoenix sarà sempre in esecuzione
all’interno di un processo e in questa scheda qui
la scheda del processo elenca tutti i
processi che stanno eseguendo questo
sistema particolare e poi tutto
questo è qui e poi posso venire e io
puoi fare doppio clic su quelli e provare a
capire cosa ciascuno di questi
processi che stanno facendo e possiamo fare a
molte cose meravigliose con questo così se
potete vedere qui in alto uno dei
le cose che abbiamo, ad esempio, sono come
molta memoria ogni processo sta consumando così
per lavorare con questa applicazione e lì
è una perdita di memoria come la memoria sta crescendo
c’è qualcosa di sbagliato accadendo in uno di questi
i modi in cui puoi fare per risolvere questa memoria
la perdita è aprire l’osservatore o lo sono
qui da
consumo di memoria va bene e vedere quale
processo sta aumentando la memoria continua
continuando ricordiamo che probabilmente è
sta per diventare il migliore della festa
investiga e poi puoi venire tu
puoi fare doppio clic su quel processo e dire
hey fammi vedere cosa è questo processo
facendo esattamente quale parte del codice è
gestendo cosa è stato e così via
ok, così meraviglioso ricordo che ero anche io
raccontando di Phoenix che erano in grado di farlo
riproduci il caso whatsapp o un gap 2
milioni di connessioni su una singola macchina
la verità è quando abbiamo iniziato
benchmarking il primo punto di riferimento che
abbiamo corso quando abbiamo creato le macchine per
loro per tutti quei 5 secondi del
server siamo stati in grado di gestire solo un
30.000 clienti ok e poi diciamo oh
non possiamo spingere più in basso non c’è
qualcosa di sbagliato sai come risolviamo
quel problema apriamo il nostro server web
connettersi al computer remoto che apriamo
osservatore e poi siamo venuti qui e cosa
abbiamo fatto è che abbiamo ordinato da questo
messaggio cue column ok, quindi cosa?
la colonna del messaggio cue dice che è tutto
tempo necessario a un processo per parlare con ciascuno di essi
altri inviano messaggi e se a
processo non può agire velocemente su quelli
messaggi a cui inizia il messaggio kiwi
crescere e questo è quello che abbiamo fatto siamo venuti qui
ordiniamo in base alla coda dei messaggi e potremmo
vedi che c’è stato un processo molto
di persone stavano provando molti altri
i processi stavano cercando di parlare ma questo
non poteva tenere il passo era un collo di bottiglia
era letteralmente un collo di bottiglia quindi dico hey
Io so dove siamo andati
lì rimuoviamo il collo di bottiglia e poi
siamo in grado di ottenere più clienti e poi
abbiamo di nuovo il punto di riferimento abbiamo archivato il prossimo
collo di bottiglia esattamente allo stesso modo e
siamo in grado di ottenere più clienti che abbiamo fatto
questa o due altre volte ed erano
e sono stati in grado di arrivare a 2 milioni
connessioni ok perché tutto il codice è
correre dentro quei processi e abbiamo a
un mucchio di introspezione su ciò che possiamo
fai qui
quindi la scheda del processo è davvero molto bella
ma il mio preferito è l’applicazione di
pugnalata e stavamo parlando di
applicazioni ok, quindi ricorda l’idea
dietro l’applicazione è che possiamo
impacchetta il nostro codice in tutti i processi
ok e sono contenuti e quando noi
eseguire un’applicazione nella VM non è così
avere solo un’applicazione che esegue noi
avere
molte applicazioni in esecuzione side-by-side
vogliamo pensare a loro di pensare
su di loro come componenti va bene così qui
puoi vedere tutte quelle applicazioni che
stiamo correndo quando iniziamo Phoenix così noi
avere cowboy che è il nome del web
server e poi abbiamo cose come
Alex Erie elisir stesso è un
l’applicazione Phoenix stessa è un’altra
applicazioni e così via e si può vedere
qui gli alberi di controllo proprio ciascuno di
quelle applicazioni hanno loro
alberi di supervisione e potresti andare e
esplorali se vuoi masticare ma il
Quello che voglio parlare è la la
albero di supervisione che fa parte del tuo
applicazione stessa e questa applicazione
si chiama demo e qui possiamo vedere il
albero di supervisione quindi tutto ciò che è
succede la tua applicazione puoi venire
e navigare attraverso questo albero così uno di
le cose che possiamo fare qui è così se
hai un’applicazione web una delle
cose che probabilmente stai facendo
applicazione sta parlando con un database e
il modo in cui la maggior parte delle lingue
parlare al database è che hanno un
pool di connessioni, quindi quando la tua applicazione
inizia aprendosi come 10 connessioni
contro il database e ogni volta che
vuoi eseguire una query o scrivere qualcosa
ottieni una connessione per la piscina e
scrivi a quella collezione e possiamo
vedi che qui nel nostro albero di supervisione così
questo è ciò che abbiamo quindi qui abbiamo il
pool di connessione al database al nostro
repository e puoi vedere qui tutto il
le connessioni al database vanno bene
sono tutti rappresentati da quei processi
qui così questo numero quei numeri
tra i disegni sono il processo
identificatore c’è un numero che
identifica il processo quindi non quello che noi
possiamo vedere quelle cose qui che possiamo provare a
ragione cosa succederà quando
le cose vanno male perché quello era uno di
il motivo per cui abbiamo aggiunto supervisori e
quando abbiamo iniziato a parlare
alberi di supervisione perché hai tutto
quei processi e noi vogliamo provare a
capire cosa succederà quando
qualcosa va storto nel nostro sistema quando
qualcosa va storto con il pub / sub
processo o quando qualcosa va storto e
parlare al database in modo che tu possa fare
ecco come immaginare che in uno di
quei processi che sta parlando di database
immagina che qualcosa vada storto e
il database si spegne, si chiude
la connessione per esempio o qualcosa del genere
altrimenti succede che possiamo effettivamente raddoppiare
fai clic sul processo e dì che voglio uccidere
questo processo e quindi inviamo una stecca
messaggio così perché stiamo parlando
supervisori cosa
ci aspettiamo di succedere qui che siamo
mi aspetto che un supervisore se ne accorga
quella della connessione al database è
non c’è più ok va bene
notalo e inizia un altro nel suo
posto e possiamo vedere questo che è esattamente
quello che è successo ora qui in cima a noi
avere un nuovo processo con un nuovo identificatore
perché sono quelli che possiamo effettivamente
essere ancora più radicali e dire hey e se
c’è un bug nel nostro pool di connessioni
okay, e se fosse qualcosa?
sbagliato nel pool di connessione e quello
l’intero processo è responsabile della gestione
quelle connessioni falliscono possiamo venire qui
possiamo fare doppio clic e dire ok, voglio
per chiudere questo processo e vedere se il mio
il sistema può reagire a quel fallimento se il mio
il sistema può auto-guarire e possiamo vedere
questo è esattamente quello che succede qui, va bene così
Ho la mia piscina e ora e ora perché
quella piscina è su tutte le connessioni
sono stati interrotti, il che non va bene
avere connessioni persistenti proprio tutto il
le fazioni sono terminate e abbiamo iniziato
nuove connessioni al database ok così
tornando al discorso così invece di
passando attraverso noi, così tipo di vedere
tutto ciò che un’applicazione può fare
a destra i pacchetti sono codificati ha a
albero di supervisione che lo consente
esplorare ma al giorno giusto
non importa molto per noi, proprio quello che noi
voglio fare è vogliamo sapere quale
garanzie che otteniamo da questo e dal
garantisce che otteniamo è che abbiamo un
molta introspezione e monitoraggio
giusto se i nostri sistemi sono in produzione
puoi davvero collegarlo a quello e
capire tutto ciò che il nostro sistema è
facendo da ciò che il server abbiamo un
idea di tutte le metriche che possiamo
effettivamente ottenere dalla macchina virtuale
giusto così se vuoi puoi ottenerle
metriche e spingerle all’esterno
sistema in cui puoi seguirli
metriche e vedere come è il tasso di
processo fallimenti e tutto il resto
informazioni importanti per sapere come è il
pressione che ho nel sistema REO come
sono i ricordi che ti sono stati assegnati
non è necessario affidarsi all’osservatore
l’osservatore usa solo le informazioni che sono
è nella VM e puoi usarlo
esporta 20 sistema che vuoi ci dà
visibilità dell’intero stato di plicatura
come abbiamo visto potrebbe andare nell’albero o noi
potrebbe fare doppio clic sulle cose e interagire
con quelli
è anche molto facile da penetrare
componenti e quella roba in cui esploriamo
il libro immaginare che si sta lavorando
il tuo progetto Phoenix e poi abbiamo iniziato
aggiungendo più processi all’albero giusto
e questo è un punto di dire bene questo
la cosa sta facendo troppo bene, dobbiamo farlo
rompere lo distingue uno dei modi per rompere
a parte è stampare la supervisione
inoltrare la tua emergenza e dire hey cosa è
modo di accadere se ottengo questa parte del
albero e spostalo altrove così puoi
prendi un ramo per esempio e spostalo
altrove puoi ottenere una sottostruttura e spostarti
altrove e rompere la nostra applicazione
a parte e ci dà anche il ragionamento
quando le cose vanno male, per riassumere questo
è un discorso su Phoenix e cerco di fare
un mix non parla solo di Phoenix
quindi Phoenix è un framework web che è
sarà produttivo affidabile e veloce
e viene con questo modo di avere il
canali dove posso avere multipli
connessioni tra client e server
e avere informazioni che arrivano tutte
il tempo ma non solo quello è acceso
parità con qualsiasi cosa abbia usato finora
per fare web in termini di costruzione di API
costruire applicazioni HTML e in alcuni
attacchi siamo ancora meglio perché noi
può integrare nuove funzionalità con Phoenix
canali in modo che questo sia un aspetto del
parla bene di come possiamo usare entrambi Phoenix
per il nuovo web che è questo altamente
aspetto collegato con i canali ma anche
per esempio diciamo il web tradizionale
è qui da un po ‘e ci provo anche io
per esplorare la fondazione fare il bagno
battaglia collaudata tecnologia che Phoenix è
costruito sopra e come sta facendo leva
davvero il fondamento che è lì per
tre decenni che è stato costruito con Derril
nella macchina virtuale e poi costruito sopra
per elisir quindi se vuoi saperne di più
su Phoenix puoi visitare la pagina
crea quel pulsante enorme puoi anche provare
il libro della fenice, come ho detto loro
vendendolo nello stand lì quindi se tu
voglia di afferrare la vostra copia ora si prega di farlo
e se vuoi parlare solo di questo
ping me sarò in giro se vuoi
saperne di più su questi altri aspetti
esplorato sui supervisori delle applicazioni
o sull’elisir in generale puoi anche
vai al sito web Electra Electra – lang
org
che abbiamo una guida che sta per
ti permettono di esplorare la lingua no
solo gli aspetti fondamentali, ma il
la maggior parte degli aspetti più avanzati anche noi
avere due ragazzi in particolare uno che è
il ganiano ha iniziato di per sé e l’altro
uno che è chiamato mix e OTP che è
andando a esplorare circa effettivamente la costruzione
un’applicazione un’applicazione distribuita
e abbiamo anche un sacco di libri per
Alex qui se vai al sito web c’è
anche una sezione di apprendimento nel menu
dove abbiamo libri screencast e
materiali diversi per imparare
c’è anche un’iniziativa chiamata Alex’s
scuola che insegna elisir in un gruppo di
lingue diverse non so se loro
avere una traduzione per l’iniziato ma
se non qualcuno potrebbe iniziare su quello
e quello sarebbe meraviglioso e finalmente
Voglio ringraziare la mia azienda terraforma
attacco noi siamo quelli che hanno costruito e
elisir progettato e anche noi
contribuendo attivamente a Phenix quindi se
siete interessati ad avviare con Alex
orecchio e avere un po ‘di coaching o purezza
esegue il grazioso edificio il suo
applicazione e hanno qualche tipo di
e hai bisogno di un po ‘di revisione del design o
revisione architettonica faccelo sapere
basta mettersi in contatto ok e basta
Non mi parlare di Phoenix grazie siamo
avere domande che ho dimenticato di dirti
può inviare mode per tutto il discorso
quello era il mio cattivo ma sì, quindi come va?
Phoenix rispetto ad altri web in tempo reale
quadri che lo usano Perley javascript
un esempio potrebbe essere la meteora, quindi questo è un
domanda molto ampia mi piace come la confrontiamo
su ogni aspetto quindi per se lo sei
pensando in termini di prestazioni
stiamo andando molto meglio
performance con Phoenix ma se lo sono
cercando di lavorare se sei preoccupato
alcuni concetti tra le prime scuse
caratteristiche meta o meteora è la condivisione
tra client e server e quello è
qualcosa che non hai intenzione di ottenere
con Phoenix, ad esempio, ma possiamo farlo noi
avere altri compromessi positivi in altri
aree come
avere più flessibilità quindi i media o è
un po ‘ come hey che devi usare io no
sapere se essi permettono di qualcosa di diverso
di Mongo a questo punto, ma lo sono
più rigido in termini come se non volessi
per fare questo tipo di difetto modo giusto
non ho molte opzioni in
io o mentre le cose ti danno di più
flessibilità da sospettare quindi sì, lo so
questa è una buona domanda cosa succede se
il supervisore si blocca giusto è il
famoso quello che supervisiona i supervisori
quindi di solito abbiamo un albero di supervisione
giusto che significa che a volte il
supervisore hanno supervisori
loro stessi bene e poi quello che puoi
penso bene a questo punto vado
per andare in cima all’albero e poi
qualcosa che vogliamo è quell’essere
fallisce quindi ci sono due cose che è
succederà qui in modo che il primo è
che il supervisore è stato freddo
in esecuzione in produzione per come due
decenni ed è come se fossero davvero
conservatore abbiamo modifiche al
codice supervisore in modo che il supervisore di
distribuire dovrebbe essere molto molto
affidabile, credo che abbia un
idea del cinquanta o cinquantacinque percento
di tutto il traffico pre G in Europa
attraverso il nostro link cambia così tu sai
c’è questa parte del codice che è
davvero ben collaudato e la cosa è questa
se metti l’ albero di supervisione a posto
all’interno della tua applicazione abbiamo questo
cosa chiamata controller dell’applicazione
che è quello che si riavvia a
albero di supervisione che è anche molto
testato in battaglia ed è stato in esecuzione a
tanto quindi l’idea è che ce ne siano alcuni
freddo proprio lì che non dovrebbe fallire
giusto ed è stato davvero testato
non fallire e ti affidi a quello che ho fatto io
esempio con la macchina proprio come te
sapere quando quando qualcosa va storto noi
avvia la nostra macchina e torna a
lavoro a volte il problema non arriva mai
indietro e la ragione per questo è perché
sai chi sta costruendo la nostra macchina
testano davvero le istruzioni di avvio
perché entrambe le strutture di avvio se
hanno torto, quindi è una partita finita
non c’è se puoi farlo è a
concetto simile applicato qui così Oh
quindi questa domanda è più specifica a
qualcuno che sta già usando Phoenix così
cosa accadrà nella prossima versione di
Phoenix ha in programma di costruire
autenticazione al framework così
questa è una buona domanda, quindi non c’è
qualcosa di cui non ho parlato non l’ho fatto
menzioni qui ma l’ultima Phoenix
rilasciato, che è abbastanza recente è stato nel
Giugno ora che era Phoenix sul
masticando per introdurlo processo di Phoenix
in presenza di Phoenix è un modo per voi
saperne di più se hai un anello o se
hai un canale o un canale di gioco
qualunque cosa sia collegata a questo
il canale di Phoenix è davvero bello
perché stiamo usando il tutto
distribuzione di cui stiamo parlando quindi se
qualcuno si unisce a questa macchina che diffondiamo
quell’informazione così tutti nel
altre macchine possono sapere che ti sei iscritto
in modo da poter tenere traccia di chi è presente su ciascuno
canale e funziona completamente
decentralizzato basta scambiare informazioni
tra le macchine non è necessario fare affidamento
sul database non è necessario fare affidamento
o modificare o aggiungere su Redis e cose simili
questo è qualcosa che abbiamo solo
lanciato e ciò che stiamo progettando
Phoenix 1.3 è così c’è una cosa
che abbiamo ereditato da altri quadri
rotaie, come e cercherò di mostrare questa
molto rapidamente ho tre minuti che
è se vai a se vai al tuo
Applicazione Phoenix oggi sto andando a
aumenta il codice che puoi vedere qui
è questa directory web al qui orso
sul lato sinistro va bene il
struttura della directory e quindi abbiamo a
qualcosa chiamato modelli che è ogni
tempo abbiamo bisogno di avere qualcosa di simile
interagisce così come il database come hey I.
voglio diventare come ho un utente e io
vuoi ottenere il nome per cognome
e l’età dell’utente dal database in
questa cosa così ho chiamato questa cosa
modelli e le cose che abbiamo dentro
modellano oggi il modo in cui funzionano
loro tipo di mappa direttamente ad avere un
database ma questa è una pessima idea e
perché è perché immagina di essere
hai appena assunto – per esempio – un nuovo
società e su cui lavorerai
la loro applicazione quando apri il web
modello di directory che stai andando
vedere
tutti i file che stanno per avere
lì vedremo loro la tua volontà
per vedere queste strutture che sono
supposto per abbinare il database e quello
non ti dice nulla su cosa
quell’applicazione fa la sola cosa
che in realtà sta dicendo che è quello
hai intenzione di avere quelle cose nel
banca dati e come essi corrispondono alla
database come dà un’idea del tuo
struttura del database ma se volessi
conoscere la mia struttura di database vorrei andare
e controlla il database a cui non andrei
la mia applicazione così altre cose che noi
stanno facendo è dove vogliamo spingere
gli sviluppatori a pensare di più sul contesto
vero no e ce n’è un altro
problema grosso problema con questo che è
che qui già al lavoro su applicazioni
dove avremmo come i modelli o
quelli che chiamavano modelli che avevano 50
campi 100 campi possono identificare qualcuno
con quello tutto bene giusto e perché è
è perché non ci pensiamo
contesto qui giusto abbiamo solo questo
cosa utente e sono come oh credo
questo è legato all’utente che tu provi a
spingere tutto in un posto così io
volevo pensare al tuo contesto
non avere un utente in ogni zona l’utente
quale parte dell’applicazione lo fa
riguardare riguarda i conti
sistema riguarda quel sistema educativo
quindi vuoi che tu pensi a quelli
contesti e rompere le cose in contesti
in modo che quando si sta venendo a applicazione
posso dire hey questa cosa riguarda gli account
si tratta di acquisti riguarda il pagamento
giusti e talvolta diversi contesti
hai intenzione di avere utente che sta per
essere distribuito in diversi contesti
giusto perché l’utente che sta pensando
sull’autenticazione le colonne sono
sull’autenticazione dovrebbero essere su
la parte di autenticazione o in
parte autorizzazione tutto ciò che è
relativo al pagamento degli utenti dovrebbe essere
altrove non dovrebbe essere tutto
accoppiato in un posto così quelli sono
caratteristiche per le quali stiamo esplorando
Phoenix 1.3 e la buona notizia è questa
quei cambiamenti saranno per lo più fatti
i generatori quindi se inizi a usare
Phoenix oggi è tutto il tuo codice è
andando a rompere con la prossima versione no
è solo che quando stiamo parlando
generatori perché come abbiamo detto sono
strumenti di apprendimento vogliamo spingere le persone
verso la giusta direzione in modo che possano
ragionare meglio sulla loro applicazione
Va bene, non avremo avuto un mucchio
di altre domande
ma non posso rispondere a tutti loro così, lo farò
essere in giro, vieni a fare domande
anche se vuoi adesivi che non ho
Adesivi di Phoenix ma ho elisir
adesivi se si vuole così venire in giro
vieni a parlare, sarò lieto di rispondere
qualsiasi cosa grazie
parlerà di Phoenix sul web
quadro ma ho intenzione di esplorare
la fondazione che Phoenix è costruita su
in cima solo per avere una foto mostra di mano
chi ha sentito parlare di Phoenix prima
va bene e chi non ha sentito parlare di Phoenix
ma almeno sentito parlare di Alex vedo lo so
che Alex qui è una cosa dentro
linguaggio di programmazione va bene così
ci sono tre cose che dobbiamo sapere
abbiamo solo bisogno di sapere le parole che sto andando
per esplorare tutte quelle cose così Phoenix
è il framework web in cui è scritto
l’ Alex è un linguaggio di programmazione e funziona
in cima alla prima macchina verticale
okay e l’altra macchina virtuale se
tu inizierò con la storia alle spalle
Phoenix e ha sempre iniziato con il
idea macchina virtuale quindi per chi
non ha familiarità sensazione macchina virtuale non
familiarità con Alex, ma così aria che posa il
macchina virtuale è la narrativa runtime
cosa è creato da Ericsson che è un
società di telecomunicazioni e uno dei
cose che stavano facendo in quel momento
era di circa tre decenni fa erano
costruzione di interruttori telefonici e uno di
le cose di cui necessita un interruttore telefonico
fare è essere in grado di connettere la persona a
parlare con la persona B giusto e ciò che è
è davvero interessante riguardo il collegamento aereo
che quando stavano costruendo il
lingua il runtime avevano tutti questi
in mente i requisiti a cui sono correlati
interruttori telefonici così per esempio voi
non voglio che l’interruttore telefonico sia a posto
essere in grado di collegare solo una persona che parla
ad un altro in realtà vogliamo molte persone
possibile parlare tra loro okay
quindi vuoi essere in grado di gestirli
molte connessioni molte persone che parlano al
nello stesso tempo ci sono altre cose
come ad esempio a volte vuoi
chiama qualcuno ma quella persona è già
parlare con qualcun altro per un altro
cambia quindi devi essere in grado di avere
gli interruttori scambiano informazioni così
loro sanno che puoi parlare con questo
persona perché questa persona è occupata correttamente
ora e oggi le sfide che sono
lavorare sul solving Weaver mentire è
ancora più interessante perché abbiamo
mobilità ora
giusto il nostro telefono non è più installato
nella nostra casa è nella nostra tasca quindi per
esempio una delle cose che loro
risolvi per quanto riguarda oggi dentro Eric’s on
quei sistemi di comunicazione sei tu
parlare con qualcuno al telefono e poi
come sei nella tua auto ma non parlare
e guida ma immagina di essere dentro
il sedile del passeggero nella tua auto sta andando
da qualche parte sei connesso a uno
passare o ad un’antenna e poi loro
bisogno di consegnare ad un’altra antenna
perché sei più vicino a quell’altro
così hanno costruito questa lingua questa build
costruiscono questa macchina virtuale e
tutto per risolvere un sacco di
Casi Zeus ed era limitato a
telecomunicazione che stavano usando per lo più
a Ericsson per un lungo periodo di tempo
fino a quando tutti hanno cominciato a rendersi conto che
questo è il caso qui con cui abbiamo
interruttori telefonici scritti che stai stendendo
e un sacco di connessioni è molto
simile al web va bene così abbiamo impostato a
cambiate avete un server e il server
può essere sta per ricevere richieste per
un sacco di clienti diversi proprio tu
bisogno di parlare con endpoint interni e
poi la gente ha iniziato a porsi
hey se guadagnare era buono per
telecomunicazione è molto probabile che vada
essere bravi anche per questo e molti
le aziende hanno iniziato a farlo in modo Amazon
e Facebook usano la compagnia aerea
società di telecomunicazioni come
Ericsson il Motorola sono ancora
usando presto oggi abbiamo aziende come
una compagnia Morrison come Heroku e
ryuk quindi se mai distribuire un
applicazione a Heroku ogni volta che ci provo
per leggere la tua domanda sta passando
attraverso uno strato di routing all’interno di Heroku
questo è scritto in Erlang Iraq il
database scritto narrativo va bene e
c’è un caso d’uso che ne ha molti
attenzione un paio di anni fa due anni
fa quale è WhatsApp uno dei motivi
hanno ricevuto molte attenzioni perché
sono stati acquisiti da Facebook per 19
miliardi e whatsapp è un’applicazione
questo è l’installazione del telefono e quindi
puoi scambiare messaggi con il tuo
amico questo è un argomento su quale dispositivo
stanno usando e ciò che è veramente bello
su whatsapp è che usano il collegamento aereo
e andrebbero agli eventi di collegamento aereo e
parliamo dell’infrastruttura e
come loro
gestendo il loro traffico nel loro sistema
in modo da avere semplicemente non hanno un’idea
oggi
whatsapp gestisce al giorno più messaggi
rispetto all’intero sistema SMS globale al giorno
questo è quanto è grande il loro traffico oggi
puoi andare e provare a trovare discorsi o blog
messaggi e c’è questo che ha a
questo punto è un po ‘vecchio da questo
Gennaio del 2012, ma stavano dicendo
questo post sul blog che avevano due milioni
connessioni su una singola macchina, quindi cosa
stava succedendo è che ne avevano due
milioni di dispositivi che erano collegati
a un nodo una produzione meccanica e
poi quei dispositivi che stavano inviando
messaggi che stavano ricevendo messaggi
e tu sei su una singola macchina che avevano
due milioni di connessioni e quando vai
per vedere la macchina puoi vedere bene
a è una buona macchina, ha 24
core diciannove sessanta gigabyte di RAM
ma anche con tutta questa capacità in
lì quando ne stanno avendo solo due
milioni di connessioni che stai usando solo
40% della risorsa CP della macchina più avanti
parlare attraverso la porta SATA in grado di ottenere
a 3 milioni e 3 milioni e mezzo
connessioni in modo da avere un’idea
okay , questo è un po ‘circa
compagnia aerea e mi piace parlare di cosa c’è
questo perché whatsapp era esattamente quello che
ha portato a Phoenix in fase di costruzione, così Chris
McCord è così gentile con Chris McCord
creatore di Phoenix e stava lavorando su
un’applicazione che ha richiesto un po ‘di reale
componenti di tempo che ha bisogno di inviare
invio rapido di informazioni in tempo reale sul web
informazioni ai clienti rapidamente a
trasmesso per un sacco di diversi
i clienti raccolgono queste informazioni
e quando ha sentito parlare di questo ha detto
non sarebbe sorprendente se potevo usare
questa tecnologia per risolvere questo problema
Sto avendo in questo momento gli strumenti che era
usando al momento erano davvero poveri
prestazioni ed è stato difficile lavorare con
12 difficile da programmare il modello da pensare
riguardo al problema che aveva era davvero difficile
per dire che guarda questo e dice che voglio
voglio usare questa tecnologia per risolvere
questo problema ho adesso e
Phoenix ha iniziato con qualcosa
chiamati canali Phoenix okay, quindi cos’è
l’idea tra i canali di Phoenix
quindi Phoenix a Phoenix è un canale aperto
canale di comunicazione tra un cliente
e un server e quindi stanno inviando
e ricevere informazioni in ogni momento
okay , diamo un’idea di come Phoenix
i canali funzionano quindi iniziamo con alcuni
Codice JavaScript perché se abbiamo un
comunicazione tra il cliente e il
server è necessario scrivere un po ‘di
codice nel client e un po ‘di
codifica il server in modo da avere questo
informazioni che vanno e vengono e uno di
il maggior numero di clienti che abbiamo oggi è
il browser quindi abbiamo bisogno di scrivere
JavaScript quindi se vuoi integrarti
con i canali phoenix nel browser
questo è un codice semplice che scrivi
quindi la prima cosa che facciamo nel primo
linea lì in cima creiamo un socket
e poi chiediamo al socket di connettersi così
in questo momento lo facciamo
collegando il client al server e
ora abbiamo un sacco di diversi
canali che possiamo registrare così qui
stiamo scegliendo un canale che è se
abbiamo un’applicazione di chat su questo canale
sarà la lobby quindi la LOB è
sarà il luogo in cui tutti gli utenti
sono in grado di inviare messaggi a vicenda
o iniziare una conversazione privata o
qualcosa del genere quindi posso dire bene
per la lobby del canale qui per la chat
Lobby ogni volta che un nuovo utente si unisce
per stampare sullo schermo hey questi nuovi
l’utente si unisce così ogni volta che lo ricevo
evento dal server che il nuovo utente
unisciti voglio mostrarlo ogni volta
c’è un nuovo messaggio che voglio stampare
quel nuovo messaggio e vogliamo anche farlo
l’opposto giusto quindi per esempio tu
voglio ascoltare il to a input e
dillo bene ogni volta che l’utente preme Invio
Voglio mandare questo messaggio a Matt
tutti così tutti possono riceverlo
messaggio e poi quando si specifica il tuo
regole in fondo qui chiamate
canale di join in modo che il client va bene
e poi il server che stiamo facendo due
passi ecco che possiamo vedere che abbiamo
due dita abbiamo la presa e noi
avere il canale così nel server che siamo
andando a definire il socket e qui è
un po ‘di Alex, il tuo codice, quindi di solito ci rompiamo
il nostro codice all’interno dei moduli e così siamo
dicendo hey ho questo socket utente che
sta per essere una cosa phoenix socket
e ogni volta che qualcuno sta cercando di inviare
per connettersi a questo canale di chat room
Voglio gestire questa logica in questa chat
modulo canale amore punto e ogni volta
qualcuno vuole inviare un messaggio o entrare
in una stanza che voglio gestire quella logica
in quell’altro canale e naturalmente
specificare il canale mi dispiace I Francis di
il socket possiamo implementare il nostro canale
quindi quello che faremo qui è che noi
segue la stessa struttura del
telefono ora stiamo definendo un altro modulo
che invece di dire usa Phoenix
la presa sta dicendo di usare un’ombra Phoenix
e ora definisco le nostre regole così per
esempio stiamo andando a definire ciò che è
succederà quando l’utente si unisce ok
quando gli utenti si uniscono alla lobby della chat cosa
vogliamo fare vogliamo trasmettere I
voglio dire a tutti ehi questo utente solo
uniti a destra e poi faremo
quello e dico hey voglio trasmettere su
il socket a cui queste cose si uniscono
e qui c’è lo username ogni volta
qualcuno invia un messaggio dal client
vogliamo gestirlo così ogni volta che
il cliente invia un messaggio a ciò che vogliamo
vogliamo trasmettere quel messaggio a
anche tutti e questo è quello che facciamo
sulla seconda funzione qui di seguito così noi
avere due funzioni una che gestisce a
parte congiunta e l’altra quella
gestisce tutti i messaggi in entrata no
preoccupati molto del codice élitaire
solo se non hai familiarità con esso
solo avere un’idea di come stiamo lavorando
con quelle preoccupazioni va bene e basta
ora quando ora con tutte quelle brevi linee
di codice che abbiamo scritto sul client di
il server abbiamo informazioni in arrivo
andando tra client e server così io
invece di esplorare molto del codice
aspetti voglio prendere la vista esterna
di questi e cercando di capire prima
come le cose stanno andando a lavorare da un
prospettiva esterna e poi come le cose
stanno andando a lavorare internamente e come perché
è importante per i nostri sviluppatori ok così
ci sono qualcos’altro giusto in questo
punto nel discorso quando mostro quelli
diapositive puoi vedere che non c’è niente
davvero nuovo, probabilmente useremo a
sentito parlare di altre soluzioni in altri
lingue o altri quadri di quel tipo
di fornire astrazioni simili ok così
potresti anche starti chiedendo qui cos’è
qual è il grosso problema con Phoenix loro
ok quindi rispondiamo a queste domande così così
La prima cosa è che così quando abbiamo il
server proprio qui a destra ora noi
avere un browser e abbiamo scritto
codice cliente abbiamo scritto la chiamata del sud
il codice del server e ora possiamo connetterci
il browser al server quindi il primo
differenza che abbiamo con Phoenix
canali è anche quello che diciamo che il
comunicazione tra il cliente e il
il server è agnostico di trasporto quindi per
esempio qui sta usando un browser ma se
stai usando qualcosa come un browser
come Internet Explorer che non lo fa
supporta qualcosa come WebSockets
devi avere un altro modo di
comunicare con il server che puoi
avere un’applicazione mobile nativa dove
hai esigenze personalizzate dove hey I can I
non voglio usare un WebSocket qui
perché ho un protocollo più efficiente
per fare questo genere di cose che puoi fare
quello pure o anche i dispositivi incorporati
quando parliamo di embedded
dispositivi a volte hai particolari
bisogni o protocolli particolari come la co-op
dove vuoi avere il cliente
comunicato al server e uno di
le cose belle di questo sono così
ora abbiamo un sacco di cose diverse
clienti che potrebbero essere in esecuzione diversi
piattaforme o utilizzando diversi modi per
parla al server e cosa è bello
su questo è che immagina che al
inizio ok lasciami tornare indietro ok
immagina che all’inizio qui tu
hanno solo un singolo server ok e poi
stai iniziando a ricevere più clienti
e abbiamo una specie di idea che questo sia
sta per essere efficace giusto perché noi
sentito parlare del caso Whatsapp e questo
tipo di cose proprio lì erano prosciutto
che erano in grado di gestire un mucchio
di connessioni ma alcune la maggior parte del tempo
non vuoi gestire tutto su a
server singolo perché se qualcosa va
sbagliato che tipo di scende per alcuni
motivo inaspettato è connesso a tutti
quindi cosa puoi fare con Phoenix e questo
funziona in modo trasparente
è che al momento ne aggiungi un altro
server quei server stanno per iniziare
a parlare tra di loro e gestire
tutto per te è che devo preoccuparmi
a proposito
per quanto ho immaginato che quel
il browser si disconnette e quindi perché
è così che non so andare sotto a
bridge o l’utente ha un problema Wi-Fi
e poi quando ritorna si connette
per l’altro server ora è tutto
andando a lavorare bene ogni volta il
il browser deve inviare un messaggio ok è
andando a inviare un messaggio al primo
server che parlerà all’altro
server che sta per far crescere la cache
per tutti i diritti e le maniglie di Phoenix
questo davvero bene e sta andando in scala
sia orizzontalmente che significa
avevamo più macchine che saremo
in grado di continuare a gestire il traffico
e sta andando anche a scalare verticalmente
perché abbiamo visto nel caso Whatsapp come
sai che arriveremo se avremo un potere
macchina con 24 core per 8 core come noi
aveva più connessioni a questo server
sarà in grado di gestire bene
giusto e il motivo è questo
che se guardi di nuovo come questo caso
qui dove hai i browser con a
un sacco di diversi dispositivi è esattamente
il caso stai parlando all’inizio
della parte superiore destra dove si ha
interruttori telefonici e poi hanno a
diversi gruppi di telefoni collegati e
questa è una delle cose che è molto
eccitante per Phoenix, proprio come noi
usando possibilmente l’ unica piattaforma il
solo la macchina virtuale che è stata progettata
gestire casi come questo giusto così
ampiamente utilizzando la produzione è stato progettato
la persona là è esattamente così e
Phoenix sta facendo leva che va bene così
questa è la vista esterna , quindi abbiamo un
idea di come gli effetti del client sul server
e come ci aspettiamo che sia in grado
gestire la scalabilità sia su
aspetti orizzontali e verticali ma
le cose diventano ancora più interessanti
la vista interna perché intendo che lo è
grande che scala ma se è un povero
astrazione per noi sviluppatori e tu sei
avrà difficoltà a scrivere il codice
non ne vale la pena, quindi abbiamo anche bisogno
considerare questo aspetto quindi parliamo
su come le cose funzionano internamente, così noi
stavamo scrivendo un software che corre urlando
macchina virtuale così quando scrivi a
piccoli programmi per esempio tutti loro
il codice viene eseguito all’interno dei processi e da ora
sul resto del discorso ogni volta che io
dire che il processo non mi ha reso operativo
processo di sistema voglio dire molto a buon mercato molto
esecuzione leggera di Radl quindi ne ho uno
idea nel caso di whatsapp ne avevano due
milioni di connessioni così avevano almeno
due milioni di processi vanno bene così possiamo
sì, molto economico , puoi creare un mucchio
di quelli e Phoenix fa esattamente questo
così quando il cliente che è qui sul
l’ultimo collega al server ciò che è
andando a visitare inizierà
processo che gestirà il
comunicazione tra il cliente e il
server e questo è il nervosismo
responsabile della gestione del trasporto
parte agnostica va bene e ora così è
cosa succede quando chiami socket
connettersi e ora ogni volta che ci uniamo a
canale
ok, hai intenzione di creare diversi
processi in modo tale che il lob della chat sarà uno
di quei processi ogni stanza che
particolare utente si unisce a sta per essere
un altro processo e il motivo per cui lo facciamo
questo perché i processi ci danno
isolamento e concorrenza, quindi questo è
bello perché ad esempio immagina quello
ci sei un bug nel tuo codice e
allora qualcosa va storto nella chat
lobby che non vuoi per l’altra
funzionalità della tua applicazione a
smettila di funzionare bene, vuoi quel problema
essere incapsulato solo su quello
canale particolare in cui ciò è accaduto
quando si parla di incorporato
dispositivi per esempio a volte
stabilire una connessione è costoso
quindi non vuoi un bug in un canale o
qualcosa di sbagliato in un canale in crash
il trasporto e il processo ci danno
l’ isolamento perfetto per scrivere questo codice
ci dà anche concorrenza così immagina
che tu per qualche motivo sei
elaborare un’immagine all’interno di uno di quelli
processo di canale in modo che qualcuno abbia impostato un’immagine
in una stanza particolare e poi sei tu
fare cose dentro quel canale che è
non andando a bloccare l’altro canale il
altri canali continueranno
lavorando nella stanza e il registro sta andando
per funzionare funzioneranno solo messaggi soddisfacenti
andate e andate bene, quindi è davvero bello
perché possiamo quando stiamo scrivendo il codice
a un canale particolare otteniamo davvero un
isolamento e concorrenza e ci vuole un
molte preoccupazioni per gli sviluppatori ci stanno bene
ho solo bisogno di pensare a un particolare
canale e non come sta interagendo con
l’intero sistema va bene e quindi quando
stavamo parlando del codice che abbiamo
questo ideale quindi avremo il
diritto di trasporto e connessione naturale
al trasporto stanno per iniziare a
mazzo di canali su cui ogni canale gira
processo separato che isolato in
concurrent e abbiamo anche un terzo
entità qui che è il sottosistema del pub
e questo è ciò che ci consente ogni volta
inviamo un messaggio a un particolare
macchina va a tutte le altre macchine così
il sub del pub si occupa di questo e di
di default usa compagnie aeree distribuite
qual è il motivo per cui è plug
e gioca mentre aggiungi le macchine Phoenix
il tuo cluster inizieranno
parlando tra loro perché Erlang ha
questa idea di distribuzione butene ma se
non puoi farlo in aria
il languore ha alcune preoccupazioni che puoi portare
il tuo pub / sotto mappa
– Va bene, era un breve
introduzione a Phoenix e alla storia
dietro di esso e puoi andare e tu puoi
saperne di più su Phoenix sul sito web
e in un modo che potrei tipo di piacere
interrompi il discorso qui adesso e tu
avere una buona idea di come è arrivata Phoenix
essere ma non è rappresentativo di
cos’è Phoenix oggi
Phoenix cresce molto più oltre il
aspetto del canale e questo era vero
definire il vapore si renderà conto che lo eravamo
in una posizione davvero unica perché nella nostra
esperienza fino a questo punto per la maggior parte di
la strumentazione per il web che ti hanno fatto
scegli bene che hanno da dire che hai
due opzioni o puoi essere produttivo se
ti daranno questo quadro
questo sta per avere un sacco di strumenti
da cui prendi un sacco di preoccupazioni
la tua mente, ma non sarà così
veloce o stai andando o puoi usare questo
opzione qui che è molto performante come
a lungo quando scrivi cose usando strani
callback che usano stili di callback o uno
particolare stile di programmazione
non si sente così bene e noi
capito che noi Phoenix non abbiamo bisogno
per farti scegliere, va bene
entrambi puoi avere un quadro che è
sta per essere eseguito quello che sarà
scalabile e si sta andando ad essere
produttivo con esso sia nel breve
termine e nel lungo periodo va bene così è
quello che voglio esplorare per ora per il
gran parte del discorso parleremo
un po ‘sulle prestazioni e
allora parleremo di
produttività sia a breve che a lungo
termine
così ho iniziato la performance perché eravamo
solo parlare di te conosce la scalabilità
e intorno a quest’area, quindi prendiamo questo
fuori mano quindi solo cosa che
dovrebbe essere curioso di sapere di cosa è il canale
prestazioni che potresti star stando chiedendo bene
mi hai detto che sai che whatsapp ha scritto
quella cosa e aveva due milioni
connessioni su una singola macchina
ma è vero si applica anche a
Fenice
siamo davvero curiosi della risposta
a quella domanda – così abbiamo deciso di farlo
punto di riferimento e qui ci sono alcuni grafici
abbiamo ottenuto quando facevamo benchmarking sul
asse orizzontale abbiamo tempo quindi cosa
stiamo facendo è che abbiamo creato un cluster
di macchine penso di nuovo che abbiamo 40
macchine che inviano l’apertura di nuove connessioni
ad un singolo server in modo che stavamo ottenendo
nuove connessioni
otto tra 10.000 nuove connessioni in su
a 20.000 nuove connessioni al secondo
va bene così puoi vederlo qui e poi
sulla verticale si sono accumulati
numero di clienti e puoi vedere qui
quello che stiamo spingendo si carica proprio come tutto
quelle 40 macchine per i loro clienti
l’apertura si connette al server che possiamo
tenere il passo bene fino a quando noi
arrivati a due milioni di connessioni così quando
abbiamo avuto modo di milioni di clienti è possibile vedere
che continuiamo a spingere il carico e poi
la stella nera del server star giace su
duemila e il motivo che accade
perché quando configuriamo la macchina noi
configuralo per aprire al massimo due milioni
connessioni così se in realtà abbiamo detto noi
voglio aprire cinque milioni di connessioni
continuerebbe ad andare che è veramente
bello e ok così bello che siamo in grado di ottenere
due milioni di connessioni su un singolo
tasso di macchina che lo riprodurrà
caso ed ecco come appariva la macchina
come va bene quindi è una buona macchina in
macchina con 40 core che non ricordo di me
penso che fosse 96 gigabyte di RAM o 120
gigabyte di RAM e puoi vederlo
quando arriviamo a milioni di clienti connessi
e non succede nulla che siano
non inviare alcuna informazione al nucleo
stanno solo aspettando qualcosa
accadere e poi quello che abbiamo fatto è quello
otterremmo articoli di Wikipedia e
trasmesso a quei due milioni di clienti
e abbiamo potuto vedere un picco nell’I / O e noi
potrebbe vedere l’articolo di Wikipedia
inviato a quei due milioni di clienti in
da tre a cinque secondi che è davvero
fantastico dolce e abbiamo buono
performance e più tardi nel parlare quando
Parlerò della produttività che sono
andando a mostrare esattamente come siamo in grado di
arrivare a quei numeri che non era
magicamente dobbiamo fare un po ‘di
lavoro e ho intenzione di dire quella stella
presto ma le prestazioni non si applicano solo
ai canali perché si ottiene un
essere in tempo reale in tempo reale sul web
scambiare messaggi tra client e
il server è un aspetto importante ma il
tutta la rete statica che non abbiamo oggi
web statico ma dinamico che abbiamo oggi ma
abbiamo solo richieste e risposte
per una parte enorme del nostro traffico proprio così
ti starai chiedendo se lo sto facendo
richieste HTTP HTTP regolari
è andare a cose
si sta esibendo – e la risposta è sì
aspetta fammi tornare indietro dopo
la gente si arrabbia con me così ho intenzione di farlo
mostra alcuni parametri di riferimento tra diversi
lingue e tecnologie e devo
avvia la dichiarazione di non responsabilità che non si fida
benchmarks okay
Ho intenzione di pubblicare i collegamenti di come quelli
esattamente le cose sono state misurate e il
repository che stiamo misurando ma
idealmente vuoi costruire un prototipo in
quelle cose che menziono sul mercato te stesso
avere senso che applichi quello di Charlie
caso che è che mi dispiace vediamo
alcuni numeri così puoi vedere qui che abbiamo
lingue diverse con differenti
le tecnologie di Phoenix sono costruite in cima
di una cosa chiamata plug che è molto
economico un ostacolo molto piccolo intorno a
web server in modo da vedere che la spina è il
più veloce per una macchina penso che il
la macchina aveva dieci barre che puoi avere di più
informazioni nella formazione dell’URL con
dieci macchine sono state in grado di ottenere 200.000
richieste al secondo e poi puoi vedere
che Phoenix arriva secondo davvero
vicino a una soluzione vanno con 180.000
richieste al secondo ciò che è veramente bello
di questo è che stiamo andando da
qualcosa che è molto piccolo
astrazione attorno al web server su un web
quadro e non stanno perdendo molto
di root va bene solo il dieci per cento quale
significa che quando aggiungi la tua logica
okay, non hai intenzione di influenzare
prestazione molto e così possiamo vedere
quello in cima al tavolo che abbiamo
le soluzioni in Alex qui vanno e alla Scala e
poi in fondo al tavolo che hai
una soluzione che viene da go e Ruby e
nodo okay ed è anche importante per
evidenzia qui che da questa tabella il
quelli che si definivano effettivamente web
quadri è Phoenix
giocando con Scala e rotaie così e
il motivo per cui lo sottolineo è
perché stanno facendo più lavoro per te
fuori dagli schemi sono preoccupanti
stessi sulla sicurezza e su questo tipo
di preoccupazioni dove sono gli altri strumenti
più come qui andare a costruire il proprio
un tipo di catena di cose e devono impostare
un sacco di celle così prima che finiamo il
sezione delle prestazioni quando abbiamo parlato
canali abbiamo avuto quella vista interna così noi
potrebbe capire come stanno andando le cose
internamente e come ciò influenzerà il
lo sviluppatore ora fa lo stesso per
richieste HTTP regolari solo per avere questo
idea di come le cose stanno lavorando all’interno
la macchina virtuale quando stiamo usando
Phoenix e stiamo ricevendo un sacco di
richieste okay, prendiamolo dentro
guarda di nuovo così sull’ultimo lato che abbiamo
il client sul lato destro abbiamo il
server e ogni volta che c’è un nuovo
chiedere cosa accadrà è quello
stiamo per iniziare un nuovo processo che
è che molto a buon mercato molto leggero
piuttosto un’esecuzione in modo da ottenere un sacco di
diverse richieste che stiamo appena iniziando
nuovi processi per gestire tali richieste
e come prima questi processi sono
ok isolato e concomitante e andiamo
guarda cosa significa ora nel contesto
di richieste web regolari va bene così
la prima cosa che abbiamo visto è che si blocca
siamo isolati, vogliamo farlo se
qualcosa va storto non abbiamo mai quest siamo
non voglio che influenzi tutte le richieste
giusto dovrebbe essere contenuto
richieste ma significa anche che i dati lo sono
isolato e questo è veramente buono perchè
significa che non abbiamo una fermata di
la raccolta dei rifiuti del mondo dipende
sulla piattaforma che stiamo usando
distribuisci applicazioni oggi puoi avere a
ottimo tempo di risposta in media
si sta andando a guardare la media si
dì hey, sto rispondendo 50 millisecondi
Sto rispondendo in cento millisecondi
giusto ma quando vai alla fine del
curva al nono percentile verso il
99 ° percentile stiamo iniziando a vedere
alcune richieste che stanno prendendo
un secondo e mezzo due secondi e
quelle sono le richieste sfortunate che
innescare i netturbini così loro
stanno iniziando a fermare tutto e
pulire così abbiamo Alex qui i dati sono
isolato così i processi che non fanno
condividere i dati tra loro che significa
loro non hanno fermato la parola
garbage collectors una garbage collection
che ci permettono di avere un’idea del
latenza diciamo che abbiamo prevedibile
latenza okay è facile prevedere come
la nostra applicazione si comporterà esso
significa anche che in alcuni casi quando tu
avere richieste rapide che non sprechiamo
cicli facendo garbage collection perché
immaginare che ci sia una richiesta di andare
fai tutto il necessario per te
rendi che tu lo invii al client
proprio come è fatto e dire hey the
la richiesta è fatta ho generato alcuni rifiuti
qui ma sai che non c’è bisogno di fare
camion della spazzatura e basta recuperarlo
non è necessario fare il segno di spazzare il contrassegno
generazioni o cose di sorta vanno bene così
è davvero bello e lo sono anche loro
concurrent che significa che stanno andando a
bilanciamento del carico di entrambi i / o e CPU voi
non è necessario scrivere callback o nulla
quello o niente di quel genere tu solo
dire che se una richiesta ha bisogno di parlare con
un’altra API ti basta parlare con un API tu
puoi inviare una richiesta esterna a a
servizio e non bloccherà
qualsiasi altra cosa va bene hanno bisogno di preoccuparsi
per quanto riguarda il bello è stata la performance
ora parliamo di produttività okay
e come ho detto mi piace rompere
produttività in due parti quindi la prima
uno è una produttività a breve termine che
sono davvero entusiasta di Phoenix e
vuoi provarlo giusto così come
produttivo hai intenzione di essere perché
è un nuovo è un nuovo quadro giusto
per coloro che non hanno familiarità con
Phoenix ancora, ma è anche una nuova lingua
ed è anche un nuovo runtime è un nuovo
macchina virtuale devi prendere un aereo
di alcune di queste cose, così come saremo
in grado di ottenere qualcosa in esecuzione così
puoi essere motivato e continuare
lavorarci su e continuare ad imparare
va bene, ma è anche a lungo termine
produttività che abbiamo bisogno di parlare
perché molti dei framework
Là
si preoccupano solo per il breve termine
diritto di produttività che è veramente veloce
per iniziare ma come si aggiunge complessità
come stai correndo quella finitura
la produzione inizia a rallentare voi davvero
giù va bene così la produttività a breve termine così
una delle cose come possiamo aiutarla
attività di copertura quindi una delle cose sono
ottima documentazione va bene molto bene
guide in Alex qui abbiamo un modo di dire
che ci piace che la recensione sia
la prima classe ha riservato del tempo
oggi in grado di parlare di fare un po ‘di live
codifica forse possiamo esplorare quello ma
è una documentazione di prima classe
perché dovrebbe essere facile da scrivere e
facile da leggere, quindi dovresti essere in grado di
accedere alla commutazione nel tuo terminale
nel tuo browser nel tuo editor e nel
due i due set ti permettono davvero di fare
quella
okay abbiamo una guida in clinica
siti che permetterà di ottenere
iniziato c’è anche molto riguardo a
flusso di lavoro e generatori che stai per
ne parliamo presto e c’è anche il
produttività a lungo termine e qui che cosa
Matt è che se gestisco il Fenian
produzione di destra vogliamo parlare
introspezione come posso vedere cosa è il mio
codice che ho messo in produzione di cosa si tratta
effettivamente facendo come posso dire che come
posso capirlo e come possiamo
mantenere la base di codice perché a volte
ne aggiungeremo funzioni saranno
migliorare le funzionalità che abbiamo già
schierato come possiamo farlo
attività membro così breve quindi se vai
la Phoenix una pagina web che ho pubblicato
prima lo vedrai lì
è un’intera sezione lì in alto con
guida la documentazione e abbiamo un ragazzo
che ti porta dall’installare tutto
che hai bisogno di iniziare Phoenix
al punto abbiamo anche un libro
è uscito sono uno degli autori
al fianco di Chris McCord che è il creatore
di Phoenix nello stato di Bruce , in realtà
avere il libro nella cabina lì così noi
avere un posto al di fuori del qui dentro
la recensione vestiti dove abbiamo
pranzo e mangiare e parlare tra loro
dove ci sono libri e vendita
il programma di programmazione a Phoenix è lì
quindi se vuoi prendere una copia e
se vuoi parlarne, lo sarò
anche in giro così i libri aiutano anche a
molto con l’imparare per iniziare
esperienza giusta a breve termine
relatività Ho menzionato i flussi di lavoro e
generatori quindi una cosa che sta per
accadere è che si sta andando per iniziare
costruire questa applicazione e dire hey
quello che effettivamente devo fare è che io
bisogno di costruire un paio di moduli, ad esempio
o un paio di risorse dove ho bisogno
ottenere informazioni dal database mostra
per l’utente consentire all’utente di cambiare
così se è quello sono casi
preoccupato che tu possa eseguire il primo
comando che è mix Phoenix gent HTML
così mix è un tool di creazione che abbiamo in
Alex Siri e tutto quello che fai
con il mix quindi crea una nuova Phoenix
l’applicazione lo fai con la compilazione del mix
il tuo codice prova il tuo codice e tu
può anche usarlo per generare da avere
quei flussi di lavoro che ti dicono come
costruisci le cose quindi se ti interessa
per esempio gestendo più lato dhtml di
cose che puoi eseguire il primo comando ma
se sei interessato a costruire un’API
okay, ci sarà da parlare con Jason
con diversi client puoi eseguire a
secondo comando e stiamo andando a
generare del codice e lo dirò
un po ‘ su come funziona come
dovrebbe collegare tutto insieme e
poi progredisce sull’aspetto del canale
Stavo parlando prima hai appena eseguito questo
altro comando per la creazione di canali ok
quindi sulla produttività a breve termine e
di nuovo come tutte quelle cose che abbiamo
visto altrove destra abbiamo visto altri
quadri o rapporti che hanno come
che che hanno caratteristiche come quello che
permettigli di generare del codice e ottenere
iniziato e diventare produttivo presto e
tutte quelle cose che hai visto
altri quadri che vedrai
quelle cose a Phoenix vanno bene così ero io
parlando di HTML una delle cose che ho
è necessario essere in grado di ottenere dati
dal database mostrare all’utente
consentire all’utente di cambiarlo e ottenere questo
dati indietro così abbiamo i costruttori di moduli che
si prendono cura di che se si è
in particolare la costruzione di applicazioni HTML
non c’è modo di scappare da te
bisogno di scrivere qualche JavaScript che ti serve
scrivere dei CSS o scrivere
qualcosa che compila in JavaScript o
CSS composito quindi Phenix ti consente di
prenditi cura di questo, ma ne hai anche alcuni
caratteristiche davvero belle delle nostre così per
esempio una delle caratteristiche che viene
con Phoenix è in diretta ricarica così se io
lavora in un’applicazione e poi tu
cambia il file CSS o cambia a
modello non appena lo salvi usiamo
i canali fenice di cui stiamo parlando
per ricaricare automaticamente la pagina e
questo ti dà una grande produttività
flusso di lavoro a volte se stanno lavorando
qualcosa di particolare dove hai un
per me fare clic su tre posizioni e poi
apre il modello e è necessario
personalizzare quel modello è davvero dolce
perché cambi il file CSS e tu
vedere che il cambiamento si riflette su una pagina e
se non hai quello che ti serve
ricarica la pagina fai tutto il flusso sul
forma di nuovo scoprire cosa c’è di sbagliato
va bene così una caratteristica davvero conveniente
vivere ricaricando
se qualcosa va storto abbiamo davvero
belle pagine di debug che consentiranno
tu per vedere dove sta accadendo e
IO connetterti non solo a ciò che amo
questa caratteristica concorrente di prima classe
strumenti per le attività così tutte le cose che facciamo
è che noi se scrivo un’applicazione noi
spero che tu stia scrivendo dei test ma quelli
test a volte hanno bisogno di parlare con il
database in modo che abbiamo
un meccanismo può effettivamente scrivere test
che parlano al database e quelli
test che stanno eseguendo contemporaneamente questo
molte di queste idee riguardo al
commutazione come prima classe
documentazione di concorrenza di prima classe
il passaggio di prima classe viene dal
altra macchina virtuale e Alex qui io
Mi piace dire che è tutto 2016
lo fai oggi nelle tue macchine
usare tutti i core come il mese scorso
Apple ha annunciato che l’orologio di Apple
vero e il tuo orologio da polso può avere due
core proprio così tutto ciò che facciamo in a
macchina dovremmo usare tutto il
risorse disponibili e in galassia ci sono
andando a farlo compresi i tuoi test
va bene così che conta molto e anche noi
abbiamo una comunità in crescita che abbiamo
qualcosa chiamato hack che è un
gestore di pacchetti e se qualcuno ha
risolto il problema se si sta lavorando
un problema che qualcuno ha risolto è possibile
usa i loro pacchetti integrare come parte di
la tua domanda quindi è a breve termine
produttività così tante cose che
ci hanno visto dove sono solo
lì a Phoenix e un altro paio
quindi ora voglio parlare dell’altra
parte ho citato che è il lungo termine
produttività e avevo separato due e
questa parte aveva due sezioni okay così uno
della prima parte della prima sezione
riguardava il modo in cui alex è funzionale
linguaggio di programmazione ed era circa
in che modo la programmazione funzionale può aiutarti
scrivere più applicazioni tangibili
ma ho intenzione di saltare questa parte okay per
adesso
possiamo parlarne alla fine del
parlare perché voglio mettere a fuoco e fare un po ‘
codifica dal vivo sull’altro aspetto di lunga durata
attività a termine che è qualcosa che noi
chiama le applicazioni okay, così sta andando
di essere l’ultima sezione del discorso e mi
voglio andare veramente in profondità in questa parte
perché come promessa è molto il
traccia lingua che voglio esplorare a
un po ‘come tutto funziona dentro
la lingua all’interno della tua stessa macchina
applicazioni di relatività a lungo termine
Quindi, al fine di capire che cosa è
applicazioni e come otteniamo a lungo termine
produttività da questo voglio tornare indietro
a quella vista interna stanno parlando
va bene quindi abbiamo il cliente qui sul
a sinistra e poi abbiamo il server sul
giusto e poi abbiamo parlato di ogni
tempo il
il client si connette al server otteniamo a
nuovo processo giusto e poi diciamo
in realtà si sa più client sono
agendo allo stesso tempo, quindi stiamo andando
avere un sacco di diversi processi
e puoi immaginarlo per tutti quelli
processi avremo un processo
in alto a destra è un po ‘ come
gestendo quelle connessioni per noi uno di
le cose che ho menzionato per tutti i discorsi
che abbiamo anche avuto un problema di processo
era responsabile di pubsub, quindi ogni
tempo inviamo un messaggio a una macchina noi
in qualche modo bisogno di portare quel messaggio a tutti
dei tuoi cluster in modo che possano trasmettere
quello ai clienti che sono connessi
a una macchina particolare un’altra parte di
il tuo cluster quindi abbiamo un pub / sub
processo per quello anche e ora quando noi
inizia a sapere quando ci sentiamo
importo di Ercoli dobbiamo pensare
quei processi che sono molto economici
molto leggero e sono in esecuzione
simultaneamente e isolati iniziamo a
pensa bene abbiamo tutti quelli
entità come nel nostro codice ora
quelle connessioni abbiamo questo pub / sub
elaborazione e iniziano a iniziare
chiediamoci come va bene, ma che cos’è
succederà come se quei processi
sono indipendenti e isolati cosa
sta per accadere se il sistema Pubub
va male se l’essere responsabile di
riempire le masse in tutto il cluster
c’è qualcosa di sbagliato in quel codice
in quel particolare processo, okay
inizia a fare quelle domande come è
succederà nella mia domanda se
qualcosa va storto
quindi la nostra risposta a questa domanda è questa
definiamo supervisori e cosa
i supervisori ci permettono di perdere gli adulti
per dire hey tu guardi quei processi
qui e se qualcosa va storto così
sei pronto a supervisionarli e se
qualcosa va storto voglio che tu reciti
su di esso quindi se qualcosa va storto
il sistema di pubblicazione / sottosistema è il supervisore
andando a notarlo e iniziare una nuova
pub / sottosistema e il suo posto e perché
questa idea è importante giusto perché lo è
rilevante per cui presidente siamo a volte
Sto usando stiamo usando le nostre macchine e
qualcosa inizia ad andare come c’è
fornaio in un angolo dello schermo mai
come quello che sta succedendo e poi vai
Riavvia la nostra macchina e quella cosa
scompare non tornare più
quando abbiamo avviato la macchina , risolvi il problema
problema e questa è esattamente la stessa idea
stiamo applicando a questa parte del codice noi
stanno avendo un supervisore che sta per
supervisore del sistema pub / sub perché se
qualcosa va storto va bene prima
questo incidente pub / sub eaton pub / sub entity
perché il supervisore sta per iniziare
un altro per correre al suo posto ok e
e questa è l’idea a cui iniziamo
esplorare in modo che possiamo vedere che a volte
hanno processi che ne hanno
i genitori che è un supervisore che ha
qualche altro supervisore di un modello di Tesla
supervisore quindi questo finirà per essere gentile
di un albero di controllo e poi quando noi
avere un albero di supervisione che impacchettiamo
tutto all’interno di un’applicazione ok così
questa è un’applicazione quando hai un
albero dei processi su cui stanno lavorando
diverse funzioni e poi metti
tutto in un pacchetto quindi cosa
le domande ci danno l’ altro giorno ok
quindi ci danno un meccanismo per impacchettare
ed esegui il nostro codice così ogni volta che sei
è la creazione di un’applicazione Phoenix
in realtà questo Alex è la tua applicazione
dove impacchetta tutto ciò che ha tutto
il codice e le applicazioni possono essere avviati
e fermarlo come unità e applicazioni
fornire anche la configurazione unificata
questo è bello
perché se sai come lavorare su uno
applicazione e come è fatta
e come è iniziato e come
configura che sai come scoprirlo
come vengono avviate tutte le applicazioni e come
tutte le plicazioni sono configurate correttamente e
abbiamo anche avuto questa idea perché quando ero
mostrando questa diapositiva qui dove abbiamo
l’ albero di supervisione giusto se il
l’applicazione contiene tutto il
processi giusti ha che ha tutto
che la nostra parte più fredda di ok così facciamo
questo potrei andare avanti e dire di cosa
l’applicazione riguarda il processo
stato nell’albero di supervisione ma penso
Sarò in grado di guidare quelli
punti a casa molto più fortemente se lo faccio
una vera diga ok quindi facciamolo
Tutto ok
ecco può perfezionare così quello che ho intenzione di
fare qui è che sto andando così ho
creato questo progetto Phoenix prima di così
Ho intenzione di iniziare e quello che sto andando
fare è perderlo quindi ecco qui
shell alligatore interattivo con il mio
L’applicazione di Phoenix che corre qui posso
Digita un codice di elisir che voglio ma uno di
le cose che ho intenzione di fare qui sono
che ho intenzione di avviare questo strumento chiamato
osservatore che ci permette di vedere cos’è
succede nel nostro sistema okay così
dopo aver eseguito quel comando è iniziato questo
la bellezza qui e l’ osservatore ci danno un occhio
tutte le informazioni di cui abbiamo bisogno su questo è
quel particolare in tempo così dice quello che
è la versione di sistema che sto utilizzando
quanti core ho sulla mia macchina per
quanto tempo è in esecuzione quanti
processori ha funzionato in questo momento e
tutto questo tipo di informazione e anche
utilizzo della memoria e dove le memorie sono
situato e questo tipo di cose anche noi
caricare i grafici ma l’ho appena iniziato
l’applicazione che nessuno sta effettivamente inviando
richieste ad esso quindi non è interessante
sta per succedere qui e abbiamo un mucchio
di altri riquadri diversi che potresti
esplora la cima in alto che voglio
parlare di due in particolare, quindi il
il primo è il processo uno va bene così io
stava dicendo come ogni volta il cliente
si connette al server iniziamo un nuovo
processo molto sagomato molto
leggero diritto di esecuzione e in
tutto il nostro codice tutto il codice che noi
scrivi in Alex Siri tutto ciò che fai
a Phoenix sarà sempre in esecuzione
all’interno di un processo e in questa scheda qui
la scheda del processo elenca tutti i
processi che stanno eseguendo questo
sistema particolare e poi tutto
questo è qui e poi posso venire e io
puoi fare doppio clic su quelli e provare a
capire cosa ciascuno di questi
processi che stanno facendo e possiamo fare a
molte cose meravigliose con questo così se
potete vedere qui in alto uno dei
le cose che abbiamo, ad esempio, sono come
molta memoria ogni processo sta consumando così
per lavorare con questa applicazione e lì
è una perdita di memoria come la memoria sta crescendo
c’è qualcosa di sbagliato accadendo in uno di questi
i modi in cui puoi fare per risolvere questa memoria
la perdita è aprire l’osservatore o lo sono
qui da
consumo di memoria va bene e vedere quale
processo sta aumentando la memoria continua
continuando ricordiamo che probabilmente è
sta per diventare il migliore della festa
investiga e poi puoi venire tu
puoi fare doppio clic su quel processo e dire
hey fammi vedere cosa è questo processo
facendo esattamente quale parte del codice è
gestendo cosa è stato e così via
ok, così meraviglioso ricordo che ero anche io
raccontando di Phoenix che erano in grado di farlo
riproduci il caso whatsapp o un gap 2
milioni di connessioni su una singola macchina
la verità è quando abbiamo iniziato
benchmarking il primo punto di riferimento che
abbiamo corso quando abbiamo creato le macchine per
loro per tutti quei 5 secondi del
server siamo stati in grado di gestire solo un
30.000 clienti ok e poi diciamo oh
non possiamo spingere più in basso non c’è
qualcosa di sbagliato sai come risolviamo
quel problema apriamo il nostro server web
connettersi al computer remoto che apriamo
osservatore e poi siamo venuti qui e cosa
abbiamo fatto è che abbiamo ordinato da questo
messaggio cue column ok, quindi cosa?
la colonna del messaggio cue dice che è tutto
tempo necessario a un processo per parlare con ciascuno di essi
altri inviano messaggi e se a
processo non può agire velocemente su quelli
messaggi a cui inizia il messaggio kiwi
crescere e questo è quello che abbiamo fatto siamo venuti qui
ordiniamo in base alla coda dei messaggi e potremmo
vedi che c’è stato un processo molto
di persone stavano provando molti altri
i processi stavano cercando di parlare ma questo
non poteva tenere il passo era un collo di bottiglia
era letteralmente un collo di bottiglia quindi dico hey
Io so dove siamo andati
lì rimuoviamo il collo di bottiglia e poi
siamo in grado di ottenere più clienti e poi
abbiamo di nuovo il punto di riferimento abbiamo archivato il prossimo
collo di bottiglia esattamente allo stesso modo e
siamo in grado di ottenere più clienti che abbiamo fatto
questa o due altre volte ed erano
e sono stati in grado di arrivare a 2 milioni
connessioni ok perché tutto il codice è
correre dentro quei processi e abbiamo a
un mucchio di introspezione su ciò che possiamo
fai qui
quindi la scheda del processo è davvero molto bella
ma il mio preferito è l’applicazione di
pugnalata e stavamo parlando di
applicazioni ok, quindi ricorda l’idea
dietro l’applicazione è che possiamo
impacchetta il nostro codice in tutti i processi
ok e sono contenuti e quando noi
eseguire un’applicazione nella VM non è così
avere solo un’applicazione che esegue noi
avere
molte applicazioni in esecuzione side-by-side
vogliamo pensare a loro di pensare
su di loro come componenti va bene così qui
puoi vedere tutte quelle applicazioni che
stiamo correndo quando iniziamo Phoenix così noi
avere cowboy che è il nome del web
server e poi abbiamo cose come
Alex Erie elisir stesso è un
l’applicazione Phoenix stessa è un’altra
applicazioni e così via e si può vedere
qui gli alberi di controllo proprio ciascuno di
quelle applicazioni hanno loro
alberi di supervisione e potresti andare e
esplorali se vuoi masticare ma il
Quello che voglio parlare è la la
albero di supervisione che fa parte del tuo
applicazione stessa e questa applicazione
si chiama demo e qui possiamo vedere il
albero di supervisione quindi tutto ciò che è
succede la tua applicazione puoi venire
e navigare attraverso questo albero così uno di
le cose che possiamo fare qui è così se
hai un’applicazione web una delle
cose che probabilmente stai facendo
applicazione sta parlando con un database e
il modo in cui la maggior parte delle lingue
parlare al database è che hanno un
pool di connessioni, quindi quando la tua applicazione
inizia aprendosi come 10 connessioni
contro il database e ogni volta che
vuoi eseguire una query o scrivere qualcosa
ottieni una connessione per la piscina e
scrivi a quella collezione e possiamo
vedi che qui nel nostro albero di supervisione così
questo è ciò che abbiamo quindi qui abbiamo il
pool di connessione al database al nostro
repository e puoi vedere qui tutto il
le connessioni al database vanno bene
sono tutti rappresentati da quei processi
qui così questo numero quei numeri
tra i disegni sono il processo
identificatore c’è un numero che
identifica il processo quindi non quello che noi
possiamo vedere quelle cose qui che possiamo provare a
ragione cosa succederà quando
le cose vanno male perché quello era uno di
il motivo per cui abbiamo aggiunto supervisori e
quando abbiamo iniziato a parlare
alberi di supervisione perché hai tutto
quei processi e noi vogliamo provare a
capire cosa succederà quando
qualcosa va storto nel nostro sistema quando
qualcosa va storto con il pub / sub
processo o quando qualcosa va storto e
parlare al database in modo che tu possa fare
ecco come immaginare che in uno di
quei processi che sta parlando di database
immagina che qualcosa vada storto e
il database si spegne, si chiude
la connessione per esempio o qualcosa del genere
altrimenti succede che possiamo effettivamente raddoppiare
fai clic sul processo e dì che voglio uccidere
questo processo e quindi inviamo una stecca
messaggio così perché stiamo parlando
supervisori cosa
ci aspettiamo di succedere qui che siamo
mi aspetto che un supervisore se ne accorga
quella della connessione al database è
non c’è più ok va bene
notalo e inizia un altro nel suo
posto e possiamo vedere questo che è esattamente
quello che è successo ora qui in cima a noi
avere un nuovo processo con un nuovo identificatore
perché sono quelli che possiamo effettivamente
essere ancora più radicali e dire hey e se
c’è un bug nel nostro pool di connessioni
okay, e se fosse qualcosa?
sbagliato nel pool di connessione e quello
l’intero processo è responsabile della gestione
quelle connessioni falliscono possiamo venire qui
possiamo fare doppio clic e dire ok, voglio
per chiudere questo processo e vedere se il mio
il sistema può reagire a quel fallimento se il mio
il sistema può auto-guarire e possiamo vedere
questo è esattamente quello che succede qui, va bene così
Ho la mia piscina e ora e ora perché
quella piscina è su tutte le connessioni
sono stati interrotti, il che non va bene
avere connessioni persistenti proprio tutto il
le fazioni sono terminate e abbiamo iniziato
nuove connessioni al database ok così
tornando al discorso così invece di
passando attraverso noi, così tipo di vedere
tutto ciò che un’applicazione può fare
a destra i pacchetti sono codificati ha a
albero di supervisione che lo consente
esplorare ma al giorno giusto
non importa molto per noi, proprio quello che noi
voglio fare è vogliamo sapere quale
garanzie che otteniamo da questo e dal
garantisce che otteniamo è che abbiamo un
molta introspezione e monitoraggio
giusto se i nostri sistemi sono in produzione
puoi davvero collegarlo a quello e
capire tutto ciò che il nostro sistema è
facendo da ciò che il server abbiamo un
idea di tutte le metriche che possiamo
effettivamente ottenere dalla macchina virtuale
giusto così se vuoi puoi ottenerle
metriche e spingerle all’esterno
sistema in cui puoi seguirli
metriche e vedere come è il tasso di
processo fallimenti e tutto il resto
informazioni importanti per sapere come è il
pressione che ho nel sistema REO come
sono i ricordi che ti sono stati assegnati
non è necessario affidarsi all’osservatore
l’osservatore usa solo le informazioni che sono
è nella VM e puoi usarlo
esporta 20 sistema che vuoi ci dà
visibilità dell’intero stato di plicatura
come abbiamo visto potrebbe andare nell’albero o noi
potrebbe fare doppio clic sulle cose e interagire
con quelli
è anche molto facile da penetrare
componenti e quella roba in cui esploriamo
il libro immaginare che si sta lavorando
il tuo progetto Phoenix e poi abbiamo iniziato
aggiungendo più processi all’albero giusto
e questo è un punto di dire bene questo
la cosa sta facendo troppo bene, dobbiamo farlo
rompere lo distingue uno dei modi per rompere
a parte è stampare la supervisione
inoltrare la tua emergenza e dire hey cosa è
modo di accadere se ottengo questa parte del
albero e spostalo altrove così puoi
prendi un ramo per esempio e spostalo
altrove puoi ottenere una sottostruttura e spostarti
altrove e rompere la nostra applicazione
a parte e ci dà anche il ragionamento
quando le cose vanno male, per riassumere questo
è un discorso su Phoenix e cerco di fare
un mix non parla solo di Phoenix
quindi Phoenix è un framework web che è
sarà produttivo affidabile e veloce
e viene con questo modo di avere il
canali dove posso avere multipli
connessioni tra client e server
e avere informazioni che arrivano tutte
il tempo ma non solo quello è acceso
parità con qualsiasi cosa abbia usato finora
per fare web in termini di costruzione di API
costruire applicazioni HTML e in alcuni
attacchi siamo ancora meglio perché noi
può integrare nuove funzionalità con Phoenix
canali in modo che questo sia un aspetto del
parla bene di come possiamo usare entrambi Phoenix
per il nuovo web che è questo altamente
aspetto collegato con i canali ma anche
per esempio diciamo il web tradizionale
è qui da un po ‘e ci provo anche io
per esplorare la fondazione fare il bagno
battaglia collaudata tecnologia che Phoenix è
costruito sopra e come sta facendo leva
davvero il fondamento che è lì per
tre decenni che è stato costruito con Derril
nella macchina virtuale e poi costruito sopra
per elisir quindi se vuoi saperne di più
su Phoenix puoi visitare la pagina
crea quel pulsante enorme puoi anche provare
il libro della fenice, come ho detto loro
vendendolo nello stand lì quindi se tu
voglia di afferrare la vostra copia ora si prega di farlo
e se vuoi parlare solo di questo
ping me sarò in giro se vuoi
saperne di più su questi altri aspetti
esplorato sui supervisori delle applicazioni
o sull’elisir in generale puoi anche
vai al sito web Electra Electra – lang
org
che abbiamo una guida che sta per
ti permettono di esplorare la lingua no
solo gli aspetti fondamentali, ma il
la maggior parte degli aspetti più avanzati anche noi
avere due ragazzi in particolare uno che è
il ganiano ha iniziato di per sé e l’altro
uno che è chiamato mix e OTP che è
andando a esplorare circa effettivamente la costruzione
un’applicazione un’applicazione distribuita
e abbiamo anche un sacco di libri per
Alex qui se vai al sito web c’è
anche una sezione di apprendimento nel menu
dove abbiamo libri screencast e
materiali diversi per imparare
c’è anche un’iniziativa chiamata Alex’s
scuola che insegna elisir in un gruppo di
lingue diverse non so se loro
avere una traduzione per l’iniziato ma
se non qualcuno potrebbe iniziare su quello
e quello sarebbe meraviglioso e finalmente
Voglio ringraziare la mia azienda terraforma
attacco noi siamo quelli che hanno costruito e
elisir progettato e anche noi
contribuendo attivamente a Phenix quindi se
siete interessati ad avviare con Alex
orecchio e avere un po ‘di coaching o purezza
esegue il grazioso edificio il suo
applicazione e hanno qualche tipo di
e hai bisogno di un po ‘di revisione del design o
revisione architettonica faccelo sapere
basta mettersi in contatto ok e basta
Non mi parlare di Phoenix grazie siamo
avere domande che ho dimenticato di dirti
può inviare mode per tutto il discorso
quello era il mio cattivo ma sì, quindi come va?
Phoenix rispetto ad altri web in tempo reale
quadri che lo usano Perley javascript
un esempio potrebbe essere la meteora, quindi questo è un
domanda molto ampia mi piace come la confrontiamo
su ogni aspetto quindi per se lo sei
pensando in termini di prestazioni
stiamo andando molto meglio
performance con Phoenix ma se lo sono
cercando di lavorare se sei preoccupato
alcuni concetti tra le prime scuse
caratteristiche meta o meteora è la condivisione
tra client e server e quello è
qualcosa che non hai intenzione di ottenere
con Phoenix, ad esempio, ma possiamo farlo noi
avere altri compromessi positivi in altri
aree come
avere più flessibilità quindi i media o è
un po ‘ come hey che devi usare io no
sapere se essi permettono di qualcosa di diverso
di Mongo a questo punto, ma lo sono
più rigido in termini come se non volessi
per fare questo tipo di difetto modo giusto
non ho molte opzioni in
io o mentre le cose ti danno di più
flessibilità da sospettare quindi sì, lo so
questa è una buona domanda cosa succede se
il supervisore si blocca giusto è il
famoso quello che supervisiona i supervisori
quindi di solito abbiamo un albero di supervisione
giusto che significa che a volte il
supervisore hanno supervisori
loro stessi bene e poi quello che puoi
penso bene a questo punto vado
per andare in cima all’albero e poi
qualcosa che vogliamo è quell’essere
fallisce quindi ci sono due cose che è
succederà qui in modo che il primo è
che il supervisore è stato freddo
in esecuzione in produzione per come due
decenni ed è come se fossero davvero
conservatore abbiamo modifiche al
codice supervisore in modo che il supervisore di
distribuire dovrebbe essere molto molto
affidabile, credo che abbia un
idea del cinquanta o cinquantacinque percento
di tutto il traffico pre G in Europa
attraverso il nostro link cambia così tu sai
c’è questa parte del codice che è
davvero ben collaudato e la cosa è questa
se metti l’ albero di supervisione a posto
all’interno della tua applicazione abbiamo questo
cosa chiamata controller dell’applicazione
che è quello che si riavvia a
albero di supervisione che è anche molto
testato in battaglia ed è stato in esecuzione a
tanto quindi l’idea è che ce ne siano alcuni
freddo proprio lì che non dovrebbe fallire
giusto ed è stato davvero testato
non fallire e ti affidi a quello che ho fatto io
esempio con la macchina proprio come te
sapere quando quando qualcosa va storto noi
avvia la nostra macchina e torna a
lavoro a volte il problema non arriva mai
indietro e la ragione per questo è perché
sai chi sta costruendo la nostra macchina
testano davvero le istruzioni di avvio
perché entrambe le strutture di avvio se
hanno torto, quindi è una partita finita
non c’è se puoi farlo è a
concetto simile applicato qui così Oh
quindi questa domanda è più specifica a
qualcuno che sta già usando Phoenix così
cosa accadrà nella prossima versione di
Phoenix ha in programma di costruire
autenticazione al framework così
questa è una buona domanda, quindi non c’è
qualcosa di cui non ho parlato non l’ho fatto
menzioni qui ma l’ultima Phoenix
rilasciato, che è abbastanza recente è stato nel
Giugno ora che era Phoenix sul
masticando per introdurlo processo di Phoenix
in presenza di Phoenix è un modo per voi
saperne di più se hai un anello o se
hai un canale o un canale di gioco
qualunque cosa sia collegata a questo
il canale di Phoenix è davvero bello
perché stiamo usando il tutto
distribuzione di cui stiamo parlando quindi se
qualcuno si unisce a questa macchina che diffondiamo
quell’informazione così tutti nel
altre macchine possono sapere che ti sei iscritto
in modo da poter tenere traccia di chi è presente su ciascuno
canale e funziona completamente
decentralizzato basta scambiare informazioni
tra le macchine non è necessario fare affidamento
sul database non è necessario fare affidamento
o modificare o aggiungere su Redis e cose simili
questo è qualcosa che abbiamo solo
lanciato e ciò che stiamo progettando
Phoenix 1.3 è così c’è una cosa
che abbiamo ereditato da altri quadri
rotaie, come e cercherò di mostrare questa
molto rapidamente ho tre minuti che
è se vai a se vai al tuo
Applicazione Phoenix oggi sto andando a
aumenta il codice che puoi vedere qui
è questa directory web al qui orso
sul lato sinistro va bene il
struttura della directory e quindi abbiamo a
qualcosa chiamato modelli che è ogni
tempo abbiamo bisogno di avere qualcosa di simile
interagisce così come il database come hey I.
voglio diventare come ho un utente e io
vuoi ottenere il nome per cognome
e l’età dell’utente dal database in
questa cosa così ho chiamato questa cosa
modelli e le cose che abbiamo dentro
modellano oggi il modo in cui funzionano
loro tipo di mappa direttamente ad avere un
database ma questa è una pessima idea e
perché è perché immagina di essere
hai appena assunto – per esempio – un nuovo
società e su cui lavorerai
la loro applicazione quando apri il web
modello di directory che stai andando
vedere
tutti i file che stanno per avere
lì vedremo loro la tua volontà
per vedere queste strutture che sono
supposto per abbinare il database e quello
non ti dice nulla su cosa
quell’applicazione fa la sola cosa
che in realtà sta dicendo che è quello
hai intenzione di avere quelle cose nel
banca dati e come essi corrispondono alla
database come dà un’idea del tuo
struttura del database ma se volessi
conoscere la mia struttura di database vorrei andare
e controlla il database a cui non andrei
la mia applicazione così altre cose che noi
stanno facendo è dove vogliamo spingere
gli sviluppatori a pensare di più sul contesto
vero no e ce n’è un altro
problema grosso problema con questo che è
che qui già al lavoro su applicazioni
dove avremmo come i modelli o
quelli che chiamavano modelli che avevano 50
campi 100 campi possono identificare qualcuno
con quello tutto bene giusto e perché è
è perché non ci pensiamo
contesto qui giusto abbiamo solo questo
cosa utente e sono come oh credo
questo è legato all’utente che tu provi a
spingere tutto in un posto così io
volevo pensare al tuo contesto
non avere un utente in ogni zona l’utente
quale parte dell’applicazione lo fa
riguardare riguarda i conti
sistema riguarda quel sistema educativo
quindi vuoi che tu pensi a quelli
contesti e rompere le cose in contesti
in modo che quando si sta venendo a applicazione
posso dire hey questa cosa riguarda gli account
si tratta di acquisti riguarda il pagamento
giusti e talvolta diversi contesti
hai intenzione di avere utente che sta per
essere distribuito in diversi contesti
giusto perché l’utente che sta pensando
sull’autenticazione le colonne sono
sull’autenticazione dovrebbero essere su
la parte di autenticazione o in
parte autorizzazione tutto ciò che è
relativo al pagamento degli utenti dovrebbe essere
altrove non dovrebbe essere tutto
accoppiato in un posto così quelli sono
caratteristiche per le quali stiamo esplorando
Phoenix 1.3 e la buona notizia è questa
quei cambiamenti saranno per lo più fatti
i generatori quindi se inizi a usare
Phoenix oggi è tutto il tuo codice è
andando a rompere con la prossima versione no
è solo che quando stiamo parlando
generatori perché come abbiamo detto sono
strumenti di apprendimento vogliamo spingere le persone
verso la giusta direzione in modo che possano
ragionare meglio sulla loro applicazione
Va bene, non avremo avuto un mucchio
di altre domande
ma non posso rispondere a tutti loro così, lo farò
essere in giro, vieni a fare domande
anche se vuoi adesivi che non ho
Adesivi di Phoenix ma ho elisir
adesivi se si vuole così venire in giro
vieni a parlare, sarò lieto di rispondere
qualsiasi cosa grazie
Please follow and like us: