Cache, Concorrência e Sincronização

Preview:

DESCRIPTION

 

Citation preview

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

twitter: @thiagorondon - email: thiago@aware.com.br

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

twitter: @thiagorondon - email: thiago@aware.com.br

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/

Recommended