SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
MEMCACHED
Uma alternativa de cache para arquiteturas de alta
escalabilidade
Felipe Bergamaschi
O que é CACHE?
Em ciência da computação, cache é uma coleção de dados previamente
computados, armazenados em algum local de acesso mais rápido que o
original, utilizado em casos onde o dado original exige muito esforço
computacional para ser obtido ou gerado.
https://pt.wikipedia.org/wiki/Cache
Quem é Memcache?
É um serviço de alta performance de cache em memória distribuído e genérico
por natureza, mas destinado a ser usado na aceleração de aplicativos
dinâmicos da web, aliviando por exemplo a carga do banco de dados.
Memcached é simples, mas poderoso. Seu design simples promove
implantação rápida, facilidade de desenvolvimento e resolve muitos problemas
enfrentados por grandes caches de dados.
Memcached vs. Memcache
Memcache é o módulo que fornece a relação processual e orientada a objeto
para o memcached, cache daemon altamente eficaz, que foi especialmente
projetado para reduzir a carga de banco de dados em aplicações dinâmicas.
Memcached é o software de alta performance. Memória distribuída baseado
em sistema de cache de objeto, de natureza genérica, mas destinado a ser
utilizado para acelerar aplicações dinâmicas, aliviando a carga do banco de
dados.
Diagrama
Exemplo
A aplicação solicita as chaves FOO,
BAR e BAZ pelo client Memcached.
O client calcula o hash das caches e
determina qual servidor atenderá a
requisição.
Exemplo
O client do Memcached faz
paralelamente às requisições a todos
os servidores identificados.
Exemplo
O servidor do Memcached retorna as
respostas ao client que fez a
requisição.
Exemplo
O client do Memcached retorna os
dados para a aplicação, encapsulando
toda a complexidade da infraestrutura.
Simple Key/Value Store
O servidor não se importa com a aparência dos
seus dados.
Os itens são compostos de uma chave, um
tempo de expiração, sinalizadores opcionais e
dados brutos.
Filosofia de design
Não compreende estruturas de dados; você
deve carregar dados pré-serializados.
Alguns comandos (incr / decr) podem operar
nos dados subjacentes, mas de uma maneira
simples.
Filosofia de design
Logic Half in Client, Half in
Server
Uma "implementação do memcached" é
parcialmente em um cliente e parcialmente em
um servidor.
Os clientes sabem como escolher qual servidor
ler ou gravar um item e o que fazer quando não
pode contatar um servidor.
Os servidores entendem como armazenar e
buscar itens. Eles também gerenciam quando
despejar ou reutilizar memória.
Filosofia de design
O(1) - Big O
Todos os comandos são implementados para
serem o mais rápidos e fáceis de bloquear
possíveis.
Isso permite velocidades de consulta quase
determinísticas para todos os casos de uso.
Consultas em máquinas lentas devem rodar
bem abaixo de 1ms. Servidores de última
geração podem servir milhões de chaves por
segundo em taxa de transferência.
https://www.adayinthelifeof.nl/2009/12/21/big-o-notation/
Filosofia de design
Forgetting is a Feature
O Memcached é, por padrão, um Least Recently
Used cache. (LRU) - Descarta os itens menos
usados recentemente primeiro.
Itens expiram após um período de tempo
especificado.
https://en.wikipedia.org/wiki/Cache_replacement_policies#Le
ast_recently_used_(LRU)
- Expirar itens após um minuto para limitar
o retorno de dados obsoletos
- Liberar dados não utilizados em uma
operação para reter informações
solicitadas com freqüência.
Nenhum "pause" à espera de um garbage
collector garante baixa latência e o espaço livre
é recuperado sob demanda.
Filosofia de design
Cache Invalidation
Em vez de transmitir as alterações para todos
os hosts disponíveis, os clientes abordam
diretamente o servidor que contém os dados a
serem invalidados.
Hardware
Em suma, o uso da CPU é geralmente
baixo, a memória será conforme
disponibilizado e o uso de rede irá
variar de leve a moderado,
dependendo do tamanho médio de
seus itens.
Memcached é tipicamente leve no uso
da CPU, devido ao seu objetivo de
responder muito rápido. Memcached é
multithreaded, padronizando em 4
threads.
A maioria das instalações só precisa
de uma thread.
Hardware
O ponto principal do memcached é
unificar seções de memória de vários
hosts e fazer com que seu aplicativo o
veja como uma grande e única
memória.
Quanto mais memória melhor.
Hora do código.
TCC
Implantando em um
ambiente real
Obrigado!
Felipe Bergamaschi
Email
felipebergamaschi0@gmail.com
Linkedin
/felipebergamaschi
Github
/felipebergamaschi
Este projeto
github.com/felipebergamaschi/meetup-me
mcached-php-docker

Mais conteúdo relacionado

Mais procurados

Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Tchelinux
 
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Tchelinux
 
Deploying infrastructure as-a-service with cloudstack
Deploying infrastructure as-a-service with cloudstackDeploying infrastructure as-a-service with cloudstack
Deploying infrastructure as-a-service with cloudstackLorscheider Santiago
 
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...Renato Groff
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAsRonaldo Leite Martins
 
Cascateamento x Empilhamento de Switches
Cascateamento x Empilhamento de SwitchesCascateamento x Empilhamento de Switches
Cascateamento x Empilhamento de SwitchesEvandro Júnior
 
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...Léia de Sousa
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECFabiano Weimar
 
Vladimir infomobileonair
Vladimir infomobileonairVladimir infomobileonair
Vladimir infomobileonairInfomobile
 
Gerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalGerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalAlexandre Duarte
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao CassandraPeslPinguim
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 

Mais procurados (17)

Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Introdução ao Ceph - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
 
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
Open Source Cloud Computing - Leonardo Vaz - Tchelinux Bento Gonçalves 2017
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Deploying infrastructure as-a-service with cloudstack
Deploying infrastructure as-a-service with cloudstackDeploying infrastructure as-a-service with cloudstack
Deploying infrastructure as-a-service with cloudstack
 
Nginx, Apache e Varnish
Nginx, Apache e VarnishNginx, Apache e Varnish
Nginx, Apache e Varnish
 
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
 
Seminário - NoSQL
Seminário - NoSQLSeminário - NoSQL
Seminário - NoSQL
 
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
 
Cascateamento x Empilhamento de Switches
Cascateamento x Empilhamento de SwitchesCascateamento x Empilhamento de Switches
Cascateamento x Empilhamento de Switches
 
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UEC
 
Vladimir infomobileonair
Vladimir infomobileonairVladimir infomobileonair
Vladimir infomobileonair
 
Gerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalGerência de Memória: Memória Principal
Gerência de Memória: Memória Principal
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao Cassandra
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Computação ex
Computação exComputação ex
Computação ex
 

Semelhante a Memcached: Uma alternativa de cache para arquiteturas de alta escalabilidade

Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Arquitetura de computadores – memórias
Arquitetura de computadores – memóriasArquitetura de computadores – memórias
Arquitetura de computadores – memóriasElaine Cecília Gatto
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidadeClaudia Costa
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Apostila de Sql Server 2005
Apostila de Sql Server 2005Apostila de Sql Server 2005
Apostila de Sql Server 2005Andre Nascimento
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2Paulo Fonseca
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2Paulo Fonseca
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 

Semelhante a Memcached: Uma alternativa de cache para arquiteturas de alta escalabilidade (20)

Memcached
MemcachedMemcached
Memcached
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
C # banco de dados
C # banco de dadosC # banco de dados
C # banco de dados
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Arquitetura de computadores – memórias
Arquitetura de computadores – memóriasArquitetura de computadores – memórias
Arquitetura de computadores – memórias
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidade
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Apostila de Sql Server 2005
Apostila de Sql Server 2005Apostila de Sql Server 2005
Apostila de Sql Server 2005
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
memorias
memoriasmemorias
memorias
 
Apostila asp
Apostila aspApostila asp
Apostila asp
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 

Memcached: Uma alternativa de cache para arquiteturas de alta escalabilidade

  • 1. MEMCACHED Uma alternativa de cache para arquiteturas de alta escalabilidade
  • 3. O que é CACHE? Em ciência da computação, cache é uma coleção de dados previamente computados, armazenados em algum local de acesso mais rápido que o original, utilizado em casos onde o dado original exige muito esforço computacional para ser obtido ou gerado. https://pt.wikipedia.org/wiki/Cache
  • 4. Quem é Memcache? É um serviço de alta performance de cache em memória distribuído e genérico por natureza, mas destinado a ser usado na aceleração de aplicativos dinâmicos da web, aliviando por exemplo a carga do banco de dados. Memcached é simples, mas poderoso. Seu design simples promove implantação rápida, facilidade de desenvolvimento e resolve muitos problemas enfrentados por grandes caches de dados.
  • 5. Memcached vs. Memcache Memcache é o módulo que fornece a relação processual e orientada a objeto para o memcached, cache daemon altamente eficaz, que foi especialmente projetado para reduzir a carga de banco de dados em aplicações dinâmicas. Memcached é o software de alta performance. Memória distribuída baseado em sistema de cache de objeto, de natureza genérica, mas destinado a ser utilizado para acelerar aplicações dinâmicas, aliviando a carga do banco de dados.
  • 7. Exemplo A aplicação solicita as chaves FOO, BAR e BAZ pelo client Memcached. O client calcula o hash das caches e determina qual servidor atenderá a requisição.
  • 8. Exemplo O client do Memcached faz paralelamente às requisições a todos os servidores identificados.
  • 9. Exemplo O servidor do Memcached retorna as respostas ao client que fez a requisição.
  • 10. Exemplo O client do Memcached retorna os dados para a aplicação, encapsulando toda a complexidade da infraestrutura.
  • 11. Simple Key/Value Store O servidor não se importa com a aparência dos seus dados. Os itens são compostos de uma chave, um tempo de expiração, sinalizadores opcionais e dados brutos. Filosofia de design Não compreende estruturas de dados; você deve carregar dados pré-serializados. Alguns comandos (incr / decr) podem operar nos dados subjacentes, mas de uma maneira simples.
  • 12. Filosofia de design Logic Half in Client, Half in Server Uma "implementação do memcached" é parcialmente em um cliente e parcialmente em um servidor. Os clientes sabem como escolher qual servidor ler ou gravar um item e o que fazer quando não pode contatar um servidor. Os servidores entendem como armazenar e buscar itens. Eles também gerenciam quando despejar ou reutilizar memória.
  • 13. Filosofia de design O(1) - Big O Todos os comandos são implementados para serem o mais rápidos e fáceis de bloquear possíveis. Isso permite velocidades de consulta quase determinísticas para todos os casos de uso. Consultas em máquinas lentas devem rodar bem abaixo de 1ms. Servidores de última geração podem servir milhões de chaves por segundo em taxa de transferência. https://www.adayinthelifeof.nl/2009/12/21/big-o-notation/
  • 14. Filosofia de design Forgetting is a Feature O Memcached é, por padrão, um Least Recently Used cache. (LRU) - Descarta os itens menos usados recentemente primeiro. Itens expiram após um período de tempo especificado. https://en.wikipedia.org/wiki/Cache_replacement_policies#Le ast_recently_used_(LRU) - Expirar itens após um minuto para limitar o retorno de dados obsoletos - Liberar dados não utilizados em uma operação para reter informações solicitadas com freqüência. Nenhum "pause" à espera de um garbage collector garante baixa latência e o espaço livre é recuperado sob demanda.
  • 15. Filosofia de design Cache Invalidation Em vez de transmitir as alterações para todos os hosts disponíveis, os clientes abordam diretamente o servidor que contém os dados a serem invalidados.
  • 16. Hardware Em suma, o uso da CPU é geralmente baixo, a memória será conforme disponibilizado e o uso de rede irá variar de leve a moderado, dependendo do tamanho médio de seus itens. Memcached é tipicamente leve no uso da CPU, devido ao seu objetivo de responder muito rápido. Memcached é multithreaded, padronizando em 4 threads. A maioria das instalações só precisa de uma thread.
  • 17. Hardware O ponto principal do memcached é unificar seções de memória de vários hosts e fazer com que seu aplicativo o veja como uma grande e única memória. Quanto mais memória melhor.
  • 18.