¿Qué es una buena arquitectura del sitio para manejar alta concurrencia?

Es posible que desee echar un vistazo a la arquitectura de Google App Engine.

La idea principal en el diseño de alta concurrencia es eliminar cualquier punto único de fallo. Si algo no se puede replicar, por lo que, una vez que se produce un error, el sistema no está disponible, entonces usted tiene algo que con el tiempo se convertirá en cuello de botella, incluso si no falla. En el cálculo de nodos (los servidores que ejecutan la lógica), esto se consigue por la replicación de servidores en el despliegue (implementación puede ser dinámico en sí de la carga de su sistema) y en el almacenamiento, esto se consigue por sharding. Si además necesita una alta disponibilidad de datos, debe replicar los datos entre diferentes nodos de almacenamiento. Sharding efectiva requiere una buena comprensión de sus casos y uso de datos, de modo que pueda ser agrupados en grupos de entidades independientes en lugar que normalmente se utilizan juntos, por lo que normalmente se recuperan juntos durante sola sesión de interacción con el sistema. Si usted no esta agrupación, el rendimiento de su sistema va a bajar, sobre todo, si se utiliza SQL que asume que todos los datos son igualmente rápidamente recuperable. Por esta razón, a menudo es mejor empezar con bases de datos NoSQL, como MongoDB y el tipo de Hadoop MapReduce de computación con el fin de proporcionar información entre grupos orgánicos reemplazar consultas analíticas en SQL.