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

Java para milhões de acessos

By Roberto Marin

Java para milhões de acessos

Palestra QCon 2015 - Arquiteturas Java para milhões de acessos Escalabilidade e resiliência são dois fatores críticos lembrados quando se pensa em arquiteturas para sites com grande volume de acesso. Ao mesmo tempo, desenvolver uma arquitetura exige muito conhecimento para identificar e sanar pontos críticos – e a habilidade de se utilizar ferramentas adequadas para cada problema. Nesta palestra conheceremos algumas arquiteturas Java utilizadas na nuvem, com base em exemplos de projetos reais reais e casos práticos. Veremos técnicas para identificar os gargalos de sua aplicação Java, e o uso do profiler gratuito VisualVM. São apresentados também parâmetros de otimização da JVM e exploradas modificações para diminuir o bootstrap de aplicações Java. Analisaremos, ainda, situações de onde e como aplicar cache de modo adequado. Tudo isso será discutido com base na experiência real da construção de portais com mais de 60 milhões de visitas por mês. Como bônus, discutimos o que foi aprendido com os erros cometidos na construção destas arquiteturas.

  • 2,767