Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP

  • 1,658 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,658
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
11
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 2. Gerente de Desenvolvimento
  • 3. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. AGENDA ➔ Diferença entre sites e plataformas ➔ Organização de recursos ➔ Arquitetura de mensagens ➔ Consistência eventual ➔ Lições aprendidas ➔ Perguntas
  • 4. MercadoLivre Developers Conference Lembramos a diferença de um site e uma plataforma Arquitetura de mensagens assíncrona. WebSite Frontend Platform API Mobile Device DB Third-party
  • 5. MercadoLivre Developers Conference Os recursos da nossa API estão agrupados lógicamente em departamentos Cada departamento é independente dos outros, isto significa: ● Escolha livre de tecnologia ● Deploys independentes ● Minimizar dependência Arquitetura de mensagens assíncrona.
  • 6. Externamente a API é como uma coisa só, mas está toda dividida em departamentos. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. Items /items /items/MLBX/descriptions /items/MLBX/relist Categories /categories/MLXXX Questions /questions/ MercadoLivre API RestFul
  • 7. Ok, mas como fazemos quando dois ou mais departamentos dividem dados. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 8. MercadoLivre Developers Conference Um departamento tem uma cópia original e propaga as mudanças aos outros, por exemplo, o recurso de items realiza operações básicas (CRUD) e propaga os eventos ao motor de busca para que indexe as publicações. Arquitetura de mensagens assíncrona. /items (GET, PUT, POST, DELETE ) MercadoLivre - API ResFul /sites/MLB/search?q=ipod Web Servers Cache SQL Database Search Engine Web Servers events
  • 9. MercadoLivre Developers Conference O serviço de fila permite propagar uma mensagem por meio de um feed e a guarda até que alguém a consuma. Arquitetura de mensagens assíncrona. Queue Service items search queue moderation queue items-feed moderation search
  • 10. MercadoLivre Developers Conference Como chegam as mensagens? Arquitetura de mensagens assíncrona.
  • 11. Dado que as mensagens são assíncronas, elas podem chegar desordenadas e como não se persiste em um único lugar, podem chegar repetidas. Então as mensagens: ● Podem chegar repetidas ● Podem chegar desordenadas A solução é que a ação realizada depois de receber uma mensagem seja idempotente. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 12. Qual o conteúdo das mensagens? MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 13. MercadoLivre Developers Conference Utilizamos 2 tipos de mensagens Arquitetura de mensagens assíncrona. Apenas o ID do recurso modificado Vantagem - Mensagem pequena Desvantagem - GET para obter os dados Toda a entidade com id de versão Vantagem - Não necessita um GET ao recurso Desvantagem - A mensagem é mais pesada
  • 14. MercadoLivre Developers Conference Um poucos mais de teoria Arquitetura de mensagens assíncrona.
  • 15. Não forçar uma consistência nos ajuda a obter ● Latência baixa ● Alta disponibilidade e tolerância a falhas ● Facilidade para escalar Devido a nossa plataforma estar altamente distribuída e utilizar mensagens assíncronas, existe uma consistência eventual. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 16. MercadoLivre Developers Conference E para que podemos utilizar esta arquitetura? Arquitetura de mensagens assíncrona.
  • 17. Diferenças entre o hábito de guardar dados em uma tabela e processar depois X utilizar uma fila de mensagens. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. Jobs Queue Services Workers Workers ID Status Work Date 1 Pending ..... 12/31 2 Pending ..... 12/31 3 Done .... 12/31 4 Done ..... 12/31
  • 18. MercadoLivre Developers Conference O que aprendemos no caminho Arquitetura de mensagens assíncrona.
  • 19. Trabalhe offline ● Minimizar o trabalho para responder cada request. ● Tudo o que pode ser feito offline, não faça online. Guardar informações redundantes ● Se os dados têm múltiplas formas de apresentação, guarde todas elas. ● O espaço em disco e memória é mais barato que fazer o usuário esperar. Cachear tudo ● Informação da base de dados. ● Guardar dados pré-carregados. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 20. Perguntas? Pablo Moretti @elsantob