|
|
@ -54,10 +54,6 @@ |
|
|
|
color: white; |
|
|
|
color: white; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
img { |
|
|
|
|
|
|
|
max-height: 90%; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
td.seen { |
|
|
|
td.seen { |
|
|
|
font-style: italic; |
|
|
|
font-style: italic; |
|
|
|
font-weight: bold; |
|
|
|
font-weight: bold; |
|
|
@ -72,6 +68,11 @@ |
|
|
|
.reveal h1 { |
|
|
|
.reveal h1 { |
|
|
|
font-size: 3em !important; |
|
|
|
font-size: 3em !important; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.plain { |
|
|
|
|
|
|
|
background-color: white !important; |
|
|
|
|
|
|
|
padding: 10px !important; |
|
|
|
|
|
|
|
} |
|
|
|
</style> |
|
|
|
</style> |
|
|
|
</head> |
|
|
|
</head> |
|
|
|
|
|
|
|
|
|
|
@ -118,45 +119,18 @@ |
|
|
|
<img class="stretch" src="_images/streamprocessing-aws.png" alt="Lista de pontos de presença da CDN da Amazon" /> |
|
|
|
<img class="stretch" src="_images/streamprocessing-aws.png" alt="Lista de pontos de presença da CDN da Amazon" /> |
|
|
|
|
|
|
|
|
|
|
|
<aside class="notes"> |
|
|
|
<aside class="notes"> |
|
|
|
</aside> |
|
|
|
Essa não é uma apresentação sobre CDN, mas como a |
|
|
|
</section> |
|
|
|
apresentação requer algo que gere dados de forma |
|
|
|
|
|
|
|
contínua, eu vou usar CDN como exemplo, até porque |
|
|
|
<section> |
|
|
|
trabalhei com isso. |
|
|
|
<h3>O que é uma CDN</h3> |
|
|
|
|
|
|
|
</section> |
|
|
|
CDN nada mais é que um cache distribuído; ao invés |
|
|
|
|
|
|
|
de todo mundo ir até o servidor de origem, os dados |
|
|
|
<section> |
|
|
|
são entregues por um servidor mais próximo do cliente. |
|
|
|
<img class="stretch plain" src="_images/streamprocessing-connection.png" alt="" /> |
|
|
|
|
|
|
|
|
|
|
|
Assim temos um sistema distribuído (vários servidores) |
|
|
|
<aside class="notes"> |
|
|
|
que não tem pausa (porque os vários servidores estão |
|
|
|
Numa conexão "normal", o seu computador conecta no |
|
|
|
o tempo todo entregando dados). |
|
|
|
modem, que se conecta em um servidor do seu |
|
|
|
|
|
|
|
provedor, que se conecta em outro servidor, que se |
|
|
|
|
|
|
|
conecta em outro, que se conecta em outro até que, |
|
|
|
|
|
|
|
finalmente, ele chega ao servidor que você |
|
|
|
|
|
|
|
realmente quer. |
|
|
|
|
|
|
|
</aside> |
|
|
|
|
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
|
|
|
|
<img class="stretch plain" src="_images/streamprocessing-cdn.png" alt="" /> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<aside class="notes"> |
|
|
|
|
|
|
|
Com uma CDN, ao invés do servidor do provedor |
|
|
|
|
|
|
|
atravessar toda a internet até chegar ao servidor |
|
|
|
|
|
|
|
de destino, o servidor da CDN verifica se ele tem o |
|
|
|
|
|
|
|
arquivo requisitado e, se tiver, responde |
|
|
|
|
|
|
|
imediatamente. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quem sai ganhando com uma CDN? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- O usuário, já que a resposta vem mais rápida. |
|
|
|
|
|
|
|
- O cliente da CDN, pois ele não vai precisar ter |
|
|
|
|
|
|
|
um servidor ou uma banda larga para poder responder |
|
|
|
|
|
|
|
todos os usuários, já que alguns vão ficar somente |
|
|
|
|
|
|
|
na CDN. |
|
|
|
|
|
|
|
- O provedor, já que ele tem que pagar qualquer |
|
|
|
|
|
|
|
tráfego que saia da sua rede. |
|
|
|
|
|
|
|
</aside> |
|
|
|
</aside> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
@ -196,6 +170,8 @@ |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|
|
|
|
|
<h2>"Read Ready"</h2> |
|
|
|
|
|
|
|
|
|
|
|
<img class="stretch" src="_images/streamprocessing-read-ready.jpg" alt=""> |
|
|
|
<img class="stretch" src="_images/streamprocessing-read-ready.jpg" alt=""> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
@ -467,9 +443,9 @@ light.switch()</code></pre> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li><code>(map lambda iterator)</code></li> |
|
|
|
<li><code>(map lambda iterable)</code></li> |
|
|
|
<li><code>(fold lambda iterator start)</code></li> |
|
|
|
<li><code>(fold lambda iterable start)</code></li> |
|
|
|
<li><code>(filter lambda iterator start)</code></li> |
|
|
|
<li><code>(filter lambda iterable)</code></li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
@ -526,15 +502,15 @@ light.switch()</code></pre> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|
<img class="stretch" src="_images/streamprocessing-streamprocessing.png" alt=""/> |
|
|
|
<img class="plain stretch" src="_images/streamprocessing-streamprocessing.png" alt=""/> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|
<img class="stretch" src="_images/streamprocessing-pipeline.png" alt="" /> |
|
|
|
<img class="plain stretch" src="_images/streamprocessing-pipeline.png" alt="" /> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|
<img class="stretch" src="_images/unclephil-flinkpipelinereal.png" alt="" /> |
|
|
|
<img class="plain stretch" src="_images/unclephil-flinkpipelinereal.png" alt="" /> |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section> |
|
|
|
<section> |
|
|
|