2009-05-25 22 views

Respuesta

36

Durante el año pasado he tenido que acelerar esta cuestión para un proyecto en el que está trabajando mi compañía, y he encontrado estos recursos extremadamente útiles: highscalability.com de Todd Hoff; Scalable Internet Architectures, por Theo Schlossnagle; y Building Scalable Web Sites, por Cal Henderson. Highscalability.com, en particular, le indicará muchas buenas presentaciones, tutoriales, libros y documentos, y es un excelente lugar para comenzar. Todos los consejos son prácticos y se basan en la experiencia en sitios como Flickr, Twitter y Google.

BTW, la escalabilidad no es el rendimiento. Un sistema perfectamente escalable es uno que tiene un costo marginal fijo para agregar usuarios adicionales o capacidad.

+0

¡Bonitos recursos que señaló allí! – mmcdole

+0

oh consejo de escalabilidad de twitter, debe ser bueno ...;) – Jonatan

+0

¡Ja, podría haber elegido un mejor ejemplo, supongo! ;-) Pero Twitter tuvo que luchar mucho para superar sus dolores de crecimiento. Consulte http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster. –

0

Yo recomendaría este libro para que:

http://www.amazon.com/Scalable-Internet-Architectures-Developers-Library/dp/067232699X/ref=sr_1_1?ie=UTF8&s=books&qid=1243267630&sr=8-1

A pesar de que esto es principalmente un libro de PHP, las ideas son los mismos para cualquier pila web.

+0

Estoy de acuerdo, aunque no describiría esto como un libro de PHP. Tiene ejemplos significativos en Perl, Oracle PL/SQL y otros lenguajes, y también hay mucho material de alto nivel, como el Capítulo 5 sobre balance de carga (sin muestras de código) y el Capítulo 6 sobre servicio de contenido estático (un pequeño fragmento de PHP) Una crítica que he visto es que él se enfoca demasiado en la biblioteca de propagación de Johns Hopkins, pero la gente en general en la comunidad de escalabilidad alta elogia al respecto. –

1

Antes de comenzar con la técnica, debe saber el alcance de la aplicación en frío. ¿Qué espera el cliente/unidad de negocio en términos de rendimiento y cuáles son las áreas críticas de falla? Scott Hanselman tuvo un gran podcast con respecto al tema.

Algunas de las cositas que se ofrecen: no use el almacenamiento en caché a menos que sea necesario; servir archivos es más rápido que ensamblar fragmentos de una base de datos; saber cómo manejar los tiempos de servidor Peek; saber cuáles serán tus picos.

Una vez más, conocer el alcance del primer uso con el fin de saber si usted escala debe.

0

This es exactamente lo que necesita! La Guía de Arquitectura de Aplicaciones fue creada por el equipo de Patrones y Prácticas de Microsoft para ayudar a los arquitectos ...

0

Esta es una buena introducción al tema: IBM developerWorks tenía un par de interesantes tutoriales sobre el uso de patrones de arquitectura para aplicaciones que escalan: here y here.

2
  • Tiendo a pensar que la escalabilidad está estrechamente relacionada con el mantenimiento. Y parece que a menudo se pasa por alto que las personas pasan muy poco tiempo desarrollando aplicaciones y el resto del tiempo manteniendo.

  • También, la escala tiene casi seguro que ver con los datos (que es más ágil que el código - por lo que le gustaría tener más y más de lo mismo), por eso el costo de acceso de almacenamiento debe mantenerse entre O(1) y O(n).

  • La aplicación perfectamente escalable para mí es una que pude copiar de un entorno a otro (similar) entorno, configure algunos valores y ejecútelo para ampliar el ámbito de ejecución de toda la aplicación.

3

Ya hay algunas buenas respuestas publicadas aquí. En algunos de los libros y enlaces, encontrará algunos patrones comunes de pensamiento.

  • Escribir como poco código como sea posible la reutilización de código

  • tanto como sea posible

  • No sobre, o bajo su diseño abstracto

  • dividirlo en zonas modulares que puede ejecutarse en sistemas separados o múltiples. El procesamiento pesado debe dejarse en un sistema separado.

4

Esta es una buena lectura en livejournal y cómo han escalado su aplicación con el tiempo.

danga.com/words/2004_mysqlcon/mysql-slides.pdf [PDF]

Puede que no sea el tipo de cosa que usted está buscando, pero es uno de los mejores "Esto es lo que hicimos y por qué" visiones generales sobre la escala.

+0

+1 Esto camina todo el proceso comienza desde una máquina hasta la fragmentación de un sitio grande en clústeres de usuarios. Su presentación de 2007 está aquí: http://www.scribd.com/doc/39892/Website-Scalability-LiveJournal-Behind-The-Scenes-2007 –

+0

Una versión más larga de la presentación de 2007: http: //www.danga. com/words/2007_04_linuxfest_nw/linuxfest.pdf ver –

1

Hagas lo que hagas, no puedes diseñar el sistema desde el principio para que sea escalable para todas tus necesidades. A menudo, una vez que tiene su sistema en ejecución, encontrará cuellos de botella donde menos lo espere (es decir, ancho de banda de red local). De todos modos, mi consejo es definitivamente highscalability.com también :)

Cuestiones relacionadas