cache, concorrência e sincronização

112
Cache, Concorrência e Sincronização na Web. twitter: @thiagorondon - email: [email protected]

Upload: thiago-rondon

Post on 01-Dec-2014

1.128 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Cache, Concorrência e Sincronização

Cache, Concorrência e Sincronização na Web.

twitter: @thiagorondon - email: [email protected]

Page 2: Cache, Concorrência e Sincronização

Cache, Concorrência e Sincronização na Web.

twitter: @thiagorondon - email: [email protected]

Page 3: Cache, Concorrência e Sincronização

Agenda - Programação assíncrona

Page 4: Cache, Concorrência e Sincronização

O Jantar dos filósofos.

Page 5: Cache, Concorrência e Sincronização
Page 6: Cache, Concorrência e Sincronização

Semaphoros e Mutex

Page 7: Cache, Concorrência e Sincronização

Supervisor.

Page 8: Cache, Concorrência e Sincronização

Hierarquia

Page 9: Cache, Concorrência e Sincronização

Deadlock e Livelock

Impasse

Page 10: Cache, Concorrência e Sincronização

Starvationjá era...

Page 11: Cache, Concorrência e Sincronização
Page 12: Cache, Concorrência e Sincronização

Fumantes de cigarro.

Page 13: Cache, Concorrência e Sincronização

Conjunto de semaphoros.

Page 14: Cache, Concorrência e Sincronização

O documento ‘It’s the latency, stupid’.

Page 15: Cache, Concorrência e Sincronização

Criar mais bandwidth é trivial.

Page 16: Cache, Concorrência e Sincronização

Com uma latência ruim, você esta perdido.

Page 17: Cache, Concorrência e Sincronização

Dispositivos para consumidores são

péssimos.

Page 18: Cache, Concorrência e Sincronização

Qual a diferença entre o boing 737 e o 747 ?

Page 19: Cache, Concorrência e Sincronização

1965, 1971 e 1996.

Page 20: Cache, Concorrência e Sincronização

trade-off.

Page 21: Cache, Concorrência e Sincronização

armas ou manteiga.

Page 22: Cache, Concorrência e Sincronização

Limitações

Page 23: Cache, Concorrência e Sincronização

Disponibilidade, Escalabilidade e

Estabilidade.

Page 24: Cache, Concorrência e Sincronização

escalabilidade.

Page 25: Cache, Concorrência e Sincronização

horizontal vs vertical ?

Page 26: Cache, Concorrência e Sincronização

perfomance vs escalabilidade.

Page 27: Cache, Concorrência e Sincronização

Latencia vs Throughput.

Page 28: Cache, Concorrência e Sincronização

disponibilidade

Page 29: Cache, Concorrência e Sincronização

particionamento

Page 30: Cache, Concorrência e Sincronização

fail-over

Page 31: Cache, Concorrência e Sincronização

replicação

Page 32: Cache, Concorrência e Sincronização

estabilidade.

Page 33: Cache, Concorrência e Sincronização

use timeouts.

Page 34: Cache, Concorrência e Sincronização

Use um disjuntor e não um fusível.

Page 35: Cache, Concorrência e Sincronização

Qual o problema de um crash ?

Page 36: Cache, Concorrência e Sincronização

Estratégia para o restart.

Page 37: Cache, Concorrência e Sincronização

Supervisor Hierachies

Page 38: Cache, Concorrência e Sincronização

Falhe rápido.

Page 39: Cache, Concorrência e Sincronização

transações.

Page 40: Cache, Concorrência e Sincronização

Atomicidade.

Page 41: Cache, Concorrência e Sincronização

Consistência.

Page 42: Cache, Concorrência e Sincronização

Isolamento.

Page 43: Cache, Concorrência e Sincronização

Durabilidade.

Page 44: Cache, Concorrência e Sincronização

ACID.

Page 45: Cache, Concorrência e Sincronização

Disponibilidade vs. Consistência.

Page 46: Cache, Concorrência e Sincronização

Expectativa : “Most of the data, most of the

time”.

Page 47: Cache, Concorrência e Sincronização

Teorema de CAP.

Page 48: Cache, Concorrência e Sincronização

Consistência, Disponibilidade ou

tolerante a falhas de particionamento ?

Page 49: Cache, Concorrência e Sincronização

Primeira opção: Consistência

Page 50: Cache, Concorrência e Sincronização

Segunda opção: Disponibilidade

Page 51: Cache, Concorrência e Sincronização

Não há terceira opçãona web.

Page 52: Cache, Concorrência e Sincronização

Ok, existe. Mas, não é trivial, pois ...

Page 53: Cache, Concorrência e Sincronização

O que sacrificar ?Consistência ou Disponibilidade ?

Page 54: Cache, Concorrência e Sincronização

ACID vs/e BASE.

Page 55: Cache, Concorrência e Sincronização

Lei de MooreUma profecia que virou uma meta

da industria de processadores.

Page 56: Cache, Concorrência e Sincronização

Nós desenvolvemos software.

Page 57: Cache, Concorrência e Sincronização

Lei de AmdahlFração de melhoria ; Ganho de execução.

SpeedUp = T(1) / T(N)

Page 58: Cache, Concorrência e Sincronização

Um projeto novo.

Page 59: Cache, Concorrência e Sincronização

Estabilidade e features.

Page 60: Cache, Concorrência e Sincronização

gerenciamento.

Page 61: Cache, Concorrência e Sincronização

Eventualmente consistente ou

disponível ?

Page 62: Cache, Concorrência e Sincronização

Tomando decisões.

Page 63: Cache, Concorrência e Sincronização

Servidores respondem.

Page 64: Cache, Concorrência e Sincronização

Aplicativos geram resposta.

Page 65: Cache, Concorrência e Sincronização

Estes dois objetivos são

ortogonais !

Page 66: Cache, Concorrência e Sincronização

Antes, as recomendações.

Page 67: Cache, Concorrência e Sincronização

Valores Imutáveis.

Page 68: Cache, Concorrência e Sincronização

Fluxo mental e o fluxo implementado.

Page 69: Cache, Concorrência e Sincronização

blocking!

Page 70: Cache, Concorrência e Sincronização

Quando eu tenho um estado ?

Page 71: Cache, Concorrência e Sincronização

Estados mutáveis !

Page 72: Cache, Concorrência e Sincronização

Sincronização

Page 73: Cache, Concorrência e Sincronização

Compartilhar estados ?

Page 74: Cache, Concorrência e Sincronização

Concorrência

Page 75: Cache, Concorrência e Sincronização

Você esta perto de um deadlock ou problemas

de escalabilidade.

Page 76: Cache, Concorrência e Sincronização

Precisamos de uma abstração melhor.

Page 77: Cache, Concorrência e Sincronização

Assíncrona e não-blocking.

Page 78: Cache, Concorrência e Sincronização

Mensagens

Page 79: Cache, Concorrência e Sincronização

Baseado em eventos

Page 80: Cache, Concorrência e Sincronização

Modelo Actor

Page 81: Cache, Concorrência e Sincronização

MapReduce

Page 82: Cache, Concorrência e Sincronização

STM

Page 83: Cache, Concorrência e Sincronização

AMQP

Page 84: Cache, Concorrência e Sincronização

Mas você ainda precisa de objetos mutáveis.

Page 85: Cache, Concorrência e Sincronização

“Eureka, Eureka” por Arquimedes.

Page 86: Cache, Concorrência e Sincronização

Sua informação velha, pode ser a nova.

Page 87: Cache, Concorrência e Sincronização

Cache

Page 88: Cache, Concorrência e Sincronização

Local temporário.

Page 89: Cache, Concorrência e Sincronização

Diferencie as respostas e os dados.

Page 90: Cache, Concorrência e Sincronização

Normalização

Page 91: Cache, Concorrência e Sincronização

/Minifier/

Page 92: Cache, Concorrência e Sincronização

O fluxo das requisições.

Page 93: Cache, Concorrência e Sincronização

Cache, Concorrência e

Sincronização na Web.

Page 94: Cache, Concorrência e Sincronização

Protocolo HTTP

Page 95: Cache, Concorrência e Sincronização

Métodos

Page 96: Cache, Concorrência e Sincronização

Stateless

Page 97: Cache, Concorrência e Sincronização

Requisição e Reposta

[ ]

Page 98: Cache, Concorrência e Sincronização

Requisição e Reposta

[ ]Proxy

Gateway

Tunnel

( Intermediadores )

Page 99: Cache, Concorrência e Sincronização

Recursos

Construção

Dados

Aplicações

Page 100: Cache, Concorrência e Sincronização

GET /workshopHost: sao-paulo.pm.org

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=60

200 OKCache-Control: max-age=60

Requisição e Reposta

Page 101: Cache, Concorrência e Sincronização

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=30

(30 segundos depois)

Requisição e Reposta

Page 102: Cache, Concorrência e Sincronização

GET /workshopHost: sao-paulo.pm.org

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=60

200 OKCache-Control: max-age=60

(1 minuto)

Requisição e Reposta

Page 103: Cache, Concorrência e Sincronização

Arquitetura REST.

Page 104: Cache, Concorrência e Sincronização

Estudo de caso.

Editores

Usuários

Servidor

dadosconstruçãocache

Recursos

Page 105: Cache, Concorrência e Sincronização

Meus projetos

Page 106: Cache, Concorrência e Sincronização

Referencias

Page 107: Cache, Concorrência e Sincronização

Edsger Dijkstra

Page 108: Cache, Concorrência e Sincronização

Andrew Stuart Tanenbaum

Page 109: Cache, Concorrência e Sincronização

Donald Knuth

Page 110: Cache, Concorrência e Sincronização

Roy Fielding

Page 111: Cache, Concorrência e Sincronização

Perl Mongers

• Grupos para discutir sobre tudo o que você quiser... Filosofia, Política, Astronomia e etc.

• Eventos anuais. YAPC::Brasil, Equinócio, workshops, encontros técnicos, ... .

• http://sao-paulo.pm.org/

Page 112: Cache, Concorrência e Sincronização

FIM

• http://twitter.com/thiagorondon

• http://slideshare.net/thiagorondon

• http://github.com/maluco

• http://www.maluco.com.br/