questão de design / programação de alto nível [fechada]

1

Estou interessado em criar um servidor simples baseado na lan que aceite e atenda a um número limitado de conexões (< 25) de dentro da lan a qualquer momento. O servidor gera imagens dinamicamente e as transmite para os clientes em velocidades de ~ 40 a 50 MB / s. Quaisquer sugestões / comentários sobre exemplos de design disponíveis para tal servidor - multithreading, multitarefa, outros paradigmas de design a serem lembrados? E se este servidor for dimensionado para aceitar conexões (> 10000) de qualquer lugar na Internet. Algum parâmetro mudaria? Existem alguns exemplos disponíveis?

Esta é principalmente uma questão de tipo de programação. Eu não estou olhando para compressão de imagem ou quaisquer outros algoritmos específicos ou transportes. Simplesmente uma visão de alto nível do design geral. Se houver multithreading, que tipo de enfileiramento? Qual idioma é mais adequado, por quê? Alguma literatura / livros / artigos etc disponíveis? (além de comer)

Aprecie todos os ponteiros

    
por John Qualis 24.09.2010 / 07:23

4 respostas

1

Outra questão de arquitetura de alto nível. Uau 2 em um dia. Me sinto especial.

Seja o que for que você faz, tem que ser rápido e leve.

Eu provavelmente teria uma brincadeira com um servidor controlado por eventos. Node.js parece que pode ser um bom candidato para isso.
Não se preocupe muito com o número de conexões simultâneas ou com a taxa de transferência de dados.

A linguagem certa a usar é a que você conhece melhor, mas uma com algumas bibliotecas HTTP decentes também seria legal.

Sim. Provavelmente deveria haver multithreading, certamente se o design exigir isso. Veja .. Você precisa projetar o software primeiro e depois pensar nos sistemas abaixo.

Talvez comece com uma folha grande de papel e um lápis e anote tudo o que você quer, até que você a) fique sem coisas, ou b) fique sem lápis.

Depois, pesquise como fazer todas essas coisas.

Em seguida, contrate pessoas que saibam o que estão fazendo. Parece que você está tentando fazer tudo de uma vez só.

    
por 14.07.2011 / 00:43
1

Então você tem um servidor gerando coisas e você está procurando por um servidor servindo para aceitá-lo e disponibilizá-lo na internet? Mais de http?

Aceitar arquivos é fácil com sistemas de arquivos baseados em rede. Dependendo do sistema operacional da máquina geradora, instale o NFS ou o samba na máquina de serviço. Monte o sistema de arquivos no gerador. No gerador, execute os programas e peça que eles gravem as imagens na montagem, os arquivos estão automaticamente disponíveis (como arquivos locais) na máquina de serviço.

Servir arquivos estáticos locais sobre http é bastante fácil hoje em dia, no linux / bsd eu recomendaria usar o nginx. A simultaneidade que você mencionou o levará rapidamente para a Big Bandwidth, dependendo dos números que você está movendo para o território da CDN.

Observação: neste design, você não menciona metadados sobre as imagens (qual imagem é gerada, a que horas, quais são seus conteúdos, etc.) e como a geração é acionada.

    
por 24.09.2010 / 08:07
0

Would any parameters change?

Sim. não seria um servidor. Alguma pista de quanto processamento você precisaria para gerar 10.000 imagens em paralelo? E dada a sua largura de banda para 25 clientes que seriam de 16 GB / s a 20 GB / s apenas em largura de banda (fator 400).

Você provavelmente fala de 400 a 500 servidores aqui.

    
por 24.09.2010 / 08:07
0

"Gearman is a system to farm out work to other machines, dispatching function calls to machines that are better suited to do work, to do work in parallel, to load balance lots of function calls, or to call functions between languages."

por 17.04.2011 / 20:04

Tags