No tengo prácticamente ninguna experiencia en el tratamiento de sitios web transaccionales de gran volumen y recientemente me encontré con esta pregunta interesante. Estoy interesado en saber dónde ocurrirían los cuellos de botella en una aplicación web Java a gran carga (miles de solicitudes por segundo). Si alguien pudiera darme un enfoque de alto nivel para pensar sobre la siguiente pregunta, ¡sería genial!Aplicación web de transacciones de alto volumen basadas en Java
Lo único que se me ocurre es usar memcached para almacenar en caché las búsquedas en la base de datos, pero no sé cómo calcular la cantidad de tiempo que tomará cada solicitud y, por lo tanto, cuántas solicitudes por segundo el sistema podría ser capaz de manejar.
Pregunta: Las aplicaciones de escala de Internet se deben diseñar para procesar grandes volúmenes de transacciones. Describa un diseño para un sistema que debe procesar un promedio de 30,000 solicitudes HTTP por segundo. Para cada solicitud, el sistema debe realizar una búsqueda en un diccionario de 50 millones de palabras, utilizando una palabra clave pasada a través de la cadena de consulta de URL. Cada respuesta consistirá en una cadena que contiene la definición de la palabra (100 bytes o menos).
Describa los componentes principales del sistema y observe qué componentes deben ser personalizados y qué componentes podrían aprovechar las aplicaciones de terceros. Incluye estimaciones de hardware para cada componente. Tenga en cuenta que el diseño debe incluir un rendimiento máximo con los costes mínimos de licencia de hardware/software.
Documente el motivo para llegar a las estimaciones.
Describa cómo cambiaría el diseño si las definiciones son de 10 kilobytes cada una.