2008-10-21 16 views
11

He estado discutiendo con algunos amigos de la universidad, y no podemos llegar a un punto sobre cuál es el marco con más escalabilidad para las aplicaciones web (y aún muy rápido).Escalabilidad en la web

Una llama para jsp, la otra para ruby ​​otra para php y más. ¿Puedo pedirle que nos aclare qué más potencial de escalabilidad?

Tks, espero no estoy duplicando nada de lo que he buscado, pero no encontré ninguna pregunta previa como esta.

Editar: Si usted podría señalar una comparación de este que sería bueno :)

+0

Como no tiene ninguna base para comparar, no hay respuesta. ¿Es esto escalable con respecto a la memoria, el número de visitas, el número de transacciones, el número de sesiones? ¿Cuál es la medida que intentas escalar? –

+1

sesiones :) número de usuarios que lo usan al mismo tiempo – fmsf

Respuesta

4

Algoritmos contará más de escalabilidad que el lenguaje utilizado.

Dicho esto, habrá diferencias en la velocidad de ejecución entre los idiomas. Creo que Java (los Servlets y los JSP compilan a los servlets, es decir, el código nativo) será más rápido que Ruby y PHP en cierta cantidad). También hay una tonelada de frameworks web para Java que lo animarán a hacer las cosas de la mejor manera para la escalabilidad.

También diseñe su aplicación para que pueda funcionar felizmente detrás de un equilibrador de carga, y la escalabilidad se vuelve mucho más fácil :) Sin embargo, este no es mi campo de experiencia.

0

Un lenguaje compilado generalmente correrá más rápido que un lenguaje interpretado, así que creo que Ruby y PHP comienzan detrás de la bola ocho, pero realmente se trata de cómo se usa el lenguaje y cómo se estructura el código.

Todos los idiomas tendrán sus propias mejores prácticas y patrones para crear aplicaciones escalables y, a menudo, habrá compromisos dependiendo de la funcionalidad de la aplicación propuesta.

3

También puede echar un vistazo a "What’s faster? PHP vs ASP vs JSP vs CGI etc"

creo Java/Java EE es el único "marco" diseñado desde cero para desarrollar distribuido/aplicaciones en cluster y que fomenta las buenas prácticas para lograrlo a partir de especificaciones (EJB, JTA ...).

Pero como de costumbre, depende. Este tipo de preguntas a menudo tienden a provocar guerras :)

+1

EJB = absurdo diseñado por el comité, no es la "mejor práctica" de ninguna manera. :) – gbjbaanb

+0

Estoy de acuerdo, pero de todos modos fue diseñado para permitir la distribución de componentes de aplicaciones ... Digamos "buenas prácticas desde el punto de vista de Sun";) –

+0

Así que las guerras de llama: P – fmsf

24

Ruby y PHP no son frameworks de aplicaciones web. Son lenguajes de programación que son populares para el desarrollo web.

En términos generales, la escalabilidad de la aplicación de Internet no es propiedad de un lenguaje de programación, y un marco de aplicación de Internet determinado puede no superar la escalabilidad de. Una buena escalabilidad es más una propiedad del diseño de la aplicación.

Hay demasiados frameworks webapp para una comparación punto por punto que es casi enciclopédica.

Además, puede abordar la escalabilidad de una aplicación determinada de varias maneras. Una forma es tener un alcance bien definido y estrecho, y tener como objetivo un rendimiento crudo impresionante, de modo que una sola máquina pueda servir miles de unidades de trabajo. El mejor ejemplo es Mailinator.

Otra forma es facilitar el servicio de cargas crecientes al "simplemente" agregar más hardware. Prácticamente cualquier framework webapp respaldado por una base de datos puede escalar de esta manera: simplemente agregue más servidores de aplicaciones entre un balanceador de carga y un back-end de base de datos compartida. Si enmarca el problema de esta manera, su principal preocupación es diseñar la aplicación para minimizar 1. la contención de la base de datos 2. la carga de la base de datos.

La última manera es diseñar el sistema para que sea increíblemente paralelo en todo el camino. Google es el mejor ejemplo.

En resumen: los lenguajes o marcos no hacen aplicaciones escalables, los arquitectos de software sí.

EDITAR: Para ser claros, mi respuesta se centra en escalabilidad, que es la capacidad de manejar cargas crecientes sin cambiar el diseño. Esta es una propiedad diferente de la velocidad de ejecución.

+1

Un desacuerdo menor, 'idiomas o marcos no haga aplicaciones escalables ... '. Ellos necesitan algo para empezar. Los marcos populares están bien soportados y, por lo tanto, se pueden escalar fácilmente. Estoy de acuerdo en que depende del diseñador aprovecharlos. Los algoritmos paralelos tienen su rol, al igual que el hardware. – questzen

2

No estoy seguro de que alguno de los frameworks que menciona dificulte seriamente la escalabilidad.

Todo depende de la implementación.

Me gustaría concentrarme en hacer que su aplicación web funcione bien primero, y luego preocuparme por la escalabilidad cuando se convierte en un problema. En otras palabras, "crucemos ese puente cuando lleguemos a él".

2

A: C ISAPI DLL (o módulo de Apache personalizado) :)

Aún así la sobrecarga del servidor web, analizar las peticiones http y sirviendo las páginas html hace que el tiempo de ejecución de las aplicaciones casi irrelevante. Si ejecuta su aplicación como una aplicación CGI, entonces espera un rendimiento aún menor.

Para la escalabilidad en la web, realmente está hablando de agregar más servidores y equilibrar la carga, quitando carga del servidor poniendo la base de datos (si se usa mucho) en un servidor por separado.

El rendimiento bruto de esos idiomas no es nada de qué preocuparse. Usa el que quieras usar, con el que serás más productivo. Preocúpese por los otros problemas con los que se encontrará: red io, seguridad, corrección.

1

Varios buenos puntos ya. Mi punto principal sería este: una persona que conozca python por dentro y por fuera probablemente pueda hacer un código más escalable usando Python que usando Java. Y hay muchos sitios inmensamente grandes que usan todas las tecnologías que mencionas, así que no creo que haya ninguna gran ventaja de ninguna manera.

En su mayor parte, debe atenerse a lo que está familiarizado a menos que haya una razón realmente importante para ir por otro camino.

3

La escalabilidad del marco web es una cuestión de reflexión (algunos dirían p155ing). A menos que obtenga mega-dólares (buena suerte con eso en estos días) y pueda garantizar millones de visitantes por día, todos esos marcos pueden manejarlo bien (al igual que ASP.NET).

Personalmente siempre elegiría ASP.NET. Es tan escalable como cualquier cosa y tiene las mejores herramientas de desarrollo. El único inconveniente es el alojamiento y los costos del sistema operativo.

0

Si desea saber cómo los principales sitios usan LAMP para lograr la escalabilidad, debería echar un vistazo al database sharding.

0

La elección de un marco web tiene menos impacto en la escalabilidad (la capacidad de escalar) que la arquitectura de su sitio. La mayoría de los marcos web modernos se prestan muy bien a la escala, por lo que es realmente su configuración de implementación lo que necesita atención.

1

Me pasó a venir a través de esta pregunta y se dio cuenta de que algunos hablan de velocidad, otras escalabilidad. Me escribió una entrada de blog que explica la diferencia:

http://www.fransekman.com/scalability-or-performance-what-do-you-mean/

"Un sitio web de alta escalabilidad es un sitio web, que el rendimiento de nivel puede mantenerse mediante la adición de más capacidad cuando la carga aumenta". Esto se puede lograr en cualquier lenguaje de programación y en casi cualquier marco. Algunos frameworks tienen funcionalidad incorporada, lo que puede hacer que algunas tareas comunes de escalabilidad sean más rápidas de implementar.

Cuestiones relacionadas