Las redes sociales son el arte de conectar con aquellos que comparten intereses comunes. Su "red" es una comunidad que lo ayuda a mantenerse unido con los demás y le ofrece muchos beneficios. La creación de redes a través de los sitios de redes sociales ha revolucionado la forma en que usamos Internet y está a la vanguardia de lo que ahora llamamos Web 2.0.
Facebook es una red social. La gente se ha estado haciendo un "facebooking" durante unos 6 años, convirtiendo a Facebook en la red social más utilizada con más de 350 millones de usuarios en todo el mundo. ¿Pero cómo funciona Facebook?
En este artículo, analizaré el funcionamiento interno de Facebook, cubriendo su arquitectura y la infraestructura frontend / backend "" los aspectos prácticos que mantienen unido a Facebook.
¿Cómo funciona Facebook? "" The Front End
Facebook utiliza una variedad de servicios, herramientas y lenguajes de programación para conformar su infraestructura central. En la parte delantera, sus servidores ejecutan una pila LAMP (Linux, Apache, MySQL y PHP) con Memcache. ¿No eres un experto en informática? Echemos un vistazo a lo que eso significa exactamente.
Linux y Apache
Esta parte es bastante autoexplicativa. Linux es un núcleo del sistema operativo de la computadora tipo Unix. Es de código abierto, muy personalizable y bueno para la seguridad. Facebook ejecuta el sistema operativo Linux en Servidores HTTP Apache. Apache también es gratuito y es el servidor web de fuente abierta más popular en uso.
MySQL
Para la base de datos, Facebook utiliza MySQL debido a su velocidad y confiabilidad. MySQL se utiliza principalmente como un almacén de clave-valor ya que los datos se distribuyen aleatoriamente entre un gran conjunto de instancias lógicas. Estas instancias lógicas se distribuyen en los nodos físicos y el equilibrio de carga se realiza en el nivel del nodo físico.
En lo que respecta a las personalizaciones, Facebook ha desarrollado un esquema de partición personalizado en el que se asigna una ID global a todos los datos. También tienen un esquema de archivo personalizado que se basa en la frecuencia y frecuencia de los datos por usuario. La mayoría de los datos se distribuye al azar.
PHP
Facebook usa PHP porque es un buen lenguaje de programación web con un amplio soporte y una comunidad de desarrolladores activa, y es bueno para una iteración rápida. PHP es un lenguaje de scripting tipado / interpretado dinámicamente.
Memcache
Memcache es un sistema de caché de memoria que se utiliza para acelerar los sitios web dinámicos basados en bases de datos (como Facebook) mediante el almacenamiento en caché de datos y objetos en la memoria RAM para reducir el tiempo de lectura. Memcache es la forma principal de caché de Facebook y ayuda a aliviar la carga de la base de datos.
Tener un sistema de almacenamiento en caché permite que Facebook sea tan rápido como para recuperar sus datos. Si no tiene que ir a la base de datos, solo obtendrá sus datos de la memoria caché en función de su ID de usuario.
Desventajas de usar LAMP
Facebook se ha dado cuenta de que hay desventajas en el uso de la pila LAMP. En particular, PHP no está necesariamente optimizado para sitios web grandes y, por lo tanto, es difícil de escalar. Además, no es el idioma de ejecución más rápido y el marco de extensión es difícil de usar.
Mike Schroepfer, Vicepresidente de Ingeniería de Facebook, hizo una entrevista en EmTech @ MIT sobre esto. "Escalar cualquier sitio web es un desafío", dijo Schroepfer, "pero escalar una red social tiene desafíos únicos".
Continuó diciendo que a diferencia de otros sitios web, no se puede simplemente agregar más servidores para resolver el problema debido al "enorme conjunto de datos interconectados" de Facebook. Se crean nuevas conexiones todo el tiempo debido a la actividad del usuario.
Facebook ha crecido tan rápido que a menudo se enfrentan a problemas relacionados con consultas de bases de datos, almacenamiento en caché y almacenamiento de datos. Su base de datos es enorme y en gran parte compleja. Para dar cuenta de esto, Facebook ha comenzado una gran cantidad de proyectos de código abierto y servicios de back-end.
¿Cómo funciona Facebook? "" The Back End
Los servicios back-end de Facebook están escritos en una variedad de lenguajes de programación diferentes, incluidos C ++, Java, Python y Erlang. Su filosofía para la creación de servicios es la siguiente:
1. Crea un servicio si es necesario
2. Crear un marco / conjunto de herramientas para facilitar la creación de servicios
3. Use el lenguaje de programación correcto para la tarea
Aquí puede encontrar una lista de todos los desarrollos de código abierto de Facebook. Discutiré algunas de las herramientas esenciales que Facebook ha desarrollado.
Thrift (protocolo)
Thrift es un marco de llamada de procedimiento remoto liviano para el desarrollo de servicios escalables de idiomas cruzados. Thrift admite C ++, PHP, Python, Perl, Java, Ruby, Erlang y otros. Es rápido, ahorra tiempo de desarrollo y proporciona una división del trabajo de trabajo en servidores y aplicaciones de alto rendimiento.
Scribe (servidor de registro)
Scribe es un servidor para agregar datos de registro transmitidos en tiempo real desde muchos otros servidores. Es un marco escalable útil para registrar una amplia gama de datos. Está construido encima de Thrift.
Cassandra (base de datos)
Cassandra es un sistema de administración de bases de datos diseñado para manejar grandes cantidades de datos distribuidos en muchos servidores. Potencia la función de búsqueda de la Bandeja de entrada de Facebook y proporciona un almacén de clave-valor estructurado con consistencia final.
HipHop para PHP
HipHop para PHP es un transformador de código fuente para código de script PHP y se creó para guardar los recursos del servidor. HipHop transforma el código fuente de PHP en C ++ optimizado. Después de hacer esto, usa g ++ para compilarlo en código de máquina.
Conclusión
En pocas palabras, eso es Facebook. Este artículo podría ser fácilmente 37 páginas más largo si tuviera que entrar en más detalles, pero para responder a la pregunta "¿Cómo funciona Facebook?", Creo que esto será suficiente. Si mira más allá de todas las características e innovaciones, la idea principal detrás de Facebook es realmente muy básica "" para mantener a las personas conectadas. Facebook se da cuenta del poder de las redes sociales y está constantemente innovando para mantener su servicio lo mejor en el negocio.
¿Encontraste útil este artículo? Deja tus pensamientos, comentarios e ideas a continuación!