¿Qué tan buenos son los sitios web que tienen sus backends construidos usando C ++?

Casi toda la Búsqueda de Google, incluido el front-end HTTP, está construida en C ++. Bigtable está construido en C ++. MySQL y Postgres están construidos en C / C ++. Gmail está construido principalmente en Java. Yahoo tiene en gran medida backends C ++ y front-end PHP. Youtube tiene en gran medida backends C ++ y front-end Python. Facebook tiene backends C / C ++ y front-end Hack / HHVM.

La mayoría de los productos de baja latencia muy exitosos tienen backends construidos sustancialmente en C o C ++, por la sencilla razón de que la latencia del percentil 99 a escala es importante y el GC de vanguardia libre actual todavía tiene pausas indeseables reales. (Comercial Azul Zing, IBM Metronome son mejores, y la promesa de OpenJDK Shenandoah está en el horizonte)

Cuando se usa GC, se usa con mayor frecuencia solo para el nivel de front-end que sirve HTML / JSON. La opción más común a escala es Java (o C #). Esto se debe a que una vez que el software se convierte en gran escala con equipos grandes, los lenguajes dinámicos interpretados (PHP, Python, Ruby) tienen una velocidad de ejecución relativamente lenta y fragilidad de cambio por falta de verificación de tipos estáticos. Los lenguajes dinámicos generalmente todavía se usan para el código de pegamento / automatización, pero no para servir el tráfico en vivo.

Facebook es un caso interesante, ya que en lugar de reescribir su código PHP directamente, crearon el lenguaje Hack, en su mayoría compatible con versiones anteriores, que admite la ejecución de JIT y la verificación de tipo estático en una extensión de sintaxis PHP con anotaciones de tipo.

Para el back-end , la principal preocupación de los sitios grandes es la escalabilidad. La eficiencia por nodo o por proceso termina siendo secundaria a algoritmos y patrones de comunicación. Como resultado, la elección del idioma no afecta tanto el rendimiento como la velocidad de desarrollo y el esfuerzo de depuración / ajuste. En ese contexto, dado que tanto código de sistema distribuido ya se ha escrito dentro del ecosistema de Java, esa es una opción decente. Los idiomas diseñados para tales cosas, por ejemplo, Erlang, también tienen una ventaja. Como C ++ no se ajusta a ninguna de esas categorías, es una elección bastante pobre.

Tencent Qzone es un sitio web que puede atender a 600 millones de usuarios en China que fue construido con c y c plus plus. Por la razón de que hay muchas herramientas para analizar el estado de ejecución del programa, como Vg, profile.com y Java. controle su propia memoria y tenga muchas formas de detectar su programa en ejecución. No sé qué significa, ¿qué recursos son amigables? Programa amigable o algo así como la eficiencia de ejecución?
Por cierto, el lenguaje de programación a veces no es la clave para construir un sitio web grande. Es su arquitectura bien diseñada, con la capacidad de extenderse de manera simple, lo que puede brindar una mejora lineal del rendimiento probable. Dado que todos los servidores de back-end son en su mayoría sistemas distribuidos.

Para algunos de los sitios más grandes, C ++ fue un legendario desastre de ingeniería (anécdotas: TIL de que el sitio web de Amazon.com se desarrolló originalmente en C ++ • / r / programación).

Con frecuencia, hoy, para la velocidad y la confiabilidad, los componentes críticos se ejecutan en la JVM, por ejemplo, el backend de Twitter.

Los sitios web utilizan software escrito en varios idiomas para crear su back-end, y probablemente incluyan al menos uno o más componentes escritos en C / C ++. Por ejemplo: Redis, MongoDB, Nginx, Apache, HHVM (utilizado por Facebook), MySQL y Memcached, son componentes de fondo bastante comunes que están escritos en C o C ++.

Para Amadeus, puedo responder a esa parte >> “¿Están sus back-end construidos con lenguajes potentes como C ++”
Amadeus es el backend de la mayoría de los sitios web de viajes.
La mayoría de los backends de Amadeus están escritos en C ++.
Sobre el SOA de Amadeus, hay 300,000 (300 mil) Transacciones por segundo servidas desde el código C ++, 24/24.
Si lo desea, puede encontrar más información en la web, por ejemplo, en Wikipedia.

Esta es una pregunta bastante abierta que está … um … bastante mal definida. [Editar: OK, parece que agregaste algunos detalles, y ahora es una mejor pregunta. Hay algunas respuestas mejores que las mías … así que no voy a volver a escribir esta.]

¿Qué quieres decir con “bueno”? ¿Cómo medimos tú y yo “bien”? (¿De tal manera que sea objetivo y no subjetivo?

OK, pero para responder tu pregunta. Tengo un amigo que volvió a codificar el carrito de compras y el código de pago del sitio web de su empresa en C (no en C ++), porque el sitio no podía manejar la cantidad de compradores que tenían durante su gran venta cada año. La versión codificada del sitio fue increíblemente rápida, usó menos recursos y sospecho que no tendrán problemas de rendimiento sin importar cuántos clientes (de su base de clientes potenciales) se presenten a la venta.
Sé que es cualitativo, anecdótico y no tiene métricas para ti, pero eso es todo lo que tengo para ti dado el mínimo esfuerzo realizado en tu pregunta.

Como dice Lee Clemmer, debes ser más específico sobre “bueno”.

Pero apuesto una cosa. Son más laboriosos de mantener que los sitios escritos en idiomas de nivel superior con sofisticación equivalente.

Se utilizan todo tipo de cosas como back-end, incluidas las bases de datos. C ++ es un lenguaje compilado, y Java es un script procesado, probablemente no son buenos lenguajes para escribir algo como Facebook.

Sospecho que todos estos son sistemas a medida, que involucran una gran cantidad de programas diferentes, en lugar de algo que tiene una escala finita.

¿Es como preguntar qué tan buenos son los autos que funcionan con gasolina Chevron?

Sé que el backend okcupid está escrito en C ++.