Concepto y diseño básico de CDN – Diseño de sistemas 12

diseño-de-sistemas-Diseño de sistemas 12-CDN-Concepto y diseño básicos-cómo-funciona-cdn-hogantech

Prefacio

Si es ingeniero de software, debe estar familiarizado con el término CDN. Sin embargo, si explora detenidamente los principios de CDN y cómo diseñarlo, es posible que no quede tan claro. Por lo tanto, primero explicaré la red de entrega de contenido (. Content Delivery Network) y cómo los implementamos.

CDN al diseño del sistema

Antes de explicar CDN, echemos un vistazo al sistema a gran escala en sí. Si millones de usuarios en todo el mundo están utilizando un sistema y nuestros servicios se implementan en un único centro de datos para satisfacer las solicitudes de los usuarios (Solicitud), entonces, ¿qué problemas podrían surgir? ¿tenemos?

Alta latencia

Si la distancia física entre usuarios, centros de datos y servidores es demasiado alta, la latencia aumentará. Si los usuarios experimentan una latencia alta, generalmente no se debe a un solo motivo, sino a múltiples motivos complejos, como: retrasos en la transmisión, retrasos en la propagación, retrasos en las colas y retrasos en el procesamiento nodal de los nodos. La transmisión de datos a larga distancia seguramente provocará mayores retrasos. Según la percepción de nuestro cuerpo humano, nos gustaría que el retraso del sistema fuera inferior a 200 milisegundos. Para Voz sobre Protocolo de Internet (VoIP), el retraso no debe exceder los 150 milisegundos y la plataforma de reproducción de video no debe exceder unos pocos segundos de retraso. Por ejemplo: Youtube Si cada clic el vídeo se retrasará unos segundos y los usuarios se perderán.

Aplicaciones intensivas en datos

Las aplicaciones con uso intensivo de datos suelen requerir la transmisión de grandes cantidades de tráfico. En distancias más largas, esto puede ser un problema porque la ruta de la red pasa por diferentes tipos de proveedores de servicios de Internet (ISP). A medida que aumente el número de usuarios, este tipo de problemas se multiplicarán o incluso crecerán exponencialmente porque el servidor debe proporcionar datos a cada usuario de forma individual. En otras palabras, cuando varios clientes lo solicitan, el centro de datos principal deberá enviar una gran cantidad de datos inútiles (datos redundantes).

Escasez de recursos del centro de datos

Cuando aumente el número de usuarios, la potencia informática y el ancho de banda de los recursos del centro de datos se convertirán en limitaciones o incluso cuellos de botella. Por lo tanto, será necesario ampliar los servicios del sistema para millones de usuarios. Sin embargo, incluso si la expansión se logra en un solo centro de datos, aún puede convertirse en un único punto de falla (punto único de falla) cuando el centro de datos se desconecta debido a desastres naturales o problemas de conexión de red.

¿Qué es una CDN?

La red de entrega de contenido (CDN) es una de las soluciones utilizadas para abordar los problemas anteriores. En primer lugar, CDN es un grupo de servidores proxy (Proxy Server) ubicados según la ubicación geográfica. Entre ellos, el servidor proxy es un servidor intermedio entre el cliente y el servidor, y el servidor proxy también se ubicará en el borde de la red (Network Edge). Además, debido a que el borde de la red está cerca del usuario final, la ubicación del servidor proxy ayuda a transmitir rápidamente los datos correspondientes al usuario al reducir los retrasos y ahorrar ancho de banda. Además de servir como servidores proxy simples, las CDN también pueden hacerlas más eficientes a través de algunas configuraciones y operaciones.

Una CDN acerca los datos a los usuarios colocando un pequeño centro de datos cerca de ellos y almacenando copias de los datos allí. CDN almacena principalmente dos tipos de datos: estáticos y dinámicos, y resuelve principalmente el problema del retraso de propagación acercando los datos al usuario. Los proveedores de CDN también incurren en costos adicionales para proporcionar suficiente ancho de banda disponible y acercar los datos a los usuarios.

Entonces, volviendo a la pregunta mencionada anteriormente, ¿cómo resuelve CDN los problemas de alta latencia, aplicaciones con uso intensivo de datos y escasez de recursos del centro de datos?

  • alta latencia : La instalación física de CDN está relativamente cerca del cliente, por lo que los usuarios pueden obtener los datos correspondientes a través de CDN, reduciendo así la distancia física y los retrasos.
  • Aplicaciones intensivas en datos: Dado que la ruta de datos solo incluye el ISP y los componentes CDN cercanos, no hay problema en atender a una gran cantidad de usuarios con una pequeña cantidad de componentes CDN en un área específica. Como se muestra a continuación, el centro de datos de origen solo necesita proporcionar datos una vez al componente CDN local, y el componente CDN local puede proporcionar datos a diferentes usuarios de forma independiente. Ningún usuario tiene que descargar una copia de sus datos del servidor de origen.
  • Los recursos del centro de datos son escasos: CDN se utiliza para ofrecer contenido popular. Por este motivo, la mayor parte del tráfico lo gestiona la CDN y no el servidor de origen. Por lo tanto, diferentes elementos CDN locales o distribuidos comparten la carga en el servidor de origen.

Requisitos de diseño de CDN

en este artículo Características no funcionales del diseño de software – Diseño de sistemas 03 , también explicamos los requisitos funcionales y no funcionales, por lo que, dado que queremos diseñar una CDN, primero debemos enumerar los requisitos funcionales y no funcionales.

Requisitos funcionales

Una CDN puede considerarse como una base de datos, por lo que básicamente necesita las siguientes funciones:

  1. Recuperar: Dependiendo del tipo de modelo de CDN, la CDN debe poder recibir contenido del servidor.
  2. Pedido: El servidor proxy transmite contenido de acuerdo con la solicitud del usuario, y el servidor proxy CDN debería poder responder a la solicitud de cada usuario.
  3. Entregar: El servidor debería poder entregar contenido al servidor proxy CDN.
  4. Buscar: La CDN debería poder realizar búsquedas en consultas de usuarios en contenido almacenado en caché o almacenado de otro modo dentro de la CDN.
  5. Actualizar: En la mayoría de los casos, el contenido proviene del lado del servidor, pero si ejecutamos un script en la CDN, la CDN debería poder actualizar el contenido en el servidor proxy CDN par en el PoP. Entre ellos, un punto de presencia (PoP) es un punto de demarcación, punto de acceso o ubicación física donde dos o más dispositivos de red o comunicación comparten una conexión.
  6. Borrar: Dependiendo del tipo de contenido (estático o dinámico), las entradas almacenadas en caché deben eliminarse del servidor CDN después de un período de tiempo.

requisitos no funcionales

Los lectores que no comprendan los requisitos no funcionales pueden ver este artículo.  Características no funcionales del diseño de software – Diseño de sistemas 03 .

  1. Rendimiento: una de las tareas más importantes de CDN es minimizar la latencia y también es la razón principal por la que muchos desarrolladores utilizan CDN.
  2. Disponibilidad: la disponibilidad se utiliza para garantizar que el sistema pueda permanecer disponible continuamente, por lo que CDN se puede utilizar para evitar algunos ataques al sistema, como DDoS.
  3. Escalabilidad: cada vez más aplicaciones cliente pueden solicitar datos de CDN, por lo que CDN se puede expandir sistemáticamente.
  4. Fiabilidad: el diseño de la CDN debe garantizar que no exista un único punto de fallo. Además de las fallas, una CDN debe diseñarse con alta confiabilidad para manejar grandes cargas de tráfico.

Diseño del sistema CDN.

Debido a que el diseño de CDN en sí es relativamente complejo, citaré las ilustraciones de Grokking Modern System Design para explicar el diseño del sistema CDN en detalle. Aquí presentaremos los componentes de CDN respectivamente y luego explicaremos el principio de funcionamiento de CDN en función de los componentes.

Componentes CDN

CDN (Content Delivery Network) es una red distribuida compuesta por servidores en todo el mundo, que se utiliza para acelerar la entrega de contenido a los usuarios. CDN puede mejorar el rendimiento del sitio web, reducir la latencia y mejorar la experiencia del usuario.

Los siguientes son los elementos principales del diseño del sistema CDN:

  1. Clientela:Los usuarios solicitan contenido de la CDN en varios clientes, como navegadores, teléfonos inteligentes y tabletas.
  2. Sistema de enrutamiento:El sistema de enrutamiento es responsable de dirigir a los usuarios a la instalación CDN más cercana. Para hacer esto, el sistema de enrutamiento debe considerar los siguientes factores:
      • Colocación de contenido
      • Solicitudes de usuario
      • Carga del servidor
  3. Servidores depuradores:Se utilizan servidores más limpios para separar el tráfico bueno del tráfico malicioso y prevenir ataques. Los tipos de ataques comunes incluyen ataques DDoS.
  4. Servidores proxy: El servidor proxy proporciona contenido a los usuarios. Los servidores proxy suelen almacenar contenido popular en la RAM para mejorar el rendimiento. El servidor proxy también recibe contenido del sistema de distribución.
  5. Sistema de distribución: El sistema de distribución se encarga de distribuir el contenido a las diferentes instalaciones del CDN. Los sistemas de distribución pueden utilizar una variedad de técnicas para distribuir contenido, tales como:
    • cache
    • compresión
    • transmisión
  6. Servidores de origen: El servidor de origen es donde se almacena el contenido original. Cuando el contenido no está disponible en la CDN, los usuarios solicitan contenido del servidor de origen.
  7. Sistema de gestión: Sistema de gestión utilizado para monitorear el rendimiento y el estado de la CDN. Los sistemas de gestión pueden recopilar datos sobre métricas como latencia, tiempo de inactividad, tráfico y tasas de error.
diseño-de-sistemas-Diseño de Sistemas 12-CDN-Concepto y Diseño Básico-cómo-funciona-cdn-hogantech-00

Principio CDN

Este proceso de CDN lo explica Grokking Modern System Design:

  1. El servidor de origen proporciona los URI de todos los objetos almacenados en caché en la CDN al sistema de enrutamiento de solicitudes.
  2. El servidor de origen publica contenido en un sistema de distribución que es responsable de la distribución de datos entre servidores proxy perimetrales activos.
  3. El sistema de distribución distribuye contenido entre servidores proxy y proporciona retroalimentación al sistema de enrutamiento de solicitudes. Estos comentarios ayudan a optimizar la selección del servidor proxy más cercano para los clientes que lo solicitan. Estos comentarios contienen información sobre qué contenido se almacena en caché en qué servidor proxy enrutar el tráfico al servidor proxy relevante.
  4. El cliente solicita el servidor proxy apropiado del sistema de enrutamiento.
  5. El sistema de enrutamiento de solicitudes devuelve la dirección IP del servidor proxy apropiado.
  6. Por razones de seguridad, las solicitudes de los clientes se enrutan a través del servidor más limpio.
  7. El servidor depurador reenvía buen tráfico al servidor proxy perimetral.
  8. El servidor proxy perimetral atiende las solicitudes de los clientes y envía periódicamente información contable al sistema de gestión. El sistema de gestión actualiza el servidor de origen y envía comentarios al sistema de enrutamiento con estadísticas y detalles sobre el contenido. Sin embargo, si el contenido no está disponible en el servidor proxy, la solicitud se enrutará al servidor de origen. Si el contenido no se encuentra en un servidor proxy perimetral, también puede haber una jerarquía de servidores proxy. En este caso, la solicitud se reenvía al servidor proxy principal.

posdata

CDN es una herramienta comúnmente utilizada por los ingenieros de software. También puede utilizar servicios CDN ya preparados de algunos proveedores de servicios de Internet. Sin embargo, también se recomienda que aprenda más sobre los principios detrás de CDN antes de usarlo, lo que también lo ayudará a comprender. el diseño del sistema. El próximo artículo también continuará explicando el contenido relacionado con CDN. Es posible que los lectores a quienes les guste el diseño de sistemas también deseen ver otro contenido.

Artículos relacionados

Explicación del almacenamiento de datos de valores clave del almacén de valores clave: diseño del sistema 11

Partición de datos ¿Qué es la partición de datos? – Diseño del sistema 10

¿Cómo optimiza la replicación de datos la base de datos? - Diseño del sistema 09

Introducción a los conceptos básicos de bases de datos: diseño de sistemas 08

Explicación del equilibrador de carga: diseño del sistema 07

¿Qué es DNS? Introducción al sistema de nombres de dominio – Diseño del sistema 06

Introducción al bloque de construcción de componentes de diseño de sistemas: diseño de sistemas 05

Cálculo del reverso del sobre: diseño del sistema 04

Características no funcionales del diseño de software – Diseño de sistemas 03

Aplicación de la abstracción en el diseño de sistemas – Diseño de sistemas 02

Introducción al diseño de sistemas modernos – Diseño de sistemas 01

Cita

Diseño de sistema moderno Grokking

¿Qué es una red de entrega de contenido (CDN)? ¿Cómo funcionan las CDN?

 

 

es_ESEspañol