[SP-pm] Arquitetura de um projeto que utilizará sistema de fila com
Lindolfo Lorn Rodrigues
lorn at lornlab.org
Wed Mar 14 06:23:09 PDT 2012
Eu não sou uma pessoa que goste de escrever emails grandes, talvez algum
dia eu escreva um blog post sobre isso.
Para mostrar alguns dos meus motivos, peguei o changelog das duas ultimas
versões:
http://www.elasticsearch.org/download/2012/03/01/0.19.0.html
http://www.elasticsearch.org/download/2012/01/10/0.18.7.html
query never returns
(#1725<http://github.com/elasticsearch/elasticsearch/issues/issue/1725>
)
- Orderly shutdown with unicast discovery might cause the shutdown node
to still be part of the election process
(#1740<http://github.com/elasticsearch/elasticsearch/issues/issue/1740>
)
- NullPointerException when asking for null valued json field when
fetching search request
(#1749<http://github.com/elasticsearch/elasticsearch/issues/issue/1749>
)
Cluster metadata files destroyed when using blob store gateway causing data
loss (#1564<http://github.com/elasticsearch/elasticsearch/issues/issue/1564>
)
- Two different indexes with the same nested object name causing
ArrayIndexOutOfBoundsException
(#1575<http://github.com/elasticsearch/elasticsearch/issues/issue/1575>
)
S3 blob storage gateway: deleting an index named x destroys data for any
index with name beginning with x
(#1582<http://github.com/elasticsearch/elasticsearch/issues/issue/1582>
)
Olha o tipo de bug que eles ainda estão resolvendo, se vocês derem uma
olhada caso ocorra QUALQUER um desses bugs:
- A possibilidade da sua base corromper é grande.
- Seu sistema vai ficar indisponivel
Se a sua base foi corrompida e você precisa reindexar seus documentos, isso
é um trabalho pesado e lento ( e não tem nada a ver com o ES )
ElasticSearch, como o nome já diz, é um sistema para BUSCA, como Solr, não
um sistema para guardar objetos/dados.
Usar Solr/ElasticSearch como persistencia de dados é errado, e deixar de
usar Solr como sistema de busca para usar ElasticSearch também não é uma
boa escolha.
Apenas como lição de casa, deem uma olhada no changelog das ultimas versões
do Solr:
http://lucene.apache.org/solr/solrnews.html
Procurem quantos bugs criticos desse tipo foram corrigidos/existem ( se
olhar no Jira do projeto )
PS: Até que o email ficou grande :D
2012/3/14 Marcio Ferreira <marciodesouzaferreira em gmail.com>
> qual o trauma?
> On Mar 14, 2012 9:52 AM, "Lindolfo Lorn Rodrigues" <lorn em lornlab.org>
> wrote:
>
>> Use qualquer coisa, menos ElasticSearch.
>> Sério.
>>
>> 2012/3/14 Marcio Ferreira <marciodesouzaferreira em gmail.com>
>>
>>> Só dando um pitaco, ao contrário do mongoDB, experimente o ElasticSearch
>>> - performance incrível. E se atente na forma de como será feita a consulta
>>> na API das redes, as vezes consultar uma vez ao dia já resolva seu
>>> problema, e evite os horários de pico prq rodar seu scraper =S
>>> On Mar 14, 2012 8:03 AM, "Tiago Peczenyj" <tiago.peczenyj em gmail.com>
>>> wrote:
>>>
>>>> Oi
>>>>
>>>> é possivel criar uma fila usando um feed rss ou criando arquivos em um
>>>> diretorio. basta ver o que é mais interessante para o teu projeto. Por
>>>> exemplo, se vc publicar um feed e tiver do outro lado um consumidor
>>>> fazendo pooling vai ser tão bom quanto um ActiveMQ se vc não estiver
>>>> com um volume muito grande de dados E se puder esperar uns segundos.
>>>> Isso pode simplificar a tua infra num primeiro momento.
>>>>
>>>> On Tue, Mar 13, 2012 at 11:33 PM, Daniel de Oliveira Mantovani
>>>> <daniel.oliveira.mantovani em gmail.com> wrote:
>>>> > Shonorio, o Gearman não é um sistema de fila, ele funciona como um
>>>> > distribuid system.
>>>> >
>>>> > Você deva usar o AMPQ[1] ou o Apache ActiveMQ[2] para criar a fila e o
>>>> > Gearman para processar a informação. O Worker não sabe da existência
>>>> > do Client, quem faz esse intermédio é o Gearman Server[3].
>>>> >
>>>> > "A Gearman powered application consists of three parts: a client, a
>>>> > worker, and a job server. The client is responsible for creating a job
>>>> > to be run and sending it to a job server. The job server will find a
>>>> > suitable worker that can run the job and forwards the job on. The
>>>> > worker performs the work requested by the client and sends a response
>>>> > to the client through the job server. Gearman provides client and
>>>> > worker APIs that your applications call to talk with the Gearman job
>>>> > server (also known as gearmand) so you don't need to deal with
>>>> > networking or mapping of jobs. Internally, the gearman client and
>>>> > worker APIs communicate with the job server using TCP sockets. To
>>>> > explain how Gearman works in more detail, lets look at a simple
>>>> > application that will reverse the order of characters in a string. "
>>>> >
>>>> > [User Interface] <===>[RDBMS]<===> [Queue System]
>>>> > /\
>>>> > ||
>>>> > ||
>>>> > [Distribuid
>>>> > System] <===> [Document-oriented database]
>>>> >
>>>> >
>>>> > Se baseando nesse arquitetura o Queue System vai mandando "jobs" de
>>>> > acordo com número de workers que você tem disponível, evitando um
>>>> > overhead e criando um sistema "auto scalability".
>>>> >
>>>> > Se eu fosse você eu me preocuparia com a forma de armazenamento dos
>>>> > dados, as redes sociais já garantem a integridade dos dados, sendo
>>>> > assim uma solução Document-oriented database te pouparia muito
>>>> > processamento e trabalho. Existem várias opções, eu recomendo o
>>>> > MongoDB[4] mesmo com o Eden Cardim me crucificando por isso.
>>>> >
>>>> > Guarde os dados dos usuários e do site num RDBMS, se você estiver
>>>> > pensando num RDBMS open source eu te recomendo o PostgreSQL, ele tem
>>>> > um ótimo suporte ao paradigma temporal.
>>>> > Se você usar o PostgreSQL, eu te recomendo usar o Pgpool[5] para
>>>> > replication, clustering, load balance etc.
>>>> >
>>>> > [1] - http://www.amqp.org/about/what
>>>> > [2] - http://activemq.apache.org/
>>>> > [3] - http://gearman.org/
>>>> > [4] - http://www.mongodb.org/display/DOCS/Sharding+Introduction
>>>> > [5] - http://www.pgpool.net/mediawiki/index.php/Main_Page
>>>> >
>>>> > Grande Abraço.
>>>> >
>>>> > 2012/3/13 Solli Honorio <shonorio em gmail.com>:
>>>> >> Pessoal,
>>>> >>
>>>> >> Estou iniciando um projeto de monitoramento de mídias sociais e
>>>> fazer algum
>>>> >> processamento com estas informações, e acredito que utilizar
>>>> esquemas de
>>>> >> fila serviria muito bem para este ambiente.
>>>> >>
>>>> >> Basicamente o esquema que estou imaginando para o ambiente é :
>>>> >>
>>>> >> [ Interface com o usuário ] <===> [Banco de Dados] <====> [Sistema
>>>> de Fila]
>>>> >>
>>>> >> || ||
>>>> >>
>>>> >> || +- [Executa a pesquisa]
>>>> >>
>>>> >> ||
>>>> >>
>>>> >> +-- [ Processa o resultado da pesquisa]
>>>> >>
>>>> >> As ações que eu imagino nisto são :
>>>> >>
>>>> >> * interface com o usuário não é meu problema, tem um webdeveloper
>>>> >> trabalhando nisto;
>>>> >> * não quero de maneira alguma fazer os 'agentes' interagir
>>>> diretamente com o
>>>> >> banco de dados, por isto penso em criar um cliente que leia o banco
>>>> de dados
>>>> >> e coloque os dados formatados para o agente na fila do agente. O
>>>> caminho
>>>> >> contrário também, ler o resultado do agente e gravar no banco de
>>>> dados;
>>>> >>
>>>> >> Estou avaliando a possibilidade de utilizar o Gearman (na verdade
>>>> não tenho
>>>> >> certeza se esta é a melhor alternativa mesmo), na verdade o
>>>> >> AnyEvent::Gearman. Mas algumas coisas me chamaram no Gearman do
>>>> qual eu
>>>> >> acho meio estranho para o ambiente sistema de fila que eu tenho na
>>>> minha
>>>> >> cabeça.
>>>> >>
>>>> >> 1. o worker (aparentemente o cara que executará o serviço) não fica
>>>> em loop
>>>> >> lendo uma fila, parece que ele está sendo acionado pelo cliente;
>>>> >> 2. o parece que o cliente fica 'preso' aguardando o final da
>>>> execução do
>>>> >> worker.
>>>> >>
>>>> >> Ainda não tenho código (que o meu cliente não leia isto, pois estou
>>>> muito
>>>> >> atrasado), mas eu gostaria de obter recomendações de vocês sobre a
>>>> >> arquitetura que estou imaginando.
>>>> >>
>>>> >> Obrigado,
>>>> >>
>>>> >> Solli Honorio
>>>> >>
>>>> >>
>>>> >> --
>>>> >> "o animal satisfeito dorme". - Guimarães Rosa
>>>> >>
>>>> >> =begin disclaimer
>>>> >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> >> =end disclaimer
>>>> >>
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > "If you’ve never written anything thoughtful, then you’ve never had
>>>> > any difficult, important, or interesting thoughts. That’s the secret:
>>>> > people who don’t write, are people who don’t think."
>>>> > =begin disclaimer
>>>> > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> > SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> > =end disclaimer
>>>>
>>>>
>>>>
>>>> --
>>>> Tiago B. Peczenyj
>>>> Linux User #405772
>>>>
>>>> http://pacman.blog.br
>>>> =begin disclaimer
>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>
>>> =begin disclaimer
>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>>
>>
>> =begin disclaimer
>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
> =begin disclaimer
> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120314/b1ee87e1/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list