Upload
thiago-rondon
View
1.133
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
Cache, Concorrência e Sincronização na Web.
twitter: @thiagorondon - email: [email protected]
Cache, Concorrência e Sincronização na Web.
twitter: @thiagorondon - email: [email protected]
Agenda - Programação assíncrona
O Jantar dos filósofos.
Semaphoros e Mutex
Supervisor.
Hierarquia
Deadlock e Livelock
Impasse
Starvationjá era...
Fumantes de cigarro.
Conjunto de semaphoros.
O documento ‘It’s the latency, stupid’.
Criar mais bandwidth é trivial.
Com uma latência ruim, você esta perdido.
Dispositivos para consumidores são
péssimos.
Qual a diferença entre o boing 737 e o 747 ?
1965, 1971 e 1996.
trade-off.
armas ou manteiga.
Limitações
Disponibilidade, Escalabilidade e
Estabilidade.
escalabilidade.
horizontal vs vertical ?
perfomance vs escalabilidade.
Latencia vs Throughput.
disponibilidade
particionamento
fail-over
replicação
estabilidade.
use timeouts.
Use um disjuntor e não um fusível.
Qual o problema de um crash ?
Estratégia para o restart.
Supervisor Hierachies
Falhe rápido.
transações.
Atomicidade.
Consistência.
Isolamento.
Durabilidade.
ACID.
Disponibilidade vs. Consistência.
Expectativa : “Most of the data, most of the
time”.
Teorema de CAP.
Consistência, Disponibilidade ou
tolerante a falhas de particionamento ?
Primeira opção: Consistência
Segunda opção: Disponibilidade
Não há terceira opçãona web.
Ok, existe. Mas, não é trivial, pois ...
O que sacrificar ?Consistência ou Disponibilidade ?
ACID vs/e BASE.
Lei de MooreUma profecia que virou uma meta
da industria de processadores.
Nós desenvolvemos software.
Lei de AmdahlFração de melhoria ; Ganho de execução.
SpeedUp = T(1) / T(N)
Um projeto novo.
Estabilidade e features.
gerenciamento.
Eventualmente consistente ou
disponível ?
Tomando decisões.
Servidores respondem.
Aplicativos geram resposta.
Estes dois objetivos são
ortogonais !
Antes, as recomendações.
Valores Imutáveis.
Fluxo mental e o fluxo implementado.
blocking!
Quando eu tenho um estado ?
Estados mutáveis !
Sincronização
Compartilhar estados ?
Concorrência
Você esta perto de um deadlock ou problemas
de escalabilidade.
Precisamos de uma abstração melhor.
Assíncrona e não-blocking.
Mensagens
Baseado em eventos
Modelo Actor
MapReduce
STM
AMQP
Mas você ainda precisa de objetos mutáveis.
“Eureka, Eureka” por Arquimedes.
Sua informação velha, pode ser a nova.
Cache
Local temporário.
Diferencie as respostas e os dados.
Normalização
/Minifier/
O fluxo das requisições.
Cache, Concorrência e
Sincronização na Web.
Protocolo HTTP
Métodos
Stateless
Requisição e Reposta
[ ]
Requisição e Reposta
[ ]Proxy
Gateway
Tunnel
( Intermediadores )
Recursos
Construção
Dados
Aplicações
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
GET /workshopHost: sao-paulo.pm.org
200 OKCache-Control: max-age=30
(30 segundos depois)
Requisição e Reposta
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
Arquitetura REST.
Estudo de caso.
Editores
Usuários
Servidor
dadosconstruçãocache
Recursos
Meus projetos
Referencias
Edsger Dijkstra
Andrew Stuart Tanenbaum
Donald Knuth
Roy Fielding
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/
FIM
• http://twitter.com/thiagorondon
• http://slideshare.net/thiagorondon
• http://github.com/maluco
• http://www.maluco.com.br/