SlideShare uma empresa Scribd logo
1 de 22
Elug Meetup #15
SP Meetup
2
Sobre mim:
Rodrigo Long Chen Kashiwakura
@rodrigolck
3
Sobre Skyhub
4
O QUE É GENSTAGE?
5
GENSTAGEDefinição
● Baseado em GenServers
● Pipeline de processos independentes no Elixir
● Troca de Mensagens entre ‘estados’
● Producers, Consumers e Producer_Consumers
6
GENSTAGE
7
GENSTAGE
Opções para inscrição:
● max_demand: demanda máxima que pode ser
requisitada(default 1000)
● min_demand: demanda mínima, que quando
alcançada, irá iniciar a requisição
imediatamente(default 500)
8
GENSTAGE
9
GENSTAGE
10
GENSTAGE
Pontos de Cuidado:
● O producer deve retornar o número exato de
eventos requisitado, nem mais nem menos
○ Mais - Funciona, porém não tão performático
○ Menos - Travará o fluxo por nunca estar
completo
11
GENSTAGE
Pontos de Cuidado:
● Caso ocorra um erro no consumer, aquele batch
que estava sendo executado será perdido e será
requisitado o próximo
12
GENSTAGE
ConsumerSupervisor
13
GENSTAGE
Pontos de Cuidado:
● Caso ocorra um erro no consumer, aquela entrada
que estava sendo executado será perdida e será
requisitada a próxima
14
GENSTAGE
Producer com RabbitMQ:
● Pergunta: Demanda a mais ou a menos, pode vir a
trazer problemas. Como fornecer mensagens do
RabbitMQ na medida correta?
15
GENSTAGE
Producer com RabbitMQ:
● Pergunta: Demanda a mais ou a menos, pode vir a
trazer problemas. Como fornecer mensagens do
RabbitMQ na medida correta?
● Solução: Guardar a demanda no estado e reduzir
do mesmo a cada mensagem enviada
16
GENSTAGE
ConsumerSupervisor
● Pergunta: Ocorreu um erro no Consumer, como
tomar uma ação na mensagem que estava sendo
processada?
17
GENSTAGE
ConsumerSupervisor
● Pergunta: Ocorreu um erro no Consumer, como
tomar uma ação na mensagem que estava sendo
processada?
● Solução: Monitor de Processos
18
Monitor
ConsumerSupervisor
● Cadastrar cada processo que está sendo
executado nos filhos do ConsumerSupervisor
● Monitorar cada processo cadastrado
● Nos casos de erros inesperados, tomar a ação
devida
19
Process
monitor
● Quando o processo morre, ele retorna:
{:DOWN, ref, :process, object, reason}
● ref - referência do monitor
● object - pid do processo que acaba de morrer
● reason - motivo do término do processo
20
Fonte:
https://github.com/elixir-lang/gen_stage
https://hexdocs.pm/elixir/Process.html
https://hexdocs.pm/elixir/GenServer.html
21
Contato
E-mail: rodrigolck@gmail.com
github: @rodrigolck
LinkedIn: rodrigolck
Elixir Meetup #15 - Monitorando Genstages

Mais conteúdo relacionado

Semelhante a Elixir Meetup #15 - Monitorando Genstages

Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2Paulo Siqueira
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodDevCamp Campinas
 
Resultados da prova it essentians
Resultados da prova it essentiansResultados da prova it essentians
Resultados da prova it essentiansrntd2
 

Semelhante a Elixir Meetup #15 - Monitorando Genstages (8)

[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real
 
Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2
 
New Relic Insights
New Relic InsightsNew Relic Insights
New Relic Insights
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
 
Resultados da prova it essentians
Resultados da prova it essentiansResultados da prova it essentians
Resultados da prova it essentians
 

Elixir Meetup #15 - Monitorando Genstages