En 2007 en Facebook se dan cuenta de que necesitan un Chat, seguir los mensajes entre muros es un infierno. El código surge en el 2007 de lo que en Facebook denominan un Hackathon, es decir quedarse los ingenieros durante toda una noche programando. No es hasta el 2008 cuando se manda el primer mensaje y lo lanzan oficialmente.
Las estadísticas del chat dan miedo:
- 800+ million user messages / day
- 7+ million active channels at peak
- 1GB+ in / sec at peak
- 100+ channel machines
En cuanto a como funciona, la barra de Facebook chat consiste en Javascript que se encarga de controlar las diferencias entre navegadores, problemas de envio, etc. Se utiliza AJAX para el envio de mensajes y consultas generales. Se utiliza polling para la lista de amigos online. Se utiliza long polling (comet) para la recepción de mensajes.
En cuanto al servidor, utilizan Thrift, PHP, C++ y Erlang para los canales de comunicación. Para la comunicación mantienen un canal de Erlang por usuario activo y una request HTTP abierta por pestaña del navegador.
El documento continua con una serie de factores fundamentales de Erlang que el equipo de ingeniería de Facebook consideran que han sido claves para el éxito de su chat y sobre los que yo no puedo opinar pero si listarlos:
- Concurrencia simplificada y paralelismo a gran escala.
- Comunicación distribuida y muy sencilla. Nodos remotos como locales.
- Aislamiento de errores. Los errores no tiran el sistema completo.
- Informes de errores bastante completos.
- Hot-code swapping. Cambio de código sin parar el sistema.
- Facilidades de monitorización.
- Shell remote. Capacidad de conectarse a código vivo en ejecución.
- Erlang top. Como top (unix) pero para procesos Erlang.
- Hibernación. El proceso "encoge" hasta que no vuelve a ser usado.
- SMP. Soporte de múltiples cores.
Fuente: PDF original de Eugene Letuchy.
Y eso es todo :)
comments
0 Respuestas a "Notas sobre la arquitectura de Facebook Chat"Publicar un comentario