java para milhões de acessos

backstage de um grande portal

conceitos

scalability

high availability

micro services

ALTA DISPONIBILIDADE

ESCALABILIDADE

MICRO Serviços

single point of failure

ponto único de falha

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 quer

A

outra abordagem

o que o consumidor quer?

um exemplo real

O.S.

O.S.

O.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

-XX:+AggressiveHeap
-XX:+AggressiveOps
-XX:+UseCompressedOops
-XX:+UseStringDeduplicationJVM

Somente Java 8

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
@Benchmark
void methodA() {
    // versão A...
}

@Benchmark
void methodB() {
    // versão B...
}
Benchmark           Mode  Samples    Mean  MeanError  Units
SuaClasse.metodoA   avgt       10  17.588      0.230  ns/op
SuaClasse.metodoB   avgt       10  10.796      0.063  ns/op
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)

Apache Bench - AB

java

class ListTest

buscas em lista

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.

obrigado! _ :)

Java para milhões de acessos

Made with Slides.com