NET grade computação distribuída migração, recomendações sobre bibliotecas, arquitetura [fechado]
-
22-07-2019 - |
Pergunta
I têm uma
Eu tinha como a alavancagem mais de um computador para ajuda neste cálculo . Eu não tenho de aprovação ou de infra-estrutura para usar o IIS (isso é política não vai mudar), mas eu posso usar, por exemplo, WCF com ligação a NetTcpBinding endpoint, eu testei esta comunicação através do servidor e tem as permissões e obras adequadas.
Para começar eu estou pensando ter um exe master (console app) e vários escravos em outros servidores como trabalhadores dedicados (caso sejam exes? Ou serviços do Windows?), Eventualmente, eu poderia ter este conjunto para rodar em centenas de estações de trabalho (bem como servidores) dentro da empresa durante tempo ocioso (ou quando um protetor de tela está ativo).
Eu poderia escrever isso mesmo, mas vou ter de comunicações Pega, 1, 2-way? rescisão antecipada (intermediário convergência resultado controlo), o cancelamento de tarefas não é mais necessário, a implantação do trabalho, a descoberta de máquinas disponíveis e prontos para implantação de trabalho, estrangulamento / pausa do trabalho, se uma estação de trabalho não está ocioso? tudo o resto que se passa em um sistema distribuído?
Caso o mestre (controlador de tarefas) saber os endereços (IP) de todos os trabalhadores escravos e dizer-lhes para fazer o trabalho (se estiverem disponíveis) ou devem os trabalhadores escravos só sei o endereço principal e pedido de trabalho quando estão em uma posição para fazê-lo, ou a comunicação deve fluir nos dois sentidos? Esta será executado em um relógio 24 horas com cerca de 9 corridas apostaram por dia para apoiar as regiões de negócios diferentes.
Eu estou procurando recomendações para grade .net / bibliotecas distribuídas que pode ajudar e alguns conselhos arquitetura neste esforço.
Atualizar
Tem experiência qualquer pessoa usando qualquer um dos seguintes?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
ou usados ??JavaSpaces, Jini de .net ou encontrados tecnologias .net equivalente
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
Graças
Solução
Eu iria investigar a possibilidade de usar um baseado no espaço arquitetura para isso.
O mestre iria escrever os trabalhos em um espaço (essencialmente um repositório de objetos). Os clientes que consomem estão sempre à procura de emprego e, como postos de trabalho tornam-se disponíveis, eles vão puxar a partir do espaço, processar e escrever de volta os resultados para esse espaço, ou de outra (todos sob uma transação). Você iria marcar empregos como pertencente a um determinado prazo, a fim de resultados do grupo.
A vantagem disto é que este escalas muito facilmente (simplesmente adicionando mais consumidores). Os consumidores teriam de determinar quando eles podem trabalhar, e só precisa ser configurado com informações sobre o espaço (como encontrá-lo). O produtor é dissociado completamente do conjunto de consumidores.
Como o trabalho é processado em uma transação, se um consumidor não completar, o trabalho retorna para o espaço e está disponível para o processamento por outro consumidor.
Você pode lidar com resultados intermediários facilmente. O produtor tem resultados a partir do espaço e pode derivar intermediários como os resultados se tornam disponíveis. Você pode cancelar as tarefas facilmente. Simplesmente removê-los do espaço.
Você pode adicionar mais produtores com muita facilidade. Eles simplesmente escrever para o mesmo espaço, e se os trabalhos são marcados de forma adequada, os resultados estão ligados ao produtor de forma inequívoca.
Eu não tenho certeza o que os quadros estão disponíveis para .Net, infelizmente (eu sou do mundo Java e usaria JavaSpaces - estes descoberta uso dinâmico, e ao lado de nenhuma configuração é necessária). Mas vale a pena alguns pesquisando. Talvez (se isso é suficiente poderoso), você pode escrever C # produtores / consumidores de interface para uma infra-estrutura Javaspace.