HighScalability unió esto de varias fuentes en la web que pudieron encontrar en febrero de 2014, una semana después de su adquisición: Facebook de WhatsApp Architecture compró por $ 19 mil millones – Alta escalabilidad –
La esencia de su escala de servidores:
- Cientos de nodos
- > 8000 núcleos
- Cientos de terabytes de RAM
Componentes de su pila de backend:
- Estoy trabajando en una nueva aplicación web y voy a utilizar Amazon EC2 para alojarla. ¿Para qué servidor Linux debo ir: Ubuntu o CentOS? ¿Por qué?
- ¿Alguien necesita un servidor dedicado para obtener bitcoin?
- ¿Cuánto gasta su startup tecnológica en costos de servidor (tráfico + almacenamiento) por mes?
- ¿Cómo funciona una transacción de servidor a servidor entre dos bancos?
- ¿En qué punto tiene sentido la coubicación física de los servidores?
- Erlang
- FreeBSD
- Yaws, lighttpd
- PHP
- Parches personalizados para BEAM (BEAM es como JVM de Java, pero para Erlang)
- XMPP personalizado
- El alojamiento puede estar en Softlayer
Breve descripción de cómo funcionan sus servicios Erlang:
- El servidor de WhatsApp se implementa casi por completo en Erlang.
- Los sistemas de servidor que realizan el enrutamiento de mensajes de fondo se realizan en Erlang.
- Un gran logro es que la cantidad de usuarios activos se gestiona con una huella de servidor realmente pequeña. El consenso del equipo es que se debe en gran parte a Erlang.
- Es interesante notar que el chat de Facebook se escribió en Erlang en 2009, pero se alejaron porque era difícil encontrar programadores calificados.
- El servidor de WhatsApp ha comenzado desde ejabberd
- Ejabberd es un famoso servidor Jabber de código abierto escrito en Erlang.
- Originalmente elegido porque es abierto, tuvo excelentes críticas de los desarrolladores, facilidad de inicio y la promesa de la idoneidad a largo plazo de Erlang para un gran sistema de comunicación.
- Los siguientes años se dedicaron a reescribir y modificar bastantes partes de ejabberd, incluido el cambio de XMPP a un protocolo desarrollado internamente, la reestructuración de la base del código y el rediseño de algunos componentes centrales, y realizar muchas modificaciones importantes en Erlang VM para optimizar el rendimiento del servidor .
- Para manejar 50 mil millones de mensajes al día, el enfoque está en hacer un sistema confiable que funcione. La monetización es algo para ver más adelante, está muy lejos en el futuro.
- Un indicador principal del estado del sistema es la longitud de la cola de mensajes. La longitud de la cola de mensajes de todos los procesos en un nodo se supervisa constantemente y se envía una alerta si se acumulan más allá de un umbral preestablecido. Si uno o más procesos se atrasa, se alerta, lo que da un puntero al siguiente cuello de botella para atacar.
- Los mensajes multimedia se envían cargando la imagen, el audio o el video para enviarlos a un servidor HTTP y luego enviando un enlace al contenido junto con su miniatura codificada Base64 (si corresponde).
- Algunos códigos generalmente se envían todos los días. A menudo, es varias veces al día, aunque en general se evitan las horas pico de tráfico. Erlang ayuda a ser agresivo para obtener soluciones y características en la producción. La carga en caliente significa que las actualizaciones se pueden enviar sin reinicios ni cambios de tráfico. Los errores generalmente se pueden deshacer muy rápidamente, nuevamente cargando en caliente. Los sistemas tienden a estar mucho más flojos, lo que hace que sea muy fácil implementar los cambios de forma incremental.
- ¿Qué protocolo se usa en la aplicación Whatsapp? Enchufe SSL a los grupos de servidores de WhatsApp. Todos los mensajes se ponen en cola en el servidor hasta que el cliente se vuelve a conectar para recuperar los mensajes. La recuperación exitosa de un mensaje se devuelve al servidor de WhatsApp que reenvía este estado al remitente original (que verá eso como un icono de “marca de verificación” al lado del mensaje). Los mensajes se borran de la memoria del servidor tan pronto como el cliente ha aceptado el mensaje
Y las diapositivas originales presentadas por WhatsApp en 2012 sobre cómo escalaron su pila Erlang a conexiones TCP de 2M en un solo host están aquí: http://www.erlang-factory.com/up…