Arquitetura do Sistema - Execução de script remoto - Assuntos Gerais - GUJ
Arquitetura do Sistema - Execução de script remoto
pedrorjbr Abril 4, 2010, 5:04pm #1
Estou querendo fazer uma aplicação que executa scripts remotamente. O usuário poderia criar o script (provavelmente em LUA) e depois armazena-lo no servidor. Depois ele poderia executar esse script através de uma API, como um Webservice por exemplo.
Eu preciso de alta perfomance para executar esse script, por isso a escolha de LUA. Alguem tem outra sugestao?
Por eu precisar de perfomance, estava pensando se o Webservice é a melhor solução. Talvez eu pudesse criar um serviço do Windows TCP/IP que receberia a requisição dos usuarios. è importante ressaltar que teria varios usuarios utilizando ao mesmo tempo, logo tenho problema de concorrencia. Alguem pode opinar?
Os scripts poderao realizar consultas em um Banco de dados. Para aumentar a perfomance teria que usar um pool de conexões correto?
Para o webservice, se realmente for a escolha, pensei em utilizar C++ devido ao desempenho ou java mesmo.
Poderia opinar e me dar uma ajudar nessas escolhas?
aconstantino Abril 4, 2010, 5:12pm #2
[quote=pedrorjbr]Ola,
Pedro, pelo que você está dizendo me parece que vc precisa de uma forma de comunicação entre duas linguagem distintas. Verifique se a linguagem lua possue suporte a algum middleware como corba. Tudo isso já estaria implementado e a unica coisa que vc teria que fazer é o re-uso. Falando da concorrencia vc vai ter que estudar essa concorrencia e ver uma solução para o caso. Fazendo uma chamada de método vc vai conseguir programar normalmente em lua e retornar dados a linguagem java ou c++ (como preferir).
Sobre a dúvida dos pools, para aumentar a performance o ideal seria vc ter esse banco de dados na mesma rede local onde está rodando a aplicação LUA… ai sim, poderia usar o pool sem problemas.
Por sorte estou com um livro de sistemas distribuidos aqui na minha mesa que afirma o seguinte: CORBA foi projetado para ser eficiente, eh binario enquanto xml eh textual. em um estudo realizado comparando corba e webservices eles descobriram que as mensagens de requisicao soap sao 14 vezes maior que as equivalentes em corba e que uma requisicao soap demora 882 vezes mais que uma invocacao corba equivalente.
mas vai do seu caso… se precisar disponibilizar servicos publicos… teria q ser webservices mesmo
pedrorjbr Abril 4, 2010, 5:44pm #3
Entao. Não posso utilizar invocação remota de objetos por problemas de permissão. Entao acredito que arquitetura com DCOM, Corba, não podem ser utilizadas.
A opção seria criar um servico TCP/IP que receberia as requisiçoes e executar os scripts ou utilizar o Webservice.
Criar um serviço demandaria tempo e teria que implementar questoes como LOGGING e outras coisas. Com o webservice não tenho esse problema porém provavelmente é mais lento.
Entao através de uma app. cliente o usuário escolheria o script que quer executar e a app. enviaria uma requisição ao servidor que executaria aquele script.
A aplicação cliente pode ser em qualquer linguagem o webservice pensei em C++ e os scripts seriam em LUA.
aconstantino Abril 4, 2010, 5:50pm #4
[quote=pedrorjbr]Entao. Não posso utilizar invocação remota de objetos por problemas de permissão. Entao acredito que arquitetura com DCOM, Corba, não podem ser utilizadas.
mas quando ele executa vc precisa retornar dados também?
pedrorjbr Abril 4, 2010, 5:52pm #5
Preciso sim! Ele executa uma regra de negocio. Por exemplo, um script em LUA que faça a consulta no Serasa e informe ao client qual a situação daquele CPF.
Então haverá retorno de dados sim.
aconstantino Abril 4, 2010, 5:55pm #6
acho que a melhor solução seria webservices mesmo
pedrorjbr Abril 5, 2010, 1:20pm #7
Alguem com mais opiniões?
FrancoC Abril 5, 2010, 4:28pm #8
Vc nao tem permissão na sua rede para utilizar CORBA, mas teria para criar o seu proprio serviço de TCP/IP?
Outra coisa, em se tratando de escalabilidade de sistemas distribuídos o processamento em si é o último dos gargalos. Destarte, LUA e C++ para aumentar performance não são a solução para o teu problema.
pedrorjbr Abril 5, 2010, 6:40pm #9
Me disseram que sim. Tenho permissão para criar um TCP/IP mas nao posso instaciar objetos remotos…
Bom de uma maneira ou de outra terei que escolher uma linguagem para os scripts. Podendo escolher a mais veloz fico com LUA.