Skynet está nascendo
Posted on January 06, 2008

Joel Spolsky é um cara controverso, não há dúvidas quanto a isso. Às vezes queremos quebrar seu pescoço mas não podemos ignorar o cara. Muitas vezes na realidade ele está certo. Em particular existe dois artigos muito conhecidos dele e que eu gosto muito. O primeiro é o The Perils of JavaSchool e o outro é Can Your Programming Language Do This?. O trecho mais famoso é este:
- Sem entender programação funcional, você não consegue inventar MapReduce, o algoritmo que torna o Google tão massivamente escalável. Os termos “Map” e “Reduce” vêm de Lisp e programação funcional. MapReduce é, em retrospecto, óbvio a qualquer um que se lembre das aulas de programação funcional que programas puramente funcionais não tem efeitos colaterais e, portanto, são trivialmente paralelizáveis. Só o fato que o Google inventou MapReduce e a Microsoft não diz alguma coisa sobre porque a Microsoft está na laterna para conseguir funcionalidades básicas de procura funcionando, enquanto o Google se move para o próximo problema: construir Skynet o maior supercomputador massivo do mundo. Eu não acho que a Microsoft completamente entende quão longe eles estão.
Neste artigo Joel explica – utilizando Javascript – os conceitos básicos de Map e Reduce. Recomendo a leitura.
E provavelmente Adam Pisoni leu esse artigo também pois ele recentemente lançou Skynet mais uma implementação em Ruby de MapReduce inspirada no Google.
Segundo Adam, Skynet é um sistema totalmente distribuído, adaptativo, auto-atualizável, com tolerância a falhas sem um único ponto de falha. Ele usa um sistema de “recuperação em ponto” onde trabalhadores (workers) olham-se uns aos outros. Se um trabalhador morre ou falha por alguma razão, outro trabalhador irá notar e pegar essa tarefa. Skynet também não tem servidores mestres ‘especiais’, somente trabalhadores que podem agir como masters para qualquer tarefa a qualquer momento. Mesmo essas tarefas-mestre podem falhar e serão continuadas por outros trabalhadores.
A partir do README do projeto, a instalação se resume a apenas isso:
O mais interessante para nós, Railers, é que ele tem suporte a Rails, se instala na sua aplicação e ainda tem facilidades para trabalhar com ActiveRecord e distribuir processamento sobre dados retornados do banco. Ele também serve para trabalhar tarefas assíncronas, como você faria com BackgroundDrb. E o principal: ele parece muito simples de se usar. Assim que puder, vou brincar com isso.
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




