-
Dan Luu
02/11/2014 23:00
A ideia de que uma política de evicção aleatória possa ser tão boa quanto o LRU é quase como dizer que a programação orientada a objetos é só uma moda. No entanto, "random tends to do worse than other algorithms" em cargas de trabalho reais, o que nos lembra que nem todo algoritmo aleatório é uma solução mágica. O estudo mostra que o 2-random é uma abordagem interessante, especialmente em caches maiores, onde o LRU pode sofrer com taxas de falha superiores. No fim, parece que a escolha do algoritmo de cache ainda é um dilema digno de debate entre desenvolvedores na hora do happy hour.
-
Antirez (Salvatore Sanfilippo)
30/10/2014 12:28
O post do blog da Stripe sobre Redis revela que o uso do fork() pode causar picos de latência, especialmente em instâncias EC2 com Xen, que não é exatamente conhecido por sua velocidade. Quando a latência atinge até um segundo durante o fork, isso pode resultar em amostras com latência elevada, impactando o 99º percentil. A diferença crucial aqui é que nem todos os usuários sentirão essa latência, apenas aqueles que coincidirem com o momento do fork. Para quem trabalha com aplicativos sensíveis à latência, isso merece atenção para evitar surpresas desagradáveis.
-
A analogia entre sorvete e sistemas distribuídos é bem interessante, trazendo à tona como a comunicação é vital em ambientes com múltiplas partes. A história do autor com os pais revela o dilema: mesmo em redes onde a comunicação falha, decisões precisam ser consistentes. Quando as mensagens se perdem, como ele diz, a leitura em um grupo pode não refletir o que foi escrito no outro, o que é um dilema clássico em sistemas distribuídos. E, sim, meus pais também tentariam me controlar com sorvete, e eu provavelmente aplicaria a mesma tática.
-
Antirez (Salvatore Sanfilippo)
21/10/2014 14:18
O dilema do Redis Sentinel traz à tona o eterno debate sobre resiliência em sistemas distribuídos. Como destacou Aphyr, "eles mataram -9 o master, o que causou um split brain...". No entanto, o verdadeiro problema foi que o mestre estava configurado para reiniciar com um conjunto de dados limpo. Isso é como se você formatasse o disco rígido antes de reinstalar o sistema operacional e ainda esperasse que tudo funcionasse normalmente. Assim, a questão não é só sobre o Sentinel, mas sobre a configuração dos nós que pode acabar em um cenário de falhas bizantinas.
-
Esse texto crítico sobre o modelo de colheita e rendimento de Fox e Brewer parece mais um reencontro com aqueles amigos que você evita, mas acaba vendo na festa. O autor faz um bom ponto ao afirmar que a apresentação do teorema CAP pode levar a confusões, mas ao mesmo tempo critica a falta de formalização do PACELC, o que é um ponto legítimo. E quando coloca que "CA sem P" pode ser interpretado de maneiras problemáticas, é a verdadeira essência de quando seu aplicativo não se comporta como esperado e você fica se perguntando se não deveria ter lido a documentação antes. No fim das contas, esses trade-offs são complexos, e há bons e maus argumentos de ambos os lados.
-
Antirez (Salvatore Sanfilippo)
09/10/2014 11:35
Depois de mais de uma década de desenvolvimento e algumas paradas de coração, o Redis finalmente está apresentando seu suporte a clusters com o Redis 3.0.0. "Parece que a decisão de começar o projeto estava mais para a pressa do que para a preparação", e se tem uma coisa que aprendemos no mundo dos devs é que começar um projeto na hora errada pode resultar em uma bagunça maior do que código legado. O que eu mais curto é que a comunidade estava lá, insistindo no sharding e na garantia de failover, enquanto o criador foi literalmente aprendendo a lidar com programação distribuída no caminho. É isso que eu chamo de um projeto evolutivo: em vez de abrir mão, eles foram atrás, refinando e aprendendo com os erros, algo que muitos poderiam se inspirar.
-
Barbara Liskov é um verdadeiro ícone da computação, e seu legado é impossível de ignorar. Seu princípio da substituição, o famoso L em SOLID, é a Bíblia dos desenvolvedores que trabalham com herança. O artigo sobre Viewstamped Replication é um prato cheio para quem gosta de sistemas distribuídos, mostrando que Liskov sabia o que estava fazendo antes mesmo de Paxos entrar na conversa. Ler seus trabalhos não é só uma aula de história, mas um lembrete de que a profundidade da ciência da computação pode ser acessível e impactante.
-
Drew DeVault
02/09/2014 00:00
Olha só, quem diria que até calculadoras TI poderiam abrir o jogo e entrar na dança do escalonamento com um kernel Unix-like? O autor destaca que, embora a multitarefa preemptiva possa parecer um conceito nerd, ela é fundamental para que nossos dispositivos não tenham sua CPU ociosa enquanto a gente lê artigos sobre isso. E, claro, o tal do "context switch" é como o switch de personagens nas partidas de Street Fighter: rápido e eficiente, garantindo que todos tenham sua vez no ringue.
-
Drew DeVault
01/09/2014 21:00
Falar sobre escalonamento de processos e multitarefa em um kernel para calculadoras é quase como misturar RPG com uma aula de sistemas operacionais. O autor mergulha na complexidade do multitasking preemptivo com uma referência esperta ao conceito de 'context switch'. Ele resume bem: enquanto sua calculadora pode não rodar Doom, ela ainda consegue gerenciar tarefas com elegância. A abordagem do KnightOS em utilizar um algoritmo de round robin é uma boa escolha para hardware limitado, garantindo que os processos não fiquem esperando como personagens de um jogo esperando a sua vez de atacar.
-
A discussão sobre como ensinar sistemas distribuídos é bem pertinente. O autor destaca a dificuldade de equilibrar teoria e prática, mencionando uma lista útil de tópicos, mas ao mesmo tempo, aponta a "lacuna entre teoria e prática". A verdade é que enquanto temos um mar de informações, muitas vezes falta um fio condutor que conecte esses conceitos na prática. Como bem diz, o equilíbrio entre teoria e prática não é só uma boa prática; é essencial para formar profissionais mais completos e capazes.
-
A AWS está explorando o TLA+ para aprimorar o design de sistemas e eliminar bugs sorrateiros. Como eles mesmos destacam, "é necessário ter uma descrição precisa do design" para evitar aquela dança do 'quase certo'. Isso é um respiro em comparação com aqueles documentos de design que mais parecem obras de arte abstrata. Definitivamente, quem está no barco da engenharia vai se beneficiar ao verificar esse tipo de abordagem.
-
A discussão sobre o teorema CAP realmente parece um interminável labirinto de confusões e mal-entendidos. O autor destaca que, ao contrário da crença popular de que se deve simplesmente escolher qualquer dois dos três pilares, a realidade é que "partições acontecem em sistemas de larga escala" e a tolerância a falhas é obrigatória. PACELC surge como uma alternativa mais clara, mas ainda deixa algumas arestas penduradas. Ignorar essas nuances pode significar correr o risco de dar aquele erro 404 na hora de aplicar conceitos em sistemas distribuídos.
-
Antirez (Salvatore Sanfilippo)
14/07/2014 06:53
Filas são como aquele amigo que promete cozinhar mas deixa a comida no micro-ondas. Elas separam a tarefa de agendar e executar operações, o que é fundamental em aplicações web. Como mencionado, um "produtor" insere uma tarefa na fila e um "consumidor" a executa. Prefira sempre a entrega "pelo menos uma vez" — é melhor lidar com tarefas repetidas do que perder uma completamente no processo, tipo quando seu código compila mas não roda. E quem não conhece o drama de re-encaminhar e-mails por causa de falhas de rede?
-
O iostat pode ser uma ferramenta útil, mas como bem alertado, o campo svctm é "fundamentalmente quebrado" e pode enganar até o dev mais esperto. Esse número que deveria representar o tempo médio de operação é, na verdade, um grande mistério em sistemas modernos com SSDs. É como olhar para um log do servidor e achar que entendeu tudo, mas na verdade está só olhando para o GIF errado. Portanto, cuidado ao usar essas métricas sem uma compreensão adequada; o iostat pode não ser o oráculo que você pensava.
-
Richard Cook traz um olhar interessante sobre como ouvir mais os operadores pode melhorar a segurança em sistemas complexos. Ele discute o modelo de Rasmussen e a relação delicada entre limites de custo, esforço de engenharia e segurança. Como ele mesmo diz, 'repetidas experiências com operações bem-sucedidas nos levam a acreditar que a margem é conservadora', o que pode ser um convite perigoso para apressar as coisas sem perceber. Uma boa reflexão para qualquer dev que gosta de lidar com sistemas em camadas e suas complexidades.
-
Andrew Kelley (criador do Zig)
19/06/2014 21:58
Esse projeto de transformar seu Raspberry Pi em um servidor de música pode parecer bom no papel, mas o autor não hesita em dizer que o Raspberry Pi é "overhyped". É uma crítica interessante e que vale a pena considerar, especialmente se existem opções como o Beagle Bone Black, que oferecem CPUs mais rápidas e menos dor de cabeça com software. Parece que é mais sobre como aproveitar a tecnologia do que a marca em si, não é?
-
Em um mundo dominado por Paxos e Raft, a Replicação Viewstamped é como aquele jogo indie que todos ignoram, mas que na verdade fornece uma jogabilidade fantástica. Introduzida em 1988 por Oki e Liskov, essa abordagem preenche a lacuna entre a fama e a eficiência, mesmo que tenha surgido antes de Paxos. A diferença entre eles é sutil, mas real, o que torna essencial conhecer essas alternativas menos badaladas, especialmente quando se trata de implementar algoritmos distribuídos robustos e confiáveis. No fim das contas, um desenvolvedor informado é um desenvolvedor mais eficiente.
-
Antirez (Salvatore Sanfilippo)
16/05/2014 08:15
Usar Redis para gerenciar locks distribuídos é uma espada de dois gumes. Enquanto muitos acham ótima essa solução, outros acreditam que é uma receita para problemas de segurança. O post propõe um algoritmo que tenta equilibrar segurança e eficiência, com foco em três propriedades fundamentais. No final das contas, é como tentar fazer um pão de queijo perfeito: precisa de queijo, mas também de tempo e temperatura certos. Essa discussão pode trazer melhorias para um cenário que, admitamos, precisa de mais que um simples "expire".
-
Nancy Lynch é praticamente a 'mãe' dos sistemas distribuídos, e seus trabalhos são como easter eggs para quem quer aprofundar o conhecimento no assunto. Ela está em todo lugar, desde o famoso livro 'Distributed Algorithms' até a prova do teorema CAP. Entre seus artigos, "A Hundred Impossibility Proofs for Distributed Computing" é uma leitura essencial que, apesar de seu nome complicado, é mais acessível do que parece e repleta de referências valiosas. E quem não ama uma boa narrativa onde se desprendem conceitos como consenso e a impossibilidade de certa lógica nas redes?
-
O tema de commit atômico não-bloqueante realmente parece mais complexo que um puzzle do Mario. A discussão sobre detectores de falhas é super relevante, especialmente para entender como podemos aprimorar a confiabilidade em sistemas distribuídos. "Cada processo usa estado local para manter uma lista de outros processos que suspeita terem falhado", o que nos mostra que a descentralização pode ser um divisor de águas, mas também fonte de erros. É uma dança delicada entre completar e ser preciso, onde um pequeno passo em falso pode custar caro.