Es bastante fácil cuando las cosas están agrupadas y puestas en proxy. Debido a que tiene muchos nodos capaces de hacer el mismo trabajo (o varios en el caso de repositorios de datos como motores de búsqueda, sistemas de archivos Hadoop, etc.)
Haz una búsqueda en la web. Usted golpea www.altavista.com. La entrada de DNS enumera media docena de direcciones IP y su cliente encuentra una al azar. Cada IP es un enrutador de Cisco, que se transmite a uno de los 8 servidores físicos front-end (48 en total) en las direcciones IP internas. Ese servidor normaliza su consulta (elimina los espacios en blanco, etc.) y luego toma un hash MD5. El MD5 decide cuál de los 300 servidores proxy a los que va la consulta. Esa consulta se envía al proxy a través de un protocolo estándar como SOAP.
Los servidores front-end son intercambiables porque manejan solo las demandas transitorias de una sola consulta. Fuera del peor de los casos, un cliente obtiene su consulta abandonada. Utiliza los datos de RRD u otra recopilación de datos para vigilar cuando un servidor de aplicaciones para el usuario comienza a fallar y redirecciona su tráfico a un servidor en espera. Lo mismo se puede decir de los enrutadores de Cisco.
El proxy primero comprueba su caché . Para un golpe de caché, realiza la fusión de localización y envía la respuesta de vuelta; hecho. Si se trata de una "falta de memoria caché", el proxy envía la consulta a los grupos de búsqueda.
Si un proxy falla, otra máquina física puede ser intercambiada por ese proxy. Es un poco más crítico ahora, porque los proxies no son intercambiables; cada uno "posee" una pequeña porción del espectro de resultados de búsqueda. Entonces, si la máquina 0x0000-0x00d9 deja de funcionar, el sustituto debe saber que debe intervenir en ese rango. Y lo que es peor, esa máquina sustituta tendrá un caché vacío, por lo que cada consulta de búsqueda será un error de caché . Eso aumentará la carga en los grupos de búsqueda correcto en un pequeño bit por proxy derribado . Eso significa que si rebotas todos los proxies al mismo tiempo, no lo hagas durante las horas pico de búsqueda !
Los grupos de búsqueda tienen capas y redundancia similares, por supuesto, y cada segmento de la base de datos de búsqueda reside en varios nodos, por lo que si un nodo falla, otros nodos pueden servir esa porción de los resultados.
Me estoy centrando en el proxy como ejemplo. La comunicación se realiza a través de SOAP, la comunicación se realiza a través de un protocolo similar de alto nivel. Los datos que entran y salen de ella son transitorios, excepto el caché, que es importante para equilibrar la carga de clústeres del motor de búsqueda. El punto es que puede intercambiarse instantáneamente en cualquier momento, con el peor de los resultados de algunas búsquedas. Eso es algo que el servidor de aplicaciones para el usuario notaría, y simplemente podría enviar su consulta nuevamente, para cuando el nuevo proxy esté listo.
Entonces, si tiene 300 proxies y un proxy tarda una media hora en recuperar su caché, y puede soportar que la carga del motor de búsqueda aumente un 20%, entonces puede intercambiar 1 proxy cada 30 segundos, por lo que cualquier período de 30 minutos deslizante, 60 proxies (20%) están reconstruyendo cachés. Suponiendo que hay incluso una necesidad urgente de ir que rápido.
Ese ejemplo tarda 2-1 / 2 horas en implementarse, y si una amenaza emergente requiere una respuesta más rápida, entonces soportas el dolor de la falta de más caché, o bajas tu servicio lo suficiente como para parchear (pero en la búsqueda ejemplo del motor que faltan en la memoria caché seguirá siendo un problema cuando vuelva a subir. He visto los gráficos RRD después de una recarga de emergencia de la base de datos y la descarga de la memoria caché necesaria, es algo que debe ver.)
Por supuesto, normalmente el proceso se puede parchear, detener y reiniciar sin un reinicio completo. He visto un tiempo de actividad de 2 años en nodos de producción.