¿Cuáles son las similitudes y diferencias entre la informática científica de alto rendimiento y las aplicaciones web altamente escaladas?

Similitudes:

  • Comunicación: para que se pueda realizar un trabajo útil, los datos deben trasladarse a la aplicación y los resultados deben salir de ella. A veces, los datos tienen que moverse a través de etapas, si el flujo de trabajo se asemeja a una tubería. Independientemente de ser HPC o una aplicación web altamente escalada, los datos deben moverse rápidamente sin importar la dirección.
  • Sincronización: estamos en la era de la programación paralela, por lo que es natural que las etapas se coordinen de alguna manera. Hay muchas formas de sincronización (bloqueos, sin bloqueo, consistencia débil, etc.), y el punto común es que eventualmente las cosas deben converger a un resultado sensato. La sincronización a veces es un desafío, y un cuello de botella frecuente si se pasa por alto.
  • Multiprogramación / subprocesos: en un modelo de flujo de datos, el código mueve datos, generalmente con múltiples instancias (por ejemplo, map-reduce, que ni siquiera es nuevo en estos días). Estas instancias tienden a ser realizadas por agentes ejecutables en un sistema, como subprocesos nativos (o lo que sea que ofrezca el sistema operativo).

Diferencias clave

  • HPC tiende a centrarse en el rendimiento ; Las aplicaciones web escaladas generalmente se centran en transacciones por unidad de tiempo . Esto cambia la aplicación subyacente para enfocar los recursos en lograr uno u otro objetivo. Como ejemplo aproximado, en HPC generalmente desea evitar la programación frecuente del sistema (es costoso), mientras que una aplicación web escalada se basa en la programación para avanzar en muchas transacciones (principalmente debido al procesamiento basado en eventos).
  • Para HPC, algunas características de la CPU son clave para hacer un progreso definitivo. Dependiendo de la carga de trabajo específica, no querrá SMT (Multi-threading simétrico, como Hyper-threading de Intel), debido a la falta de recursos dentro de la CPU, dado que se trataba de un número fijo de unidades os (generalmente unas pocas unidades enteras, al menos una unidad de punto flotante completa, posiblemente una unidad simple de FPU, como una suma-multiplicación, y algunas unidades de carga / almacenamiento). En aplicaciones web escaladas, la carga de trabajo es muy variada, lo más probable es que desee tener SMT para usar mejor su CPU (y tal vez usar una menos potente).
  • Bus del sistema: para aplicaciones basadas en el rendimiento (como HPC), el plano posterior del bus del sistema es clave para lograr la velocidad de datos necesaria entre los componentes (red, descargadores como GPU, etc.), y esto suele ser muy costoso. Una aplicación de aplicación web puede acomodar un backplane menos potente, debido a su carga de trabajo mixta.
  • Las aplicaciones web escaladas dependen de la redundancia (múltiples nodos) y la replicación (múltiples copias del conjunto de datos) para la capacidad de recuperación , o la capacidad de recuperarse con gracia de los errores, idealmente sin que el usuario final lo note. Para HPC, dependerá del presupuesto, pero es común modelar su flujo de trabajo de una manera que robe el trabajo, por lo que si un nodo falla, otros elegirán el trabajo incompleto o un nodo de gestión (o humano) lo reasignará a otro nodo .

Similar

  • eficiencia mediante amortiguamiento, procesamiento por lotes, canalización, almacenamiento en caché
  • puede compartir grupos

Diferente

  • HPC es solo lote, las aplicaciones web están orientadas a la latencia, pero también necesitan rendimiento para minimizar los costos y minimizar la carga en el cuidador del zoológico
  • HPC es típicamente coma flotante, cómputo entero de aplicaciones web
  • algunos tipos de HPC necesitan computadoras escaladas verticalmente, mientras que las aplicaciones web pueden escalar horizontalmente en la mayoría de las capas, con algunas excepciones como el nodo de nombre Hadoop, o quizás el maestro MySQL
  • algunos HPC pueden usar el tiempo de inactividad de computadoras en todo el mundo, por ejemplo, Boinc, mientras que las aplicaciones web pueden distribuirse geográficamente en centros de datos como Google, que también implementa su propia red de relojes atómicos para sus algoritmos de consistencia
  • Básicamente, los HPC son tareas múltiples colaborativas (paralelismo), mientras que las aplicaciones web son aplicaciones concurrentes, es por eso que se distribuyen mucho más, lo que hace que la consistencia de los datos sea un problema difícil.

More Interesting

¿Qué enfoques son útiles para extraer el contenido de texto real de una página web de la etiqueta ?

Reto académico para asegurar el procesamiento de texto HTML: puede ir en contra de la idea de la web, pero ¿es esto posible?

¿Han fallado los widgets web del W3C?

¿Cómo puede un sitio de citas generar zumbido viralmente?

Estoy aprendiendo desarrollo front-end. ¿Cómo me posiciono en la capa de aplicación?

¿Cuál es la mejor base de datos adecuada con Python para aplicaciones web?

Quiero aprender programación Java principalmente para desarrollo web y aplicaciones, ¿por dónde empiezo?

¿Cuánto cuesta construir un sitio web de transmisión de películas? Las características principales incluirían dispositivos compatibles como computadoras portátiles, páginas de clientes donde navegan por catálogos y compran / alquilan películas. y páginas finales. ¿Cuál es el rango de precios probable?

¿Por qué debería implementar el enrutamiento del lado del cliente en una aplicación de una sola página?

¿Es mejor obtener la aplicación Quora o puedo usar la página web?

¿Qué marco debo elegir para desarrollar una aplicación web y por qué?

¿Cuáles son algunos de los problemas de la vida real que enfrenta alguien ahora que se pueden resolver desarrollando una aplicación web / sitio web?

Servidores: ¿Hay algún buen VPS por debajo de 50 $ anuales?

¿Cómo funciona una API? ¿Dónde puedo obtener información sobre las API? ¿Hay buenos libros sobre el tema? ¿Cómo hago el mío?

¿Cuál es la forma moderna de crear una aplicación web?