Quando e como usar tornado? Quando é inútil?
-
26-09-2019 - |
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?
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?
- Fazer qualquer coisa tarefa intensiva computacional
- 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.