Soy nuevo en el ámbito de escalabilidad del sitio web. ¿Puede sugerirme algunas técnicas para hacer que un sitio web sea escalable para una gran cantidad de usuarios?Técnicas para escribir un sitio web escalable
Respuesta
Si espera que su sitio escale más allá de las capacidades de un único servidor, deberá planificar cuidadosamente. Diseñe de modo que lo siguiente sea posible: -
- Haga que su base de datos pueda estar en un servidor separado. Esto no es normalmente muy difícil.
- Asegúrese de que todo su contenido estático se pueda mover a una CDN, ya que esto normalmente sacará mucha carga de sus servidores.
- Prepárese para gastar mucho dinero en hardware. Más RAM y discos más rápidos ayudan MUCHO.
- Se vuelve mucho más difícil cuando necesita dividir la base de datos o el php de un único servidor a varios servidores, así que optimice todo, desde su código, su esquema de base de datos, su configuración de servidor y todo lo que pueda imaginar ponga este último paso el mayor tiempo posible.
Aparte de eso, todo lo que puedes hacer es poner a prueba tu sitio, descubrir dónde están los cuellos de botella y tratar de diseñarlos.
- Pruebe su sitio web con mucha carga.
- Monitor de todas las estadísticas
- Búsqueda de cuello de botella
- Fix cuello de botella
- Ir de nuevo a 1
buena suerte
Es posible que desee ver esto en recursos highscalability.com.
Desarrolle su sitio utilizando técnicas sólidas de OOP. Necesitará que su sitio sea modular ya que no todos los cuellos de botella de rendimiento son obvios desde el principio. Esté preparado para refactorizar partes de su sitio a medida que aumenta el tráfico. La primera oración que escribí te ayudará a hacerlo de manera más fácil y segura. Además, utilice el desarrollo basado en pruebas, como refactor significa nuevos errores introducidos, y un buen TDD es bueno para atraparlos antes de que entren en producción.
Separe tanto como sea posible el código del lado del cliente del código del lado del servidor, ya que es probable que se sirva desde diferentes servidores, si el tráfico de su sitio lo justifica.
Lea los artículos (lea los consejos de YSlow, por ejemplo).
GL
muy similar: How Is PHP Done the Right Way?
escalabilidad no es poca materia y ciertamente más material del que pueda razonablemente cubierto en una sola pregunta.
Por ejemplo, con algunos tipos de aplicaciones, las uniones (en SQL) no se escalan, lo que trae a colación todo tipo de estrategias de caché y fragmentación.
Beanstalk es otra herramienta de escalabilidad y rendimiento en sitios PHP de alto rendimiento. Como es Memcache (tipo diferente).
En orden de importancia:
Si ejecuta PHP, utiliza una caché de código de operación como APC. (Esto es lo suficientemente importante como para ser incorporado en la próxima generación de PHP.)
Use YSlow o Google Page Speed para identificar los cuellos de botella. (Esto revelará problemas estructurales con su sitio web que afectan el rendimiento tanto del cliente como del servidor).
Asegúrese de que su servidor web envíe un encabezado Expires apropiado para contenido estático (imágenes, Javascript, CSS), de modo que el navegador pueda almacenar en caché es correcto (YSlow también le advertirá acerca de esto.)
Use un acelerador HTTP, como Varnish. (This picture lo dice todo - y ya tenido un acelerador HTTP en su lugar.)
Un número de personas han mencionado herramientas para identificar los cuellos de botella, y que por supuesto es necesario. No puede pasar tiempo productivo acelerando algo sin saber dónde está lento. Pero la otra cosa que necesita saber es dónde se encuentra la escalabilidad de su destino. ¿Vale la pena invertir un par de meses para que su sitio alcance el mismo número de usuarios que Twitter si va a ser utilizado por tres personas en Recursos Humanos? ¿Tiene una tasa conocida de transacciones, o latencia de respuesta, o número de usuarios, en los requisitos del producto? Si es así, apunte esos números con su estrategia de optimización. Si no, encuentra los antes de perseguir la rata de rendimiento por el agujero.
El mayor problema para la escalabilidad suele ser recursos compartidos como DBMS. El problema surge porque los SGBD generalmente no tienen forma de relajar las garantías de consistencia.
Si desea aumentar la escalabilidad cuando utiliza algo como MySQL, debe cambiar el diseño del esquema para relajar la coherencia.
Por ejemplo, puede separar su esquema de base de datos para tener su modelo de datos normalizado para escrituras, y una parte de desnormalización de solo lectura replicada para el 90% de las operaciones de lectura. Los datos de solo lectura pueden distribuirse en varios servidores.
Otra forma de aumentar la escalabilidad de una base de datos es dividir los datos, p. separe los datos en una base de datos para cada departamento y agréguelos en el ORM o en el DBMS.
La agregación de datos en la capa ORM presenta una complejidad de nivel de aplicación que puede ser lenta para lenguajes como Ruby y PHP. Además, es más difícil de manejar. –
Además de las otras sugerencias, busque dividir sus sitios en niveles, como en multitier architecture. Si se hace bien, puede usar un servidor por nivel.
- 1. Ticketing escalable/sitio web del festival
- 2. Cómo escribir una especificación para un sitio web
- 3. Cuál es la mejor arquitectura moderna escalable para un sitio web de alto volumen (Java)
- 4. ¿Cuáles son las técnicas aceptadas para permanecer conectado a un sitio web?
- 5. Técnicas necesarias para escribir un analizador de expresiones aritméticas
- 6. Arquitectura de proyectos web escalable
- 7. Ejecutar Lua bajo nginx (escribir un sitio web con Lua)
- 8. Crear un sitio web escalable de ASP.Net MVC sin utilizar la sesión
- 9. Compilación de contenido estático para un sitio web
- 10. Sitio web para ciegos?
- 11. ¿Utilizas Silverlight para un sitio web completo?
- 12. JavaScript hit counter para un sitio web
- 13. ¿por qué el marco web lift es escalable?
- 14. ¿Cuán escalable es Grails?
- 15. Recursos web semánticos para un nuevo sitio web?
- 16. Un sitio web usando Ruby solo
- 17. ¿Cuál es la estructura de directorios basada en PHP más escalable para un sitio grande?
- 18. Técnicas principales para evitar el "robo de datos" de una base de datos de un sitio web
- 19. Raspe un sitio web dinámico
- 20. Rascar todo un sitio web
- 21. Escribiendo un sitio web en Python
- 22. Python CMS para mi propio sitio web?
- 23. Técnicas para agrupar código JavaScript
- 24. Medición en un sitio web
- 25. ¿Cómo escribo un servidor de socket escalable usando C# 4.0?
- 26. Cómo escribir un contador de visitas eficiente para sitios web
- 27. Creación de una aplicación web ASP.NET MVC escalable
- 28. ¿Buenas prácticas para incluir un menú en un sitio web?
- 29. Ejecución escalable escalable de tareas con Redis
- 30. ¿Mejores prácticas para almacenar un sitio web ASP.NET en Subversion?
De acuerdo, solo añadiría que el almacenamiento en caché es probablemente lo primero que debe hacer al crear un sitio grande. – usoban
Sí. Asegúrese de que las características de caché de MySQL estén bien configuradas y haga uso de un caché robusto para su código. Hay varios mencionados en otras respuestas que son excelentes. –