[SP-pm] Arquitetura de um projeto que utilizará sistema de fila com
Marcio Ferreira
marciodesouzaferreira at gmail.com
Wed Mar 14 06:38:12 PDT 2012
fatality!
Lorn++ =D
On Mar 14, 2012 10:25 AM, "Lindolfo Lorn Rodrigues" <lorn at lornlab.org>
wrote:
> 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 at gmail.com>
>
>> qual o trauma?
>> On Mar 14, 2012 9:52 AM, "Lindolfo Lorn Rodrigues" <lorn at lornlab.org>
>> wrote:
>>
>>> Use qualquer coisa, menos ElasticSearch.
>>> Sério.
>>>
>>> 2012/3/14 Marcio Ferreira <marciodesouzaferreira at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120314/dbf82a79/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list