JAVA PARA MILHÕES DE ACESSOS

Propaganda
JAVA PARA MILHÕES DE
ACESSOS
ROBERTO MARIN
robertomarin[at]gmail.com
https://slides.com/robertomarin/arquiteturas-java-milhoes-acessos
BACKSTAGE DE UM
GRANDE PORTAL
CONCEITOS
SCALABILITY
ESCALABILIDADE
HIGH AVAILABILITY
ALTA DISPONIBILIDADE
SINGLE POINT OF FAILURE
MICRO SERVICES
PONTO ÚNICO DE FALHA
MICRO SERVIÇOS
DISASTER RECOVERY
DR
SCALABILITY
ESCALABILIDADE
DATABASE
SCALABILITY
ESCALABILIDADE
SINGLE POINT OF FAILURE
PONTO ÚNICO DE FALHA
SINGLE POINT OF FAILURE
PONTO ÚNICO DE FALHA
HIGH AVAILABILITY
ALTA DISPONIBILIDADE
DATACENTER A
DATACENTER B
MICRO SERVICES
MICRO SERVIÇOS
MICRO SERVICES
MICRO SERVIÇOS
MICRO SERVICES
MICRO SERVIÇOS
DISASTER RECOVERY
DR
A
B
DR
COMO SERIA UMA
ARQUITETURA COM TODOS
ESSES CONCEITOS?
ESCALÁVEL, ALTAMENTE
DISPONÍVEL, SEM PONTOS
ÚNICOS DE FALHA E COM DR
ESCALÁVEL, ALTAMENTE DISPONÍVEL, SEM
PONTOS ÚNICOS DE FALHA
E UM DR PARA CADA MICRO SERVIÇO
PRODUTOS
PROBLEMAS
FOCO
O QUE O
CONSUMIDOR
QUER
PRIMEIRA VERSÃO
O QUE O
CONSUMIDOR
QUER
A
SEGUNDA VERSÃO
O QUE O
CONSUMIDOR
QUER
B
PRIMEIRA VERSÃO
O QUE O
CONSUMIDOR
A
QUER
OUTRA ABORDAGEM
O QUE O CONSUMIDOR QUER?
UM EXEMPLO REAL
O.S.
O.S.
S.
ENTÃO, NUNCA DEVO
REFAZER NADA?
CONTEÚDO,
CONTEÚDO,
e mais conteúdo.
PANDA
PENGUIN
HUMMINGBIRD
TAMANHO DAS PAGINAS
DA AMAZON
COMO RECUPERAR
TANTA INFORMAÇÃO?
MICRO SERVICES
LEMBRA?
QUANTOS SERVIÇOS UMA
PÁGINA DA AMAZON.COM
CHAMA POR REQUEST?
150
PER
FOR
MANCE
PARAMETROS JVM
www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html
-XX:+AggressiveHeap
-XX:+AggressiveOps
-XX:+UseCompressedOops
SOMENTE JAVA 8
-XX:+UseStringDeduplicationJVM
GARBAGE COLLECTOR
SERIAL COLLECTOR
-XX:+UseSerialGC
PARALLEL COLLECTOR
-XX:-UseParallelGC
CONCURRENT MARK SWEEP
-XX:+UseConcMarkSweepGC
GARBAGE FIRST COLLECTOR
–XX:+UseG1GC
PERMANENT GENERATION
METASPACE
JAVA E
MEMÓRIA :@
Xmx
Xms
Xmn?
JAVA E
MEMÓRIA :@
Xmx
Xms
Xmn?
class MemoryTest
VISUALVM
printf("<html>")
.
.
.
printf("</html>")
VISUALVM
class ThreadTest
OPENJDK: JMH
@Benchmark
void methodA() {
// versão A...
}
@Benchmark
void methodB() {
// versão B...
}
OPENJDK: JMH
Benchmark
SuaClasse.metodoA
SuaClasse.metodoB
Mode
avgt
avgt
Samples
10
10
Mean
17.588
10.796
MeanError
0.230
0.063
Units
ns/op
ns/op
APACHE BENCH - AB
ab -c 10 -n 1000 http://www.vivareal.com.br/
APACHE BENCH - AB
Percentage of the requests served within a certain time (ms)
50%
58
66%
60
75%
63
80%
65
90%
67
95%
69
98%
71
99%
72
100%
72 (longest request)
JAVA
BUSCAS EM LISTA
class ListTest
JAVA E FALHA
NOSSA :@
BOOTSTRAP
20s
BOOTSTRAP
BOOTSTRAP
CACHE
CACHE TRADICIONAL
CACHE + HA
CDN
DEVOPS
E TALVEZ A DICA MAIS
IMPORTANTE DE TODAS
ASSÍNCRONO.
ASSÍNCRONO.
JAVA PARA MILHÕES DE ACESSOS
OBRIGADO! _ :)
ROBERTO MARIN
robertomarin[at]gmail.com
https://slides.com/robertomarin/arquiteturas-java-milhoes-acessos
Download