2009-06-09 14 views
11

Estoy intentando construir un servidor de imágenes web. Sirve imágenes a muchos clientes (más de 10 mil) simultáneamente. (Será un problema más fácil si hay menos clientes). ¿Cuál es una buena manera de hacerlo, con un retraso lo más pequeño posible?¿Cómo construir un servidor web de imagen?

Soy nuevo en este campo. Cualquier sugerencia será bienvenida.

+0

¿Usted ha considerado el uso de un servidor de imágenes existente? http://en.wikipedia.org/wiki/Image_server –

Respuesta

7

Sin duda, busque un buen servicio de entrega. Akamai es el más conocido.

si realmente desea hacerlo por su cuenta, olvídese de Apache/IIS. mucho más apropiados son servidores web 'light'. Dos muy buenos son lighthttp y NginX (wiki). NginX en particular, tiene un rendimiento realmente sólido.

Editar: Las redes de distribución de contenido (CDN) han florecido en los últimos años, y es mucho más fácil encontrar las más fáciles y más económicas. En particular, es bastante simple poner su contenido estático en el S3 de Amazon y usar CloudFront.

+0

Probé Nginx, y es un servidor realmente bueno. Gracias. – Lily

1

¿Cómo se sirven las imágenes? ¿Las imágenes se generan sobre la marcha? o están estáticos y almacenados como .jpg u otro formato en el sistema de archivos?

De cualquier forma, usaría ASP.NET .ashx (controladores genéricos) y usaría las clases System.Drawing.

también querrá configurar TCP/IP Network Load Balancing por http://support.microsoft.com/kb/323431

+0

Todas las imágenes se generan sobre la marcha. – Lily

+0

¿Por qué votar abajo? – Nate

2

Con tantos clientes, es posible que desee ver en el uso de una red de distribución de contenidos (como Akamai). En la superficie, puede parecer costoso, pero si realmente observas el costo de mantener el hardware y particularmente el costo del ancho de banda, comienza a tener sentido desde el punto de vista económico.

2

Si desea diseñar el servidor web de archivos estáticos más rápido con la latencia más baja, así es como lo haría.

  1. utilizar un bucle de eventos para detectar que los zócalos están dispuestos
  2. poner esas tomas en una cola
  3. crear una pila de hilos para hacer frente a los zócalos (1 para cada núcleo). Cuando terminen, colóquelos nuevamente en la pila.
  4. Asignar trabajo a hilos.
  5. Guarde en caché todos los archivos de imagen en la memoria.

Esto es esencialmente lo que los puertos de terminación IO son menos el almacenamiento en caché de los archivos. Este modelo está disponible en Windows y Solaris.

http://technet.microsoft.com/en-us/sysinternals/bb963891.aspx

alt text

Cuestiones relacionadas