Projetando comunicações para extensibilidade

5

Estou trabalhando nos estágios de design de um aplicativo que a) coletará dados de várias fontes (no meu caso, dados científicos de portas seriais), mantendo o controle da idade dos dados, b) gerando estatísticas em tempo real (por exemplo, executando médias) c) exibir, gravar e manipular os dados (e estatísticas).

Eu prevejo que adicionarei os produtores de dados e os consumidores ao longo do tempo e gostaria de projetar esse aplicativo abstratamente, de modo que consiga adicionar trivialmente funcionalidades com uma pequena quantidade de código de interface. O que estou me perguntando é qual infraestrutura de comunicação devo usar para lidar com as interfaces. Em particular, como devo disponibilizar os dados e estatísticas processados para vários consumidores?

Algumas coisas que considerei:

  • Escrevendo para vários pipes nomeados (número variável). Cada consumidor lê de um deles.
  • Usando o FUSE para criar um sistema de arquivos do userspace em que read() retorna a linha mais recente de dados, mesmo que outro processo já tenha lido.
  • Criando um servidor TCP e fazendo com que os consumidores se conectem e solicitem dados individualmente.
  • Basta escrever os consumidores como parte do mesmo programa que agrega os dados.
  • Por isso, gostaria de ouvir os conselhos de todos vocês sobre como decidir como interagir com essas funções da melhor maneira de mantê-las separadas e permitir espaço para extensões.

        
    por Thomas Shaw 10.06.2014 / 01:47
    fonte

    1 resposta

    1

    Isso parece um trabalho para uma arquitetura Publicar / Assinar , com uma programação AKA Reativa . Embora o título possa parecer enganoso, Enterprise Integration Patterns é um excelente guia sobre como construir esses sistemas em grandes quantidades.

        
    por 10.06.2014 / 16:49
    fonte