Aqui está uma solução para o que você está procurando. Nenhum java está envolvido na criação deste sistema, apenas bits de fonte aberta prontamente disponíveis. O modelo apresentado aqui pode trabalhar com outras tecnologias além daquelas que estou usando como exemplo.
- Os arquivos são HTTP POSTados para um endereço DNS específico da Round-Robin.
- O sistema POSTing dos arquivos, em seguida, descarta uma tarefa em um sistema AMQP (Rabbit MQ aqui), por meio de outro par de balanceadores de carga, para iniciar o fluxo de trabalho de processamento.
- Os balanceadores de carga que recebem o HTTP POST estão cada um na frente de um grupo de servidores de armazenamento de objetos do OpenStack Swift.
- Os balanceadores de carga possuem dois ou mais servidores de armazenamento de objeto do OpenStack Swift atrás deles.
- 'Round Robin não é HA' pode ser se os alvos forem eles mesmos. YMMV.
- Para maior durabilidade, os IPs nos RRDNS podem ser clusters de LB em espera a quente individuais.
- O servidor de armazenamento de objetos que realmente obtém o POST entrega o arquivo a um sistema de arquivos baseado no Gluster.
- O sistema Gluster deve ser distribuído (a.k.a. sharded) e Replicated. Isso permite escalar para densidades bobas.
- O sistema AMQP despacha o primeiro trabalho, faça o backup, para um nó de processamento disponível.
- O nó de processamento copia o arquivo do armazenamento principal para o armazenamento de backup e relata o sucesso / falha conforme necessário.
- O processamento do modo de falha não está diagramado aqui. Essencialmente, continue tentando até que funcione. E se nunca funcionar, passe por um processo de exceções.
- Quando o backup estiver concluído, o AMQP enviará o trabalho de processamento para um nó de processamento disponível.
- O nó de processamento envia o arquivo para seu sistema de arquivos local ou o processa diretamente do Gluster.
- O nó de processamento deposita o produto de processamento onde quer que vá e reporta o sucesso ao AMQP.
Esta configuração deve ser capaz de ingerir arquivos a taxas extremas de velocidade, considerando servidores suficientes. Obter 10GbE velocidades agregadas de ingestão deve ser factível se você upsize o suficiente. Obviamente, processamento que muitos dados que são rápidos exigirão ainda mais servidores em sua classe Processing machine. Esta configuração deve escalar até mil nós, e provavelmente além (embora até que ponto depende do que, exatamente, você está fazendo com tudo isso).
Os desafios profundos de engenharia estarão no processo de gerenciamento de fluxo de trabalho escondido dentro do processo AMQP. Isso é tudo software, e provavelmente personalizado para as demandas do seu sistema. Mas deve ser bem alimentado com dados!