Pergunta

Ok, o tornado é não bloqueado e muito rápido e pode lidar com muitos pedidos permanentes com facilidade.

Mas acho que não é uma bala de prata e, se apenas executarmos cegamente a base de Django ou qualquer outro site com tornado, ele não dará nenhum impulso de desempenho.

Não consegui encontrar uma explicação abrangente disso, então estou perguntando aqui:

  • Quando o tornado deve ser usado?
  • Quando é inútil?
  • Ao usá -lo, o que deve ser levado em consideração?
  • Como podemos fazer ineficiente site usando tornado?
  • Existe um servidor e um webframework. Quando devemos usar a estrutura e quando podemos substituí -la por outro?
Foi útil?

Solução

Existe um servidor e um webframework. Quando devemos usar a estrutura e quando podemos substituí -la por outro?

Essa distinção é um pouco embaçada. Somente se você estiver servindo páginas estáticas, você usaria um dos servidores rápidos como o Lighthttpd. Outros sábios, a maioria dos servidores fornece uma complexidade variável da estrutura para desenvolver aplicativos da Web. Tornado é uma boa estrutura da web. Twisted é ainda mais capaz e é considerado uma boa estrutura de rede. Tem suporte para muitos protocolos.

Tornado e Twisted são estruturas que fornecem suporte ao desenvolvimento de aplicativos da Web / Networking sem bloqueio e não bloqueio.

Quando o tornado deve ser usado? Quando é inútil? Ao usá -lo, o que deve ser levado em consideração?

Por sua natureza, a E/S assíncrona/não bloqueadora funciona muito bem quando é intensiva em I/S e não é intensiva em computação. A maioria dos aplicativos da Web / Networking se adapta bem a este modelo. Se o seu aplicativo exigir uma tarefa intensiva computacional a ser realizada, deve ser delegado a algum outro serviço que possa lidar melhor com isso. Enquanto o Tornado / Twisted pode fazer o trabalho do servidor da Web, respondendo às solicitações da Web.

Como podemos fazer um site ineficiente usando tornado?

  1. Fazer qualquer coisa tarefa intensiva computacional
  2. Introduzir operações de bloqueio

Mas acho que não é uma bala de prata e, se apenas executarmos cegamente a base de Django ou qualquer outro site com tornado, ele não dará nenhum impulso de desempenho.

O desempenho geralmente é uma característica da arquitetura completa de aplicativos da web. Você pode reduzir o desempenho com a maioria das estruturas da Web, se o aplicativo não for projetado corretamente. Pense em armazenamento em cache, balanceamento de carga etc.

Tornado e Twisted fornecem desempenho razoável e são bons para a criação de um aplicativo da Web muito performante. Você pode conferir os depoimentos de Twisted e Tornado para ver do que eles são capazes.

Outras dicas

Sinto muito por responder a uma pergunta antiga, mas me deparei com essa e me perguntei por que não tinha mais respostas. Para responder à pergunta de Bart J:

Eu gostaria de analisar feeds RSS no aplicativo Tornado. Você consideraria isso bastante intensivo computacional?

Bem, isso depende do tipo de análise que você está fazendo e de que hardware :) há muito tempo é muito tempo; portanto, se o seu aplicativo levar mais do que dizer meio segundo para responder, parecerá lento - perfil seu aplicativo.

A chave para os sistemas rápidos é a ótima arquitetura, não tanto as especificidades quanto, por exemplo, qual estrutura você está usando (Twisted, Tornado, Apache+PHP). O Tornado tem um estilo de processamento assíncrono e é isso que muito se resume a minha opinião. Node.js, Twisted e Yaws são exemplos de outros servidores da Web assíncronos que escalam muito bem devido a uma abordagem leve e estilo de processamento assíncrono.

Então:

Quando o tornado deve ser usado?

Quando é inútil?

O Tornado é bom para lidar com muitas conexões, pois pode responder a um cliente de entrada, despachar um manipulador de solicitação e não pense nesse cliente até que o contorno-callback seja pressionado na fila do evento. Portanto, para esse tornado de qualidade específico, deve ser usado quando você deseja escalar bem ao lidar com muitas solicitações. O processamento assíncrono facilita o desacoplamento funcional e o acesso de dados de nada compartilhado. Que balança muito bem com design sem estado DESCANSO ou outro Arquitetura Orientada a Serviçoss. Você também não precisa lidar com threads ou processos de desova com a sobrecarga inerente e pode salvar alguns dos problemas de bloqueio/IPC.

O tornado não fará muita diferença, por outro lado, se o seu back -end e/ou armazenamento de dados levar muito tempo para processar as solicitações. Ajuda a fazer designs e serviços da Web simultâneos em particular. A arquitetura simultânea facilita a dimensionamento do seu design e manter o acoplamento baixo. Essa é a minha experiência com o tornado, pelo menos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top