Menú
Está libre
registrarse
hogar  /  Problemas / KATE MATSERA: Arquitectura web escalable y sistemas distribuidos. Sistema BBR: Regulación de la congestión directamente por refociamiento de Detalle desesperado CFM

Kate Matsera: Arquitectura web escalable y sistemas distribuidos. Sistema BBR: Regulación de la congestión directamente por refociamiento de Detalle desesperado CFM

En este artículo, presentaremos algunos conceptos que deben usarse al elegir un fanático de la caja y contaremos sobre las características características para diferentes tipos de fanáticos. Además, probaremos el ventilador AKASA AKASA AK-183-L2B de 120 mm, que se ha utilizado durante más de un año como un elemento activo del sistema de refrigeración del procesador Termaltake Torre Sonic utilizada al probar los procesadores y tarjetas de video. Y se debe tener en cuenta que merecía plenamente el derecho a convertirse en el primer héroe en una serie de revisiones dedicadas a los fanáticos en nuestro recurso.

Cuestiones en las que intentaremos responder ...

¿Qué requisitos se pueden enviar al fan del gabinete?

  1. Nivel de desempeño.
  2. Nivel de ruido.
  3. Apariencia (disponibilidad y vista de la luz de fondo).
  4. Características adicionales (soporte de nutrición PWM, la presencia de un controlador de velocidad, configuración de la fijación antivibración).

¿Cuáles son las principales diferencias en los fanáticos del corpus?

1. Dimensiones duras - El tamaño del impulsor.

Para crear ventilación interna en la carcasa, en la mayoría de los casos, los ventiladores se utilizan con un tamaño estándar igual a 80 mm, 92 mm o 120 mm, ya que para su instalación en la carcasa, los orificios de montaje se proporcionan inicialmente. Está bastante claro que cuanto mayor sea el tamaño del impulsor en el ventilador, mayor será su capacidad para bombear el flujo de aire. Por lo tanto, el ventilador con un tamaño más pequeño para lograr los indicadores de rendimiento de los modelos grandes tendrá que girar a una velocidad más alta y, en consecuencia, es mucho más ruido. En realidad, se utilizan fanáticos de 120 mm con precisión por esta razón.

Para mayor claridad de estas propiedades, puede comparar las características de los modelos de los fanáticos de la empresa Xinruilian Science & Technology Co. Tener diferentes tamaños:

Tamaño, mm.

RPM de velocidad

Flujo de aire, CFM

Nivel de ruido, DB

PRESIÓN, MM H 2 0

A juzgar por las características anteriores de los modelos, se puede concluir que a la misma velocidad de rotación, el ventilador de 92 mm será de 1,65 veces más productivo que 80 mm, y el ventilador de 120 mm será el doble de eficiente de 92 mm, teniendo en cuenta el hecho Que todos los fans poseen un tipo de impulsor.

Además de los diferentes diámetros de impulsor, el tamaño del perfil o la profundidad del ventilador es igualmente importante. "Classic" para edificios ordinarios es de 25 mm de perfil. Con un perfil más pequeño, los ventiladores se llaman de perfil bajo, y con gran perfil de alto perfil. Desde la magnitud del perfil, depende directamente de la potencia del flujo de aire, que se caracteriza en la especificación del valor de la presión máxima.

Por ejemplo, comparamos las características de dos modelos de 120 mm, con un perfil convencional y un alto perfil que funciona a una velocidad de rotación.

Tamaño, mm.

RPM de velocidad

Flujo de aire, CFM

Nivel de ruido, DB

PRESIÓN, MM H20

Desde la mesa, está claro que el ventilador de alto perfil es solo el mejor indicador de la presión máxima del flujo de aire. En los sistemas informáticos convencionales, no hay necesidad de la creación de la sobrepresión, por lo que estos fanáticos no encuentran aplicaciones en ellas. En la mayoría de los casos, los ventiladores de alto perfil se utilizan en servidores, además, tienen una mayor velocidad de rotación y, como resultado, un ruido de trabajo bastante grande.

2. Rodamiento.

En los fanáticos, se utilizan tres tipos principales de cojinete: opción deslizante, deslizamiento combinado y laminación, y que consiste en dos rodamientos. Además de estos tipos de cojinetes, es notable menos común, existen especies hidrodinámicas que se desarrollan específicamente por separado por algunos fabricantes.

La mayoría de las veces, es posible determinar el tipo de cojinete por disponibilidad en el título del modelo de ventilador de los siguientes índices, aunque siempre es deseable consultar con la especificación oficial:

S. (manga.) - Rodamiento deslizante, que es esencialmente una manga;
CON (combo.) - un rodamiento de bolas y manga corta;
B (bola) o 2b (2 bola) - Dos rodamientos de bolas.

Lo más fácil y barato, pero desafortunadamente, no es particularmente duradero es el cojinete deslizante. Este cojinete tiene la apariencia de una pequeña manga de cobre, dentro de la cual, girando, eje de deslizamiento (varilla) del impulsor. El nuevo ventilador con un cojinete deslizante lubricado puede ser completamente silencioso, pero después de los tiempos, esta propiedad puede perderse. En ausencia de un nivel adecuado de lubricación, la "producción" del manguito se encuentra rápidamente rápidamente, debido a que el ventilador comienza a hacer ruido. Además, en ausencia de lubricante, trabajando en una zona con una temperatura elevada, el ventilador puede enjuagar por completo. Especialmente claramente, este hecho demuestra casos con unidades de potencia chino de bajo costo, en las que no hubo casos de detención del ventilador en el cojinete deslizante, proporcionando elementos semiconductores de alimentación de refrigeración. Como resultado, la fuente de alimentación falló.

La opción de cojinete combinada tiene un recurso relativamente mayor del cojinete.

El rodamiento, que consta de dos rodamientos de bolas, es el más caro, pero al mismo tiempo, una opción más duradera. Este tipo de cojinete puede trabajar libremente en una zona con una temperatura elevada. Pero al mismo tiempo, a menudo entre estos fanáticos puede cumplir con los especímenes, emitiendo un ruido bastante fuerte y desagradable. Dicha imagen es especialmente característica de los fanáticos baratos, porque las características de ruido de todo el diseño dependen directamente de la calidad de la fabricación de un cojinete en miniatura. Por lo tanto, si elige un producto en rodamientos de bolas, en ningún caso no se persigue por su bajo costo, ya que los modelos aún más caros rara vez son silenciosos.

3. Clase del motor.

Todos los fanáticos del gabinete operan en motores DC de cuatro polos. En la velocidad, todos están clasificados en tres categorías: hasta 2000 rpm de baja velocidad, de 2000 a 3000rd / min. Medio y más de 3000 rpm de alta velocidad. A menudo puede encontrar la clase del motor del ventilador por índice en su nombre, que a menudo se indica en la etiqueta:

Lbajo.) - ardilla ( hasta el año 2000. RPM);
METRO. (medio) - medio ( de 2000 a 3000 RPM);
H. (elevado) - velocidad ( más de 3000.rpm).

¿Qué dieron los datos en la especificación de los fabricantes?

Velocidad de rotación del ventilador Se mide en el número de revoluciones en un minuto (RPM - Rotaciones por minuto). Dado que la velocidad del ventilador en sí puede variar casi directamente proporcional a la tensión de alimentación, el valor dado en la especificación corresponde a la tensión de suministro nominal. Cuanto mayor sea la velocidad de rotación, más eficiente, el ventilador, pero también, suele ser ruidoso.

Flujo de aire Se puede indicar en CFM (pies cúbicos por minuto, CFM) - Pie cúbico por minuto o metros cúbicos por hora (M 3 / H). Además, 1 cfm ≈ 1.7 m 3 / h. Esta magnitud muestra el número de aire "alineado" durante un cierto período de tiempo, siempre que haya una ausencia completa de resistencia al flujo de aire, es decir, con una presión de aire en ambos lados del ventilador. Por supuesto, cuanto más este valor, mejor.

Presión de flujo de aire estático El ventilador suele ser conducido en mm de columna de agua y caracteriza la potencia del flujo de aire, que puede crear un ventilador.

Recuerde que la presión se calcula por la fórmula P \u003d F / S. Es decir, la presión es la relación de la fuerza del flujo de aire a la plaza en la que funciona. La especificación indica el valor máximo del flujo de aire que el ventilador crea cuando no puede crear un flujo de aire debido a la resistencia.

Toda la característica del ventilador se puede ver en el cuadro "Rendimiento de la curva".

La curva de rendimiento representa la dependencia del flujo de aire de la presión. El punto más alto de la curva, ubicado en el eje, no es más que la presión máxima, que se proporciona en la especificación. El punto más bajo de la curva que se encuentra en otro eje corresponde al flujo de aire máximo del ventilador cuando no tiene que crear presión. En condiciones reales, en el caso, el flujo de aire debe superar cierta resistencia. Cada caso individualmente tiene su propio grado de resistencia. La resistencia del sistema se expresará inclinada en la tabla, y el punto de intersección de una directa y curva no es más que un punto de operación del ventilador en nuestro sistema condicional.

Recurso de ventiladorse mide por el número de mil horas durante el cual el ventilador debe operar y proporcionar características indicadas. El autor del artículo no se conoce plenamente, en qué condiciones de funcionamiento se logran los valores, ya que la vida útil depende directamente de las condiciones de trabajo. Se entiende que el ventilador es capaz sin perder sus cualidades de ruido para resolver el número de horas especificado. El recurso depende en gran medida del tipo y la calidad del rodamiento. Para los cojinetes de deslizamiento, generalmente se indica en 30,000 horas, para una combinación de 45,000 horas, y para un rodamientos de doble bolas, los valores son 60,000 horas y más.

En la mayoría de los casos, el ventilador en el rodamiento deslizante puede ser bastante tranquilo durante aproximadamente un año, aunque los fabricantes declaran a un número de 30 mil. Por lo tanto, no debe ser tratado con estos números. Y si cava, resulta que el fabricante significaba también el mantenimiento periódico de los fanáticos, es decir, Lubricación que los usuarios ordinarios rara vez producen.

Ahora vuelve al héroe de nuestro fan de la revisión. aKASA AK-183-L2B y mira su especificación:

akasa. AK-183-L2B

Tamaño, mm.

Velocidad de rotación, RPM

Flujo de aire, CFM

PRESIÓN, MM H20

Recurso, CH

Tipo de rodamiento

dos paseos

De 3 clavijas

Nivel de ruido, DB

Voltaje de suministro, en

Página web de productos

precio promedio

El ventilador AKASA AK-183-L2B está lleno en envases de plástico transparente. En el paquete desde el reverso hay una hoja de cartón de azul, enfatizando la caja transparente y un impulsor de amarillo ámbar translúcido del ventilador. En general, todo está decorado en el habitual color azul-amarillo azul de Akasa Group.

En el reverso de la pestaña de cartón en cinco idiomas diferentes se da una especificación.

Además del ventilador en la parte inferior del paquete, una pequeña caja de cartón de negro con una inscripción en la traducción sonada como "adaptador de 3-4 pines" está incrustada.

Por lo tanto, no es todo sorprendente que un adaptador haya estado en el cuadro que le permita conectar el ventilador de los conectores de dispositivos periféricos, y además, que tiene un conector de 3 clavijas para controlar la velocidad de rotación del ventilador. También en una pequeña caja negra había cuatro tornillos para instalar el ventilador en la caja.

La caja de ventilador AKASA AK-183-L2B está hecha de plástico transparente blanco, y su impulsor es de plástico translúcido amarillo-amarillo. En realidad, si consideramos toda la gama de productos de AKASA, entonces rara vez se encuentra en cualquier solvencia simple y estándar, porque la compañía se distribuye a la distribución de productos en su mayor parte calculada precisamente para la modificación. Pero esto no significa que si no se considera en la casta de modestos y está acostumbrado a evaluar las mercancías solo de consideraciones prácticas, este fanático y el resto de los bienes similares no encajan. De hecho, en la producción de productos para los llamados usuarios no fáciles, mods o pasa por alto, siempre hay un aumento de la atención principalmente a la calidad de la fabricación y algo más altos de sus propiedades. Por lo tanto, no es todo sorprendente que casi siempre las cualidades de los consumidores de tales productos son más altas que las de productos simples.

Externamente, el ventilador está definitivamente asignado principalmente una hermosa combinación de color amarillo y blanco, y parece que un ventilador similar simplemente está obligado a tener una luz de fondo, pero de hecho no lo es. Desde el punto de vista de la aerodinámica, no se implementa ninguna innovación ni know-how en el ventilador, un simple impulsor seminal.

Akasa AK-183-L2B Fan se refiere a modelos de baja velocidad, su velocidad de rotación nominal es de 1,400 rpm. Al mismo tiempo, el flujo máximo de aire puede alcanzar el valor de 44.8 CFM y la presión estática de 1,1 mm de columna de agua . Las características no son de UltraHigh y bastante ordinarias, pero no es sorprendente, ya que para el fanático del casco del sistema de vivienda, existen principalmente requisitos para el ruido.

Y en este sentido, la especificación indica un ruido bastante bajo igual a 18 dB. Cabe señalar que el ventilador AKASA AK-183-L2B se basa en dos rodamientos de bolas, y su recurso de acuerdo con el fabricante es de 80,000 horas. El valor habitual para los rodamientos de bolas son valores de 60,000 horas, por lo que un valor ligeramente ampliado da motivo a la esperanza de un mejor enfoque de su fabricación, porque ya hemos señalado, es la calidad de la fabricación de un rodamiento de bolas determina su Características de ruido.

El ventilador está alimentado por un conector de alimentación de 3 clavijas que no admite fuentes de alimentación latitudinales.

Pruebas

La parte práctica de la prueba consiste en dos etapas de probar el flujo de aire creado del ventilador en la facturación nominal, así como la evaluación de su volumen en el rumor.

Prueba №1

En la primera prueba, el ventilador realizará la función del elemento activo del enfriador Thermalright SI-128. Las pruebas se realizan en una carcasa abierta, y el parámetro controlado principal es la temperatura de calentamiento overclockeada a la frecuencia del procesador de 2.8 GHz Intel Core 2 DUO E6300 y la temperatura de la placa del sistema.

Prueba número 2.

En la segunda prueba, el ventilador se aplicará a la intención directamente como un ventilador de cuerpo instalado en el panel posterior y se ejecutará en soplado. Durante la prueba, la vivienda se cerrará y no habrá otros fanáticos incluidos. El parámetro controlado principal también será la temperatura de calentamiento del procesador Intel Core 2 Duo E6300, pero ahora sin aceleración, al que se instala el término de la torre Sonic del sistema de enfriamiento pasivo (CL-P0071) y la temperatura de la placa del sistema. El resultado de la prueba se fija después de una "ejecución" de 10 minutos de la prueba de esfuerzo del procesador en la aplicación Everest.

La configuración de prueba de la plataforma con el procesador Intel consta de los siguientes componentes:

tarjeta madre

Gigabyte GA-965P-DS4 (Intel P965 Express)

UPC

Intel Core 2 DUO E6300 (LGA775, 1.86 GHz, L2 2 MB) @ 2.8 GHz

RAM

2 x DDR2-800 1024 MB APACER PC6400

Tarjeta de video

Evga GeForce 8600GTS 256 MB DDR3 PCI-E

Hdd

Samsung HD080HJ, 80 GB, SATA-300

Unidad óptica

Asus DRW-1814BLT SATA

Fuente de alimentación

CHIEFTEC CFT-500-A12S 500W, ventilador de 120 mm

Codegen m603 midierower

El ventilador AKASA AK-183-L2B demuestra un buen desempeño en el igual que el resto de los competidores. Un nivel de ruido declarado bastante bajo de 18 dB solo puede ser confirmado por su opinión subjetiva. El valor especificado realmente corresponde completamente al nivel real de ruido: hace un pequeño rumor en los giros máximos.

Recomendaciones.

El ventilador Akasa AK-183-L2B no es una decoración hermosa exclusivamente modificada, como puede parecer inmediatamente al comprador. Puede crear un flujo de aire bastante grande, y, lo que es más importante, hace un nivel de ruido bastante bajo. Si tenemos en cuenta su costo aceptable en cuanto a un modelo de alta calidad de un ventilador de bolas, luego en esta categoría de bienes en la proporción de cualidades de precio / consumidor será uno de los mejores. Repita que en nuestro laboratorio de pruebas, el ventilador AKASA AK-183-L2B logró trabajar durante más de un año, y sus cualidades de ruido durante este tiempo no han cambiado.

Ventajas:

  • crea un gran flujo de aire;
  • ruido bajo;
  • buena relación precio / calidad de consumidor.

Dibujamos a las desventajas:

  • no hay soporte PWM.

Expresamos mi gratitud a la empresa PF Service (Dnepropetrovsk) para la prueba de equipos proporcionados para las pruebas.

El artículo lee 4669 veces (s).

Suscríbete a nuestros canales.

El software público se ha convertido en el principal elemento estructural al crear algunos de los sitios web más grandes. Con el crecimiento de estos sitios web, surgió métodos prácticos avanzados y las directrices de su arquitectura. Este capítulo busca cubrir algunas preguntas clave que se deben tener en cuenta al diseñar grandes sitios web, así como algunos componentes básicos utilizados para lograr estos objetivos.

El enfoque de este capítulo se proporciona al análisis de los sistemas web, aunque parte del material puede extrapolarse a otros sistemas distribuidos.

1.1 Principios para la construcción de sistemas web distribuidos.

¿Qué es exactamente la creación y la gestión de un sitio web escalable o una aplicación? A nivel primitivo, esta es simplemente una conexión de usuarios con recursos remotos a través de Internet. Y los recursos o el acceso a estos recursos, que se dispersan en múltiples servidores y son un enlace que proporciona la escalabilidad del sitio web.

Como la mayoría de las cosas de la vida, el tiempo que pasó de antemano en la planificación del servicio web puede ayudar en el futuro; Comprender algunas consideraciones y compromisos de pie detrás de los sitios web grandes pueden traer frutos en forma de soluciones más inteligentes al crear sitios web más pequeños. Debajo de algunos principios clave que afectan el diseño de sistemas web a gran escala:

  • Disponibilidad: La duración del estado viable del sitio web es crítico en relación con la reputación y la funcionalidad de muchas empresas. Para algunas tiendas minoristas en línea más grandes, la inaccesibilidad incluso durante unos minutos puede llevar a miles o millones de dólares de ingresos perdidos. Por lo tanto, el desarrollo de su constantemente asequible y elástico para el fracaso de los sistemas es tanto un negocio fundamental como un requisito tecnológico. La alta disponibilidad en sistemas distribuidos requiere una cuidadosa consideración de redundancia para componentes clave, recuperación rápida después de fallas parciales del sistema y abreviaturas suavizadas cuando se producen problemas.
  • Rendimiento: El rendimiento del sitio web se ha convertido en un indicador importante para la mayoría de los sitios. La velocidad del sitio web afecta la satisfacción laboral y del usuario, así como el ranking de los motores de búsqueda, un factor que afecta directamente a la celebración de la audiencia y los ingresos. Como resultado, la clave es la creación de un sistema que está optimizado para respuestas rápidas y retrasos bajos.
  • Fiabilidad: El sistema debe ser confiable, de modo que una determinada solicitud de adquisiciones de datos devuelva uniformemente ciertos datos. En caso de cambio de datos o actualización, la misma consulta debe devolver nuevos datos. Los usuarios deben saber si se registra algo en el sistema o se almacena en él, entonces puede estar seguro de que permanecerá en su lugar para extraer datos posteriormente.
  • Escalabilidad: Cuando se trata de cualquier sistema distribuido grande, el tamaño resulta que es solo un punto de toda la lista que debe considerarse. No menos importantes esfuerzos para aumentar el ancho de banda para procesar volúmenes de carga grandes, que generalmente se conoce como la escalabilidad del sistema. La escalabilidad puede relacionarse con diferentes parámetros del sistema: el número de tráfico adicional con el que puede hacer frente a lo fácil que es aumentar la capacidad del dispositivo de almacenamiento, o cuánto más de las transacciones se pueden procesar.
  • Control de control: Diseñar un sistema que sea fácil de operar otro factor importante. La capacidad de control del sistema es igual a la escalabilidad de las operaciones de "Mantenimiento" y "Actualizaciones". Para garantizar la capacidad de administración, es necesario considerar los problemas de simplicidad del diagnóstico y la comprensión de los problemas emergentes, la facilidad de actualizaciones o la modificación, caprichosa del sistema en funcionamiento (es decir, si funciona sin fallas o excepciones?)
  • Costo: El costo es un factor importante. Obviamente, puede incluir el costo de hardware y software, pero también es importante considerar otros aspectos necesarios para implementar y mantener el sistema. La cantidad de tiempo de desarrollo requerido para construir un sistema, el alcance de los esfuerzos operativos necesarios para lanzar el sistema, e incluso un nivel suficiente de capacitación, se debe proporcionar todo. El costo es el costo total de propiedad.

Cada uno de estos principios es la base para tomar decisiones en el diseño de una arquitectura web distribuida. Sin embargo, también pueden estar en contradicción entre sí, porque el logro de los objetivos de uno ocurre debido a la desprecio por parte de otros. Un ejemplo simple: la selección de una adición simple de servidores múltiples como una solución de rendimiento (escalabilidad) puede aumentar los costos de control de la capacidad de control (debe operar un servidor adicional) y la compra de servidores.

Al desarrollar cualquier tipo de aplicación web, es importante considerar estos principios clave, incluso si debe confirmar que el proyecto puede donar uno o más de ellos.

1.2 fundamentos

Al considerar la arquitectura del sistema, hay varias preguntas que deben ser iluminadas, por ejemplo: qué componentes deben usarse, a medida que se combinan entre sí, y lo que se comprometa puede ir. Invertir dinero en la escala sin la necesidad obvia de que no se puede considerar una decisión de negocios razonable. Sin embargo, cierta prudencia en la planificación puede ahorrar significativamente tiempo y recursos en el futuro.

Esta sección está dedicada a algunos factores básicos que son esenciales para casi todas las aplicaciones web grandes: servicios,
redundancia, segmentación, I. fallo de procesamiento. Cada uno de estos factores implica la elección y los compromisos, especialmente en el contexto de los principios descritos en la sección anterior. Para explicación, le damos un ejemplo.

Ejemplo: Aplicación de alojamiento de imágenes

Probablemente hayas colocado imágenes en la red. Para sitios grandes que proporcionan almacenamiento y entrega de varias imágenes, existen problemas en la creación de una arquitectura rentable y altamente confiable, que se caracteriza por retrasos bajos de respuesta (extracción rápida).

Imagine el sistema donde los usuarios tienen la capacidad de subir sus imágenes en el servidor central, y al mismo tiempo se pueden solicitar imágenes a través de un enlace al sitio o API, similar a Flickr o Picasa. Para simplificar la descripción, asumamos que esta aplicación tiene dos tareas principales: la capacidad de cargar (escribir) imágenes en el servidor y solicitar imágenes. Por supuesto, la descarga eficiente es un criterio importante, sin embargo, la prioridad será la entrega rápida por solicitud de usuarios (por ejemplo, se puede solicitar imágenes que se muestren en una página web u otra aplicación). Esta funcionalidad es similar a la que un servidor web puede proporcionar un servidor web o un servidor de red de entrega de contenido de borde (red de entrega de contenido, CDN). El servidor CDN generalmente almacena los objetos de datos en muchas ubicaciones, por lo tanto, su colocación geográfica / física está más cerca de los usuarios, lo que conduce a un aumento en el rendimiento.

Otros aspectos importantes del sistema:

  • El número de imágenes almacenadas puede ser ilimitado, por lo tanto, la escalabilidad del almacenamiento debe considerarse a partir de este punto de vista.
  • Debe haber un retraso bajo para las solicitudes de descarga / imagen.
  • Si el usuario carga la imagen en el servidor, entonces sus datos siempre deben permanecer holísticos y asequibles.
  • El sistema debe ser fácil de mantener (manejo).
  • Dado que el alojamiento de imágenes no trae grandes ganancias, el sistema debe ser rentable.

Otro problema potencial con este diseño es que el servidor web, como Apache o LighttPD, generalmente existe un límite superior del número de conexiones simultáneas, que está en el estado de la porción (valor predeterminado, aproximadamente 500, pero puede ser Mucho más alto), y con alto tráfico, la grabación puede pasar rápidamente este límite. Dado que las lecturas pueden ser asíncronas o usar otra optimización de rendimiento como compresión de GZIP o transmisión con división en una parte, un servidor web puede cambiar al lector de alimento más rápido y cambiar entre clientes, sirviendo muchas más solicitudes que el número máximo de conexiones (con Apache y El número máximo de conexiones instaladas en 500, es bastante realista para servir a varios miles de solicitudes de lectura por segundo). Las entradas, por otro lado, tienden a mantener una conexión abierta durante todo el tiempo de descarga. Por lo tanto, la transferencia de un archivo con un tamaño de 1 MB al servidor podría tomar más de 1 segundo en la mayoría de las redes domésticas, como resultado, el servidor web podrá procesar solo 500 registros simultáneos.


Figura 1.2: División de lectura y escritura.

La previsión de un problema tan potencial indica la necesidad de dividir la lectura y la escritura de imágenes a los servicios independientes mostrados por. Esto no solo se escalará cada uno de ellos individualmente (ya que es probable que siempre hagamos más lecturas que los registros), sino que también sean conscientes de lo que sucede en todos los servicios. Finalmente, distinguirá los problemas capaces de emerger en el futuro, lo que simplificará el diagnóstico y la evaluación del problema de la lectura lenta.

La ventaja de este enfoque es que podemos resolver problemas independientemente entre sí, mientras que no tenemos que pensar en la necesidad de grabar y obtener nuevas imágenes en un contexto. Ambos servicios aún utilizan el caso de la imagen global, sino que cuando se usa los métodos del servicio específico correspondiente, pueden optimizar su propio rendimiento (por ejemplo, la colocación de solicitudes de cola o en caché las imágenes populares, más se discutirán. más). Tanto desde el punto de vista del servicio y el costo, cada servicio se puede escalar independientemente según sea necesario. Y este es un factor positivo, ya que su asociación y mezcla podría influir inadvertidamente por su desempeño, como en el script descrito anteriormente.

Por supuesto, el trabajo del modelo mencionado anteriormente será óptimo, en el caso de la presencia de dos puntos finales diferentes (de hecho, es muy similar a varias implementaciones de los proveedores de los proveedores de "nube" y redes de entrega de contenido). Hay muchas maneras de resolver tales problemas, y en cada caso puedes encontrar un compromiso.

Por ejemplo, Flickr resuelve este problema de lectura-escritura, distribuyendo usuarios entre diferentes módulos, de modo que cada módulo solo pueda servir a un número limitado de ciertos usuarios, y cuando los usuarios del número aumentan, se agregan más módulos al clúster (consulte la escala de Flickr presentación,
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). En el primer ejemplo, es más fácil de escalar el hardware en función del uso real del uso (el número de lecturas y registros en todo el sistema), mientras que la escala de Flickr se basa en la base del usuario (sin embargo, se usa aquí para uniforme Use de diferentes usuarios, por lo que la energía debe ser planificada de la reserva). En el pasado, la inaccesibilidad o un problema con uno de los servicios, la funcionalidad de todo un sistema fue inoperable (por ejemplo, nadie puede escribir archivos), entonces la inaccesibilidad de uno de los módulos Flickr solo afectará a los usuarios relacionados con él. En el primer ejemplo, es más fácil realizar operaciones con un conjunto de datos completo, por ejemplo, actualizar el servicio de grabación para habilitar nuevos metadatos, o realizar una búsqueda en todas las imágenes de Metadament, mientras que con la arquitectura Flickr cada módulo se actualizaría. La búsqueda (o el servicio de búsqueda se debe crear para ordenar los metadatos que realmente están destinados a esto).

En cuanto a estos sistemas, no hay panacea, pero siempre debe estar procediendo de los principios descritos al comienzo de este capítulo: para identificar las necesidades del sistema (la carga de las operaciones de lectura o "escritura" o todos inmediatamente, el nivel de paralelismo, Solicitudes de conjuntos de datos, rangos, clases, etc.), realice pruebas de referencia comparativas de varias alternativas, comprenda las condiciones de la falla potencial del sistema y desarrolle un plan integrado para la aparición de fallas.

Redundancia

Para enfrentar elegantemente la negativa, la arquitectura web debe tener redundancia de sus servicios y datos. Por ejemplo, en el caso de una sola copia del archivo almacenado en un solo servidor, la pérdida de este servidor significará la pérdida y el archivo. Es poco probable que tal situación se pueda caracterizar de manera positiva, y generalmente puede evitarse creando copias múltiples o de copia de seguridad.

Este mismo principio es aplicable a los servicios. Desde la falla del único nodo, puede proteger si es posible proporcionar una parte integral de la funcionalidad para la aplicación que garantiza el funcionamiento simultáneo de sus varias copias o versiones.

Crear redundancia en el sistema le permite deshacerse de puntos débiles y proporcionar una funcionalidad de copia de seguridad o redundante en caso de una situación anormal. Por ejemplo, en el caso de la presencia de dos copias del mismo servicio que opera en la "producción", y una de ellas falla de forma total o parcial, el sistema puede superar la negativa debido a Cambio a una instancia útil.
La conmutación puede ocurrir automáticamente o requerir intervención manual.

Otro papel clave de la redundancia de los servicios - Creación arquitectura que no proporciona separación de recursos.. Con esta arquitectura, cada nodo es capaz de trabajar de forma independiente y, además, en ausencia de un "cerebro" central, administrar estados o una acción de coordinación de otros nodos. Contribuye a la escalabilidad, ya que la adición de nuevos nodos no requiere condiciones o conocimientos especiales. Y lo más importante, en estos sistemas, no hay un punto de rechazo vulnerable crítico, lo que los hace mucho más elásticos al fracaso.

Por ejemplo, en nuestra aplicación de servidor de aplicaciones, todas las imágenes tendrían copias redundantes en algún lugar en otra parte del hardware (ideal, con una ubicación geográfica diferente en caso de una catástrofe, como un terremoto o fuego en el centro de datos), y Los servicios de acceso de la imagen serán redundantes, a pesar del hecho de que todos ellos podrán servir a las solicitudes. (Cm. .)
Mirando hacia adelante, el equilibrio de carga es una excelente manera de hacerlo posible, pero más al más abajo.


Figura 1.3: Aplicación de alojamiento de aplicaciones con redundancia

Segmentación

Los conjuntos de datos pueden ser tan grandes que no se pueden colocar en un servidor. También puede suceder que las operaciones de computación requerirán recursos informáticos demasiado grandes, lo que reduce la productividad y lo hace necesario aumentar la potencia. En cualquier caso, tiene dos opciones: escala vertical u horizontal.

La escala vertical implica la adición de más recursos a un servidor separado. Por lo tanto, para un conjunto muy grande de datos, esto significaría agregar más (o más) discos duros, y por lo tanto, el conjunto de datos completo podría ubicarse en el mismo servidor. En el caso de las operaciones computacionales, esto significaría el movimiento de cálculos en un servidor más grande con una CPU más rápida o una gran cantidad de memoria. En cualquier caso, se realiza la escala vertical para hacer un recurso separado del sistema de computación capaz de procesar datos adicionales.

La escala horizontal, por otro lado, suministra la adición de un número mayor de nodos. En el caso de un gran conjunto de datos, esto significaría agregar un segundo servidor para almacenar parte de la cantidad total de datos, y para un recurso informático, significaría la separación del trabajo o la descarga a través de algunos nodos adicionales. Para aprovechar al máximo el potencial de la escala horizontal, debe implementarse como un principio interno del desarrollo de la arquitectura del sistema. De lo contrario, el cambio y la asignación del contexto necesario para la escala horizontal pueden ser problemáticos.

El método más común de escala horizontal es la separación de servicios para segmentos o módulos. Se pueden distribuir de tal manera que cada conjunto lógico de funcionalidad funcione por separado. Esto puede ser realizado por bordes geográficos u otros criterios, como pagar y no pagar a los usuarios. La ventaja de estos esquemas es que proporcionan un servicio o almacén de datos con una funcionalidad extendida.

En nuestro ejemplo del servidor de imágenes, es posible que el único servidor de archivos utilizado para almacenar la imagen pueda ser reemplazado por una multitud de servidores de archivos, y cada uno de ellos contendrá su propio conjunto único de imágenes. (Ver.) Dicha arquitectura permitirá que el sistema llene cada servidor de archivos con imágenes agregando servidores adicionales a medida que se llena el espacio en disco. El diseño requerirá un esquema de nombres que conectará el nombre del archivo de imagen con su servidor. El nombre de la imagen se puede formar a partir de un circuito de consistencia del hashing atado a los servidores. O alternativamente, cada imagen puede tener un identificador incremental, que permitirá el servicio de entrega cuando se le solicitará la imagen que procese solo el rango de identificadores conectados a cada servidor (como índice).


Figura 1.4: Aplicación de alojamiento con redundancia y segmentación.

Por supuesto, existen dificultades en la distribución de datos o funcionalidad a muchos servidores. Una de las preguntas clave - ubicación de los datos; En los sistemas distribuidos, cuanto más cerca se cierren los datos al lugar de operación o al punto de cálculo, mejor será el rendimiento del sistema. En consecuencia, la distribución de datos en múltiples servidores es potencialmente problemática, ya que en cualquier momento en que se necesitan estos datos, el riesgo de que no sean en el lugar de la reclamación, el servidor tendrá que realizar la muestra costosa de la información necesaria En la red.

Otro problema potencial se produce en la forma.
inconsistencias (no contestaciones). Cuando los diversos servicios leen y escriben en el recurso compartido, potencialmente otro servicio o tienda de datos, existe la posibilidad de las condiciones de "concurso", donde algunos datos se consideran actualizados al estado actual, pero en realidad, su lectura ocurre hasta la El momento de la actualización, y en este caso los datos son inconticentes. Por ejemplo, en el escenario de alojamiento de imágenes, el estado del concurso podría ocurrir si un cliente envió una solicitud para actualizar la imagen de un perro con un cambio en el encabezado "perro" en "gizmo", en el momento en que otro cliente lee la imagen. En tal situación, no está claro qué tipo de título, "perro" o "gizmo" sería recibido por el segundo cliente.

Hay, por supuesto, algunos obstáculos asociados con la segmentación de datos, pero la segmentación le permite asignar cada uno de los problemas de otros: de acuerdo con los datos, en la carga, de acuerdo con las muestras de uso, etc. En bloques gestionados. Puede ayudar con la escalabilidad y el manejo, pero el riesgo aún está presente. Hay muchas maneras de reducir el riesgo y el procesamiento de fallas; Sin embargo, en interés de la brevedad, no están cubiertos en este capítulo. Si desea obtener más información sobre este tema, debe mirar la publicación del blog en la tolerancia y monitoreo de fallas.

1.3. Componentes estructurales de acceso de datos rápido y escalable.

Habiendo considerado algunos principios básicos en el desarrollo de sistemas distribuidos, pasemos ahora a un momento más complejo: escalonar el acceso a los datos.

Las aplicaciones web más simples, como las aplicaciones de la pila de lámpara, son similares a la imagen encendida.


Figura 1.5: Aplicaciones web simples

Con la aplicación cada vez mayor, hay dos dificultades principales: acceso a la base del servidor de aplicaciones y a la base de datos. En un diseño bien escalable de aplicaciones, un servidor web o un servidor de aplicaciones generalmente se minimiza y, a menudo, se encarna de una arquitectura que no proporciona la separación de recursos conjuntos. Esto hace que el nivel del servidor de aplicaciones del sistema sea horizontalmente escalable. Como resultado de usar dicho diseño, el trabajo duro cambiará la pila al servidor de la base de datos y los servicios subsidiarios; Está en esta capa que los problemas reales de escala y productividad entran en juego.

El resto de este capítulo está dedicado a algunas de las estrategias y métodos más comunes para mejorar la productividad y garantizar la escalabilidad de dichos tipos de servicios al proporcionar acceso rápido a los datos.


Figura 1.6: Aplicación web simplificada

La mayoría de los sistemas se pueden simplificar antes del plan,
Que es un buen punto de partida para comenzar la consideración. Si tiene muchos datos, se puede suponer que desea tener el mismo acceso fácil y acceso rápido, como una caja con paletas en el cajón superior de su escritorio. Aunque esta comparación se simplifica excesivamente, indica dos problemas complejos: la escalabilidad del almacén de datos y el acceso rápido a los datos.

Para considerar esta sección, asumamos que tiene muchos datos de Terabytes (TB), y usted permite a los usuarios acceder a piezas pequeñas de estos datos en cualquier orden. (Cm. .)
Una tarea similar es determinar la ubicación del archivo de imagen en algún lugar del servidor de archivos en el ejemplo de la aplicación de alojamiento de imágenes.


Figura 1.7: Acceso a datos específicos

Esto es especialmente difícil porque la carga de los terabytes de datos en la memoria puede ser muy válida y afecta directamente el número de operaciones de disco de E / S. La velocidad de la lectura del disco es varias veces más baja que la velocidad de la lectura de la RAM, se puede decir que el acceso a la memoria con la misma forma rápida como la Norris de Chuck, mientras accede al disco es más lento que la cola en la clínica. Esta diferencia en la velocidad es especialmente tangible para grandes conjuntos de datos; En los números secos, el acceso a la memoria es 6 veces más rápido que la lectura de un disco para las operaciones de lectura sucesivas, y 100,000 veces, para las lecturas en orden aleatorio (consulte "Patología de los datos grandes", http://queue.acm.org/detail . CFM? ID \u003d 1563874).). Además, incluso con identificadores únicos, resolviendo el problema de encontrar la ubicación de una pequeña parte de los datos puede ser la misma tarea difícil como un intento sin buscar los últimos dulces con un relleno de chocolate de la caja con cien caramelos. .

Afortunadamente, hay muchos enfoques que se pueden aplicar para simplificar, de los cuales los cuatro enfoques más importantes son el uso de cachés, proxy, índices y equilibradores de carga. El resto de esta sección discute cómo se pueden usar cada uno de estos conceptos para poder acceder a los datos mucho más rápidos.

Cachés

El almacenamiento en caché da beneficios debido a la característica característica del principio básico: es probable que los datos solicitados recientemente sean requeridos nuevamente. Cafios se utilizan casi en cada nivel de computación: hardware, sistemas operativos, navegadores web, aplicaciones web y no solo. El caché es como una memoria a corto plazo: limitada por volumen, pero más rápido que la fuente de datos de origen, y que contiene elementos a los que se recibió recientemente. Kashi puede existir en todos los niveles de arquitectura, pero a menudo se encuentran en el nivel más cercano a los frontales, donde se implementan para devolver los datos rápidamente sin una carga significativa de backend.

¿De qué manera se puede usar el caché para acelerar el acceso de datos dentro de nuestra API de ejemplo? En este caso, hay varios lugares adecuados de colocación en caché. Como una de las posibles opciones de colocación, puede seleccionar nodos a nivel de solicitud, como se muestra en
.


Figura 1.8: Colocación del caché en el nodo de nivel de consulta

La ubicación del caché directamente en el nodo de nivel de consulta permite el almacenamiento local de los datos de respuesta. Cada vez que se ejecutará una solicitud de servicio, el nodo devolverá rápidamente los datos locales y almacenados en caché, si existe. Si no está en el caché, el nodo de solicitud solicitará datos del disco. El caché en un nodo de nivel de solicitud también podría ubicarse tanto en la memoria (que es muy rápido) y en el disco local del nodo (más rápido que intentar atraer al almacenamiento de la red).


Figura 1.9: Sistemas de cachés.

¿Qué sucede cuando distribuye el almacenamiento en caché en una variedad de nodos? Como ves, si el nivel de consulta incluirá una pluralidad de nodos, es probable que cada nodo también sea su propio caché. Sin embargo, si su carga de carga en orden aleatorio distribuye solicitudes entre nodos, la misma consulta cambiará a varios nodos, lo que aumentará las apelaciones fallidas al caché. De dos maneras de superar este obstáculo son los cachés globales y distribuidos.

Efectivo global

El significado del caché global está claro del título: todos los nodos usan un solo espacio de caché. En este caso, se agrega un servidor o repositorio de archivos de algún tipo, que es más rápido que su almacenamiento original y, que estará disponible para todos los nodos de nivel de solicitud. Cada uno de los nodos de solicitud solicita el caché de la misma manera que si fuera local. Este tipo de esquema de almacenamiento en caché puede causar algunas dificultades, ya que el único caché es muy fácil de sobrecargar si aumentará el número de clientes y solicitudes. Al mismo tiempo, un esquema de este tipo es muy efectivo en una determinada arquitectura (especialmente relacionada con el hardware especializado, que hace que este caché global sea muy rápido, o que tenga un conjunto de datos fijo, que debe estar en caché).

Hay dos formas estándar de cachés globales representados en los esquemas. La situación se muestra cuando la respuesta en caché no se encuentra en la memoria caché, el caché se hace responsable de obtener la parte que falta de los datos del almacenamiento básico. La responsabilidad de los nodos de solicitud se ilustra para obtener los datos que no se encuentren en el caché.


Figura 1.10: Caché global, donde el caché es responsable de extraer


Figura 1.11: Caché global, donde los nodos de solicitud son responsables de extraer

La mayoría de las aplicaciones que mejoran los cachés globales tienden a usar el primer tipo donde la memoria caché administra los datos de sustitución y muestreo para evitar la avalancha de las solicitudes de los mismos datos de los clientes. Sin embargo, hay algunos casos en los que la segunda implementación tiene más significado. Por ejemplo, si el caché se usa para archivos muy grandes, un bajo porcentaje de conversión exitosa a la memoria caché conducirá a una sobrecarga del caché de búfer que no tiene éxito apelaciones al caché; En esta situación, ayuda a tener un gran porcentaje de un conjunto de datos comunes (o conjunto de datos en caliente) en el caché. Otro ejemplo es una arquitectura donde los archivos almacenados en el caché son estáticos y no deben eliminarse. (Esto puede ocurrir debido a las principales características operativas con respecto a dicho retraso de datos, tal vez ciertas partes de los datos deben ser muy rápidas para los conjuntos de datos grandes, cuando la lógica de la aplicación entiende la estrategia de sustitución o las manchas calientes es mejor que el caché).

Efectivo distribuido

Estos índices a menudo se almacenan en la memoria o en algún lugar muy localmente con respecto a la solicitud entrante del cliente. Berkeley DB (BDB) y estructuras de datos de árboles que se usan comúnmente para almacenar datos en listas ordenadas son ideales para el acceso con un índice.

A menudo, hay muchos niveles de índices que sirven como un mapa al moverlo de un lugar a otro, etc., hasta que reciba esa parte de los datos que necesita. (Cm. )


Figura 1.17: Índices de varios niveles

Los índices también se pueden utilizar para crear varias otras presentaciones de los mismos datos. Para grandes conjuntos de datos, esta es una excelente manera de identificar varios filtros y especies sin recurrir a la creación de muchas copias adicionales de los datos.

Por ejemplo, supongamos que el sistema de alojamiento de imágenes mencionado anteriormente coloca imágenes de las páginas de libros, y el servicio proporciona solicitudes de los clientes de texto en estas imágenes, en busca de todo el contenido de texto en un tema determinado, así como los motores de búsqueda le permiten buscar por HTML Contenido. En este caso, todas estas imágenes de libros usan muchos servidores para almacenar archivos, y encontrar una página para representar al usuario puede ser bastante complicado. Inicialmente, los índices inversos para la solicitud de palabras arbitrarias y conjuntos de palabras deben ser fácilmente accesibles; Luego, hay una tarea de pasar a la página exacta y colóquelo en este libro y recuperar la imagen correcta para los resultados de búsqueda. Por lo tanto, en este caso, el índice invertido se mostrará en la ubicación (como el libro B), y luego B puede contener un índice con todas las palabras, ubicaciones y número de ocurrencias en cada parte.

El índice invertido, que puede mostrar el índice1 en el circuito anterior, se verá como esto: cada palabra o conjunto de palabras sirven como un índice para aquellos libros que los contienen.

El índice intermedio se verá, pero solo contendrá palabras, ubicación e información para el libro B. Esto que contenga varios niveles de arquitectura permite que cada uno de los índices ocupe menos espacio que si toda esta información se almacenó en un gran índice invertido.

Y este es el punto clave en sistemas a gran escala, ya que incluso se comprimen, estos índices pueden ser bastante grandes y costosos para el almacenamiento. Supongamos que tenemos muchos libros de todo el mundo en este sistema, 100,000,000 (véase grabar un blog "dentro de Google Books"), y que cada libro consiste solo en 10 páginas (para simplificar los cálculos) con 250 palabras en una página : Este total nos da 250 mil millones de palabras. Si aceptamos el número promedio de caracteres en la palabra para 5, y cada símbolo está codificando 8 bits (o 1 byte, aunque algunos caracteres realmente ocupan 2 bytes), mientras gastan 5 bytes a la palabra, luego el índice que contiene cada palabra. Solo una vez requerirá una capacidad de almacenamiento de más de 1 terabyte. Por lo tanto, ves que los índices en los que otra información, como los conjuntos de palabras, la ubicación de los datos y la cantidad de uso, puede crecer en volúmenes muy rápidamente.

La creación de tales índices intermedios y la presentación de datos por porciones más pequeñas dificulta el problema de "datos grandes" más fácilmente en solución. Los datos se pueden distribuir en varios servidores y al mismo tiempo ser accesible rápido. Los índices son la piedra angular de la búsqueda de información y la base para los motores de búsqueda modernos de hoy. Por supuesto, esta sección solo se relaciona con el tema de la indexación, y se han realizado muchos estudios sobre cómo hacer que los índices sean menos, más rápido que contengan más información (por ejemplo, relevancia) y actualizado sin obstáculos. (Hay algunos problemas con la capacidad de manejabilidad de las condiciones de la competencia, así como con la cantidad de actualizaciones necesarias para agregar nuevos datos o cambios a los datos existentes, especialmente cuando están involucradas la relevancia o la evaluación).

Es muy importante encontrar sus datos rápida y fácilmente fácilmente, y los índices son la herramienta más fácil y efectiva para lograr este objetivo.

Cargar equilibradores

Finalmente, otra parte crítica de cualquier sistema distribuido es un equilibrio de carga. El equilibrio de carga es la parte principal de cualquier arquitectura, ya que su función es distribuir la carga entre los nodos responsables de los solicitudes de servicio. Esto permite que varios nodos sirvan de forma transparente la misma función en el sistema. (Consulte.) Su objetivo principal es manejar muchas conexiones simultáneas y dirigir estas conexiones a uno de los nodos solicitados, lo que permite que el sistema se escale, simplemente agregando nodos para servir más consultas.


Figura 1.18: Cargar Balanger

Hay muchos algoritmos diferentes para solicitudes de servicio, incluida la selección de un nodo aleatorio, un algoritmo cíclico, o incluso la selección de un nodo basado en ciertos criterios, como el uso de un procesador central o RAM. El equilibrio de carga se puede implementar como hardware o software. Entre el equilibrio de carga en el software de código abierto, Haproxy recibió la más extendida.

En el sistema distribuido, los equilibradores de carga a menudo se encuentran en el "borde frontal" del sistema, de modo que todas las solicitudes entrantes pasan directamente a través de ellas. Es muy probable que en un sistema distribuido complejo, la solicitud tendrá que pasar a través de varios equilibradores, como se muestra en
.


Figura 1.19: Equilibrio de carga múltiple

Al igual que un proxy, algún equilibrio de carga también puede enviar solicitudes de diferentes maneras, dependiendo del tipo de solicitud. También se conocen como proxies reversibles (inversos).

La gestión de datos específica para una sesión de usuario específica es uno de los problemas al usar los equilibradores de carga. En el sitio web de E-Commerce, cuando solo tiene un cliente, es muy fácil permitir que los usuarios pongan cosas en su canasta y mantengan sus contenidos entre las visitas (esto es importante, ya que la probabilidad de vender bienes aumenta significativamente en el usuario. Vuelva al sitio, el producto todavía se encuentra en su cesta). Sin embargo, si el usuario se dirige a un nodo para la primera sesión, y luego a otro nodo durante su próxima visita, puede haber inconsistencias, ya que es posible que el nuevo nodo no tenga datos sobre los contenidos de la canasta de este usuario. (¿No te enojas si coloca el paquete de bebidas de rocío de montaña en su carrito, y cuando lo devuelve, no estará allí?) Una de las soluciones puede ser hacer que las sesiones "pegajosas" para que el usuario siempre esté dirigido a mismo nodo. Sin embargo, el uso de ciertas funciones de confiabilidad, como la conmutación por error automática, será significativamente difícil. En este caso, la canasta del usuario siempre tendrá contenido, pero si su nodo pegajoso se vuelve inaccesible, será necesario ser un enfoque especial, y el supuesto sobre el contenido de la canasta no será más correcto (sin embargo, vale la pena con la esperanza de que este supuesto no se construirá en el anexo). Por supuesto, este problema se puede resolver utilizando otras estrategias y herramientas como se describe en este capítulo, como los servicios y muchos otros (como cachés de navegador, cookies y reescribir las URL).

Si el sistema tiene solo unos pocos nodos, tales técnicas como DNS-Carrusel son más prácticas que el equilibrio de carga que puede ser costoso y aumentar la complejidad del sistema agregando un nivel innecesario. Por supuesto, en sistemas grandes, hay todos los tipos de varios algoritmos para planificar y nivelar la carga, incluidos los dos simples, como una opción aleatoria o un algoritmo de carrusel, y mecanismos más complejos que tienen en cuenta el desempeño del modelo de uso del sistema. Todos estos algoritmos permiten la distribución de tráfico y solicitudes, y pueden proporcionar herramientas de confiabilidad útiles, como la conmutación por error automática o la eliminación automática de un nodo dañado (por ejemplo, cuando deja de responder a las solicitudes). Sin embargo, estas funciones extendidas pueden hacer un diagnóstico de problemas con voluminosos. Por ejemplo, en situaciones de alta carga, el equilibrio de carga eliminará los nodos que pueden funcionar lentamente o exceder el tiempo de espera (debido a las consultas de Crackle), lo que solo agravará la situación para otros nodos. En estos casos, el control extenso es importante porque incluso si parece que se reduce el tráfico y la carga del sistema completo (ya que los nodos sirven menos consultas): los nodos individuales se pueden cargar en el límite.

El equilibrio de carga es una forma fácil de aumentar la potencia del sistema. Al igual que los otros métodos descritos en este artículo, desempeña un papel importante en la arquitectura del sistema distribuido. El equilibrio de carga también garantiza la función crítica de verificar el rendimiento de los nodos. Si, de acuerdo con los resultados de esta prueba, el nodo no está respondiendo o sobrecargado, se puede eliminar del grupo de procesamiento de solicitud y, debido a la redundancia de su sistema, la carga se redistribuirá entre los nodos de trabajo restantes.

Colas

Hasta ahora, hemos considerado muchas formas de leer rápidamente los datos. Al mismo tiempo, otra parte importante de la escala de nivel de datos es administrar de manera eficiente los registros. Cuando los sistemas son simples y se caracterizan por cargas de procesamiento mínimas y pequeñas bases de datos, la grabación se puede predecir rápidamente. Sin embargo, en sistemas más complejos, este proceso puede ocupar indefinidamente durante mucho tiempo. Entonces, por ejemplo, los datos pueden deberse a registrarse en varios lugares en varios servidores o índices, o el sistema simplemente puede estar bajo carga alta. En los casos en que la grabación o incluso cualquier tarea ocupe mucho tiempo, lo que logre la productividad y la disponibilidad requiere incrustar asíncronismo en el sistema. Una forma común de hacer esto es organizar la cola de consulta.


Figura 1.20: Solicitud síncrona

Imagine un sistema en el que cada cliente solicite una tarea de servicio remoto. Cada uno de estos clientes envía su solicitud al servidor que realiza tareas lo más rápido posible y devuelve sus resultados a los clientes relevantes. En pequeños sistemas, donde un servidor (o servicio lógico) puede servir a los clientes entrantes tan rápido a medida que llegan, tales situaciones deberían funcionar normalmente. Sin embargo, cuando el servidor recibe más solicitudes de las que puede procesar, entonces cada cliente se ve obligado a esperar la finalización del procesamiento de las solicitudes de otros clientes antes de que se genere la respuesta a su propia solicitud. Este es un ejemplo de una solicitud síncrona que se muestra en.

Este tipo de comportamiento síncrono puede empeorar significativamente la capacidad del cliente; De hecho, de pie, el cliente se ve obligado a esperar hasta que reciba una respuesta a la solicitud. Agregar servidores adicionales para hacer frente a la carga del sistema, de hecho, no resuelve el problema; Incluso con una nivelación de carga efectiva, es extremadamente difícil garantizar una distribución uniforme y de carga justa necesaria para maximizar la productividad del cliente. Además, si el servidor para procesar esta solicitud no está disponible (o ha fallado), entonces el cliente conectado también dejará de funcionar. Una solución efectiva para este problema requiere abstracción entre la solicitud del cliente y el trabajo real realizado para su servicio.


Figura 1.21: Uso de colas para administrar las solicitudes

Colas de entrada. El mecanismo de operación de la cola es muy simple: la tarea viene, está en la cola, y luego los "trabajadores" toman la siguiente tarea tan pronto como parecen procesarlo. (Ver.) Estas tareas pueden ser entradas simples a la base de datos o algo tan complejo como la generación de imágenes de vista previa para el documento. Cuando el cliente envía solicitudes de objetivos en una cola, ya no es necesario esperar los resultados de la ejecución; En su lugar, las solicitudes solo necesitan en confirmar el hecho de su recibo correctamente. Esta confirmación puede servir más adelante como referencia a los resultados cuando el cliente los reclama.

Las colas permiten a los clientes trabajar así asíncrono, proporcionando la abstracción estratégica de un cliente y una respuesta a ella. Por otro lado, en el sistema síncrono, no hay diferenciación entre la consulta y la respuesta, y, por lo tanto, no se puede administrar por separado. En el sistema asíncrono, el cliente establece la tarea, el servicio corresponde al mensaje, confirmando que se obtuvo la tarea, y luego el cliente puede verificar periódicamente el estado de la tarea, solo haciendo el resultado tan pronto como termine. Si bien el cliente realiza una solicitud asíncrona, es libre de participar en otro trabajo e incluso realizar solicitudes asíncronas para otros servicios. Este último es un ejemplo de cómo las colas y los mensajes trabajan en sistemas distribuidos.

Las colas también proporcionan cierta protección contra las suspensiones de servicio y las fallas. Por ejemplo, es bastante simple crear una cola muy estable que pueda repetir las solicitudes de servicio que han dejado de trabajar debido a fallas de servidor a corto plazo. Es más preferible utilizar la cola para implementar las garantías de garantía de calidad que mostrar a los clientes, interrupciones temporales en el servicio, que requieren un manejo complejo y con frecuencia contradictorio de errores en el lado del cliente.

1.4. Conclusión

El desarrollo de sistemas efectivos con acceso rápido a una gran cantidad de datos es un tema muy interesante, y todavía hay un número significativo de buenas herramientas que le permiten adaptar todo tipo de nuevas aplicaciones. Este capítulo tocó solo algunos ejemplos, pero en realidad hay mucho más de ellos, y la creación de nuevas innovaciones en esta área solo continuará.

Este trabajo se extiende bajo la licencia de Attribution 3.0 sin cambios Creative Commons. Ver detalles en

  • Transferir

Medición del ancho de banda de cuellos de botella para el paquete de tiempo de doble paso

En todos los parámetros, Internet de hoy no puede mover los datos tan rápido como debería. La mayoría de los usuarios de comunicación celular en el mundo tienen retrasos desde unos segundos a unos pocos minutos: los puntos de WiFi públicos en los aeropuertos y las conferencias son aún peores. Los físicos y los climatólogos deben ser intercambiados por petabytes de datos con colegas de todo el mundo, pero enfrentan que su infraestructura multiligente cuidadosamente pensada a menudo emite solo unos pocos megabits por segundo en líneas transcontinentales.

Estos problemas surgieron debido a la elección de la arquitectura, que se realizó al crear un sistema de control de congestión TCP en los años 80, entonces la pérdida de los paquetes decidió interpretar como un "atasco". La equivalencia de estos conceptos fue justa para ese tiempo, pero solo por las restricciones de la tecnología, y no por definición. Cuando NIC (controladores de la interfaz de red) se actualizó desde megabitados a velocidades gigabit, y las fichas de memoria, con kilobytes a un gigabyte, a la relación entre la pérdida de paquetes y los accidentes cerebrovasculares se volvieron menos obvios.

En el TCP moderno, la regulación de la congestión para la pérdida de paquetes, incluso en la tecnología más avanzada de este cúbico, la razón principal de estos problemas. Si los buffers de cuellos de botella son demasiado grandes, el sistema de control para la pérdida de los paquetes los mantiene completos, lo que provoca un exceso de tamponería de red. Si los buffers son demasiado pequeños, entonces el sistema de control para la pérdida de paquetes interpretará incorrectamente la pérdida del paquete como una señal de la congestión, que conduce a una reducción en el ancho de banda. La solución a estos problemas requiere una alternativa a la regulación de la congestión para los paquetes. Para encontrar esta alternativa, debe resolverse dónde y cómo se produce la congestión.

Toque y lugar estrecho

En cualquier momento en (Full-Duplex) Conexión TCP, solo hay una o embotellamiento En cada dirección. Un cuello de botella es importante por las siguientes razones:
  • Define la tasa de transferencia de datos máxima por conexión. Esta es la propiedad principal de un flujo de datos sin comprimir (por ejemplo, imaginar una autopista de seis bandas por hora de pico, si, debido a un accidente, una pequeña parte de la carretera se limita a una sola tira. El tráfico antes del tráfico El accidente no se moverá más rápido que el tráfico a través de esta tira.
  • Este es el lugar donde se forman constantemente las colas. Solo disminuyen si la intensidad del flujo saliente desde el "cuello de la botella" excederá la intensidad de la corriente entrante. Para los compuestos que operan a la velocidad máxima de transmisión, todas las corrientes salientes a un lugar estrecho siempre tienen una mayor intensidad de la corriente saliente, de modo que las colas se muevan al "cuello de la botella".
No importa cuántos enlaces en la conexión y qué velocidades estén por separado, desde el punto de vista TCP, hay una ruta compleja en términos de TCP como una sola conexión con la misma RTT (tiempo de doble paso del paquete, es decir, el Tiempo de paso en ambos extremos) y el ancho de banda del cuello de botella. Dos limitaciones físicas Rtprop (Tiempo de propagación de ida y vuelta, tiempo de doble paso) y Btlbw. (Ancho de banda de cuello de botella, capacidad de cuello de botella) afecta el rendimiento de la transferencia. (Si la ruta de red era una tubería de material, RTPROP sería un tubo largo, y BTLBW es su diámetro).

En la ilustración 1 muestra una variedad de combinaciones de RTT y tasas de transmisión con volumen de datos. en vuelo, Es decir, en vuelo (datos enviados, pero sin confirmación de la entrega). Las líneas azules muestran el límite de RTPROP, las líneas verdes: límite BTLBW y las líneas rojas: un búfer de botellas. Las operaciones en áreas grises son imposibles porque contradicen al menos una limitación. Las transiciones entre las restricciones condujeron a la formación de tres áreas (aplicación-limitada, limitada de ancho de banda y tampón-limitada) con un comportamiento de alta calidad.

Foto 1

Cuando en vuelo no es suficiente datos para llenar la tubería, RTPROP determina el comportamiento; De lo contrario, BTLBW domina. Límites Las líneas se intersecan en el punto, es un tubo BDP (producto de retardo de ancho de banda, ancho de banda derivado y demora). Dado que la tubería se completa después de este punto, entonces el superávit crea una cola a un lugar estrecho, lo que conduce a la dependencia lineal de la RTT de los datos en vuelo que se muestra en la tabla superior. Los paquetes se descartan cuando el superávit supera la capacidad del búfer. Congestión - Es simplemente un hallazgo continuo a la derecha de la línea BDP, y regulación de la congestión. - Un cierto esquema para establecer un límite hasta qué punto a la derecha de la línea BDP, en promedio, se transmiten datos.

La regulación de la congestión por pérdida funciona en el borde derecho del área limitada por el ancho de banda del canal (ancho de banda-limitado), que proporciona el ancho de banda completo de un cuello de botella debido a grandes retrasos y la pérdida frecuente de paquetes. En aquellos días, cuando la memoria fue la carretera, el tamaño del búfer solo se excedió ligeramente BDP, lo que minimizó el retraso redundante en la regulación de las regulaciones por pérdidas. La reducción posterior en los precios de la memoria llevó a un aumento en el búfer de red excesivo y el crecimiento de RTT hasta segundos en lugar de milisegundos.

En el borde izquierdo del área delimitada por el ancho de banda del canal, hay un punto de trabajo con las mejores condiciones que la derecha. En 1979, Leonard Kleinock mostró que este punto de operación es óptimo, maximiza el ancho de banda real con minimizar los retrasos y las pérdidas, tanto para compuestos individuales como para la red en su conjunto. Desafortunadamente, aproximadamente al mismo tiempo, Jeffrey Jaffa demostró que es imposible crear un algoritmo distribuido que converge en este punto de operación. Esta conclusión ha cambiado la dirección de la investigación. En lugar de buscar un algoritmo distribuido, que busca al punto de trabajo óptimo de la chica y los investigadores comenzaron a estudiar enfoques alternativos para regular la congestión.

Nuestro grupo en Google está pasando horas en los registros de aprendizaje con interceptación de los encabezados de paquetes TCP de todo el mundo, comprendiendo las anomalías y la patología del comportamiento. Por lo general, primero encontramos las características clave de la ruta, RTPROP y BTLBW. Lo que se puede derivar de las bandejas de red sugiere que la conclusión de Jaffe no podría ser tan inequívoca como parecía. Su conclusión se basa en la incertidumbre de medición fundamental (por ejemplo, si un aumento medido en RTT se debe a un cambio en la longitud de la ruta, una reducción en el ancho de banda de un cuello de botella o un aumento en el retraso en la cola debido al tráfico de otra conexión). Aunque es imposible eliminar la incertidumbre de cada medición específica, pero el comportamiento de la conexión en el tiempo le da una imagen más clara, lo que sugiere la posibilidad de aplicar estrategias de medición creadas para eliminar la incertidumbre.

Al combinar estas mediciones con un contorno de seguimiento confiable aplicando los últimos logros en los sistemas de administración, puede esperar el desarrollo de un protocolo distribuido para regular la congestión, que responde a una parcela válida, y no para perder paquetes o retraso a corto plazo en la cola. Y será muy probable que convergue en el punto de trabajo óptimo de la chica. Por lo tanto, nuestro proyecto de tres años en el desarrollo del sistema de control se basará en la medición de dos parámetros, que caracterizan la ruta: el ancho de banda del cuello de botella y el tiempo del doble paso del paquete, o BBR.

Característica de un lugar estrecho.

La conexión funciona con el ancho de banda máximo y el retardo mínimo cuando (saldo de velocidad) La velocidad de llegada de los paquetes a un lugar estrecho es BTLBW y (canal completo) La cantidad total de datos en el vuelo es BDP ().

La primera condición garantiza que se use un lugar estrecho al 100%. La segunda garantía de que tenemos datos suficientes para evitar un simple cuello de botella, pero no desbordamos el canal. Condición del balance de velocidad en sí mismo no Garantiza la falta de cola, solo su tamaño constante (por ejemplo, si la conexión comienza con enviar una ventana inicial de 10 lotes a un BDP de cinco parques, luego funciona exactamente a la misma velocidad de un cuello de botella, luego cinco de cada diez paquetes iniciales Llenará el canal, y el exceso formará una cola de pie en un lugar estrecho que no podrá rápidamente). De la misma manera, la condición de canal completo no garantiza la falta de una cola (por ejemplo, la conexión envía ráfagas BDP a BDP / 2 y utiliza completamente un lugar estrecho, pero pero la cola promedio es BDP / 4). La única forma de minimizar la cola en un cuello de botella y en todo el canal es cumplir ambas condiciones al mismo tiempo.

Los valores BTLBW y RTPROP se cambian a lo largo de la vida útil de la conexión, por lo que deben evaluarse constantemente. Actualmente, TCP rastrea la RTT (intervalo de tiempo entre el envío de un paquete de datos a un mensaje sobre su entrega), ya que se requiere para determinar la pérdida. En cualquier momento


Donde representa el "ruido" de las colas a lo largo de la ruta, la estrategia del destinatario con el retraso en la confirmación, la acumulación de confirmaciones, etc. RTPROP son las características físicas de la conexión, y cambia solo cuando cambia el propio canal. Porque los cambios de canal ocurren durante una escala de tiempo. RtpropEntonces, una estimación de tiempo imparcial y efectiva será
Es decir, el lanzamiento en la ventana de tiempo (que suele ser de decenas de segundos a minutos).

A diferencia de RTT, nada en las especificaciones de TCP no requiere implementación para rastrear el ancho de banda de un cuello de botella, sino que se puede obtener una buena evaluación de esto que se puede obtener al rastrear la velocidad de entrega. Cuando la confirmación del servicio de un paquete se devuelve al remitente, muestra el paquete RTT y anuncia la entrega de datos en el vuelo cuando se apaga el paquete. La tasa de envío promedio entre el envío de un paquete y la confirmación de recepción es la actitud de los datos entregados por el tiempo pasado :. Esta velocidad debe ser menor o igual al ancho de banda de un lugar estrecho (la cantidad a su llegada se conoce exactamente, de modo que toda la incertidumbre reside en, que debe ser mayor o igual que el intervalo de llegada actual; por lo tanto, la actitud debe ser Menos de o igual a la tasa de suministro actual, que en su propia cola está limitada en la parte superior de una capacidad de cuello de botella). En consecuencia, la ventana de velocidad máxima de entrega es una estimación efectiva de BTLBW sin prensa:


Donde la ventana de tiempo suele ser de seis a diez RTT.

TCP debe registrar el tiempo de envío para cada paquete para calcular RTT. BBR complementa estos registros con un total de datos entregados, por lo que la llegada de cada confirmación informa simultáneamente y la RTT, y el resultado de medir la velocidad de entrega, que los filtros se transforman en estimaciones de RTPROP y BTLBW.

Tenga en cuenta que estos valores son totalmente independientes: RTPROP puede cambiar (por ejemplo, al cambiar la ruta), pero tiene el mismo cuello de botella, o BTLBW puede variar (por ejemplo, cuando cambia el ancho de banda del canal inalámbrico) sin cambiar la ruta. (La independencia de ambos factores de restricción es la razón por la que deben conocerse para asociar el comportamiento cuando se envía con la ruta de entrega). Dado que RTPROP es visible solo en el lado izquierdo del BDP, y BTLBW solo está en el lado derecho en la Figura 1, entonces obedecen el principio de incertidumbre: siempre que uno de los dos se pueda medir, es imposible de segundo. Es intuitivo que esto pueda entenderse de la siguiente manera: para determinar la capacitancia del canal, debe ser abrumado, lo que crea una cola que no permite la longitud del canal. Por ejemplo, una aplicación con protocolo de consulta / respuesta nunca puede enviar suficientes datos para llenar el canal y la observación de BTLBW. Una gran transmisión de datos de una gran variedad de datos puede gastar todo su tiempo en un área con un ancho de banda limitado y obtener solo la única muestra de RTPROP de la RTT en el primer paquete. El principio inherente de la incertidumbre significa que, además de las estimaciones para la restauración de los dos parámetros de la ruta, debe haber tales estados que se monitorean al mismo tiempo y lo que se puede encontrar en el punto de operación actual y, como la información. pierde la frescura, cómo ir al punto de operación donde puede obtener datos más recientes.

Mapeo de flujo de paquetes con entrega

El algoritmo principal de BBR consiste en dos partes:

Cuando recibimos confirmación (ACK)

Cada confirmación proporciona una nueva RTT y midiendo la velocidad de entrega promedio, que actualiza las calificaciones RTPROP y BTLBW:

Función ONACK (PAQUETE) RTT \u003d AHORA - PAQUETT.SENDTE update_min_filter (RTPROPFILTER, RTT) Entregado + \u003d Packet.Size entregmed_time \u003d Now EntregaRate \u003d (Entregado - Paquete.Delivered) / (Entregado_Tiempo - Packet.Delivered_time) IF (Rate\u003e BTLBWFILTER. Currentmax ||! Packet.app_limited) update_max_filter (btlbwfilter, entrega de la entrega) if (app_limited_until\u003e 0) app_limited_until \u003d app_limited_until - Packet.Size
Si se necesita si se necesita debido al problema de la incertidumbre, que se indicó en el último párrafo: los remitentes pueden limitarse a la aplicación, es decir, las aplicaciones pueden finalizar los datos para llenar la red. Esta es una situación bastante típica debido a la solicitud / respuesta del tráfico. Cuando es posible enviar, pero no se envían datos, BBR marca las muestras apropiadas de ancho de banda como "limitadas por la aplicación", es decir, app_limited (consulte el archivo pseudo-código ()). Este código determina qué muestras incluyen en el modelo de ancho de banda, de modo que lo refleje es las restricciones de la red y no los límites de la aplicación. BTLBW es un límite de velocidad de suministro superior sólido, por lo que la velocidad de administración obtenida por los resultados de la medición es grande que la estimación actual de BTLBW, debe significar una calificación BTLBW afectada, independientemente de si la muestra se limitó a la aplicación o no. De lo contrario, las muestras con la limitación de la aplicación se descartan. (La Figura 1 muestra que en la región con la restricción de la aplicación de reparto, se subestima el parámetro BTLBW). Dichos controles previenen el filtro BTLBW que llena los valores debido a qué envío de datos pueden disminuir la velocidad.

Cuando se envían los datos

Para relacionar la velocidad de llegada de los paquetes con una velocidad de salida desde un cuello de botella de BBR, rastrea cada paquete de datos. (BBR debe coincidir calificar. cuello de botella: significa que el seguimiento es una parte integral de la arquitectura y la parte fundamental del trabajo, por lo tanto pacing_Rate. Es el parámetro principal de control. Parámetro auxiliar cwnd_gain. Corbatas enérgico Con una pequeña multitud de PCD para procesar patologías de red típicas y el destinatario (consulte debajo del capítulo sobre detenidos y la confirmación estirada). Conceptualmente, el procedimiento de envío en TCP parece el siguiente código. (En Linux, el envío de datos utiliza un procedimiento de mantenimiento masivo eficaz FQ / PITE, que proporciona un rendimiento lineal BBR de una sola conexión en los canales múltiples higiénicos y procesa miles de conexiones a una velocidad más baja con una leve CPU sanguinolosa).

Función Enviar (Paquete) bdp \u003d btlbwfilter.currentmax × rtpropfilter.currentmin if (hubobre\u003e \u003d cwnd_gain × bdp) // Espere a la devolución de tiempo de espera de ACK o retransmisión si (ahora\u003e \u003d NextSendTime) Packet \u003d NETETPACKETOSEND () IFEM_LIMITED_UNTIL \u003d Paquete de retorno en vuelo.app_App_limited \u003d (app_limited_until\u003e 0) paquet.sendtime \u003d ahora packet.delivered \u003d entregado packet.delivered_time \u003d entregado_time la nave (paquete) nextsendtime \u003d ahora + packet.size / (pacing_gain × btlbwfilter.currentmax) Timercallbackat (Enviar, NextSend Time)
Comportamiento sostenible

La velocidad y la cantidad de datos enviados por BBR depende solo de BTLBW y RTPROP, de modo que los filtros controlen no solo las estimaciones de las limitaciones de un lugar estrecho, sino también su uso. Esto crea un bucle de control no estándar que se muestra en la Figura 2, que muestra RTT (azul), en vuelo (verde) y velocidad de entrega (rojo) para 700 milisegundos para un flujo de 40 milisegundos de 10 megabits. La línea gris gris sobre la velocidad de entrega es el estado del filtro MAX BTLBW. Las formas triangulares se obtienen del uso cíclico del coeficiente de PACING_GAIN en BBR para determinar el aumento de BTLBW. El coeficiente de transmisión en cada parte del ciclo se muestra alineado con los datos a los que afectó. Este coeficiente trabajó en el RTT antes cuando se enviaron los datos. Esto se muestra con irregularidades horizontales en la descripción de la secuencia de eventos en el lado izquierdo.


Figura 2.

BBR minimiza el retraso, porque la mayor parte del tiempo pasa con el mismo BDP en acción. Debido a esto, un cuello de botella se mueve al remitente, de modo que un aumento en BTLBW se vuelva invisible. En consecuencia, BBR pasa periódicamente el intervalo de RTPROP en el valor de PACING_GAIN\u003e 1, lo que aumenta la velocidad de envío y el volumen de los datos enviados sin confirmar la entrega (en vuelo). Si BTLBW no cambia, entonces la cola se crea antes de un lugar estrecho, aumentando la RTT, lo que guarda la reparto constante. (La cola se puede eliminar enviando datos con un valor compensatorio de PACING_GAIN< 1 для следующего RTprop). Если BtlBw увеличивается, то скорость deliveryRate тоже увеличивается, а новое максимальное значение фильтра немедленно увеличивает базовую скорость отслеживания (pacing_Rate.). Por esta razón, el BRR se adapta al nuevo tamaño de un lugar estrecho exponencialmente rápidamente. La Figura 3 muestra este efecto en una corriente de 10 megabit-40-milisegundos, que BTLBW aumenta de repente a 20 Mbps después de 20 segundos de operación estable (en el lado izquierdo del gráfico), luego se equivoca hasta 10 Mbps después de otros 20 segundos de Operación constante a 20 Mbit / s (parte derecha del gráfico).


Figura 3.

(En esencia, BBR es un ejemplo simple del sistema de control MAX-PLUS, un nuevo enfoque para controlar los sistemas basados \u200b\u200ben álgebra máxima estándar. Este enfoque le permite adaptar la velocidad [controlada por el coeficiente de transmisión max] Independientemente del crecimiento de la cola [controlada por el coeficiente de transmisión promedio.]. En aplicado a nuestra tarea, se reduce a un bucle de control simple e incondicional, donde la adaptación a los cambios en las restricciones físicas se lleva a cabo automáticamente cambiando los filtros que expresan estas limitaciones. El sistema tradicional requeriría la creación de una pluralidad de circuitos de control combinados en una máquina finita compleja para lograr tal resultado).

Comportamiento al iniciar una sola corriente BBR

Implementaciones modernas manejan eventos como inicio (inicio), cierre (apagado) y compensación de pérdidas (recuperación de pérdidas) utilizando algoritmos que responden a "eventos" con un gran número de líneas de código. El BBR utiliza el código anterior (en el capítulo anterior "Mapeo de un flujo de paquetes con la entrega"), para todo. El procesamiento de eventos se produce por el paso a través de la secuencia "Estados". Los "Estados" están definidos por una tabla con uno o más valores fijos de los coeficientes y criterios de salida. El tiempo principal se gasta en el estado de ProBebBW, que se describe en el Capítulo "Comportamiento en un estado estable". El estado de inicio y drenaje se utiliza cuando se inicia la conexión (Figura 4). Para procesar una conexión donde los aumentos de ancho de banda por 12 pedidos, en el estado de inicio de inicio se implementa mediante el algoritmo de búsqueda binario para BTLBW, donde el coeficiente de transmisión se usa para un aumento de dos veces en la velocidad de transferencia cuando aumenta la velocidad de entrega. Así es como se determina BTLBW en la RTT, pero al mismo tiempo crea una cola excesiva antes. Tan pronto como el inicio encuentra un BTLBW, el sistema BBR cambia al estado de drenaje que utiliza los coeficientes de inicio inversa para deshacerse de una cola excesiva, y luego al estado de la sonda tan pronto como se baja el vuelo en la línea BDP.


Figura 4.

La figura 4 muestra el primer segundo de la corriente de 40 milisegundos de 10 megabits de BBR. En la tabla superior, la hora y la secuencia de eventos se posponen, así como el progreso del remitente (verde) y el destinatario (azul): el volumen de datos transmitidos y recibidos. La línea roja muestra los indicadores del remitente utilizando la tecnología cúbica en las mismas condiciones. Las líneas verticales grises significan momentos de transición entre los estados BBR. En la tabla inferior, cambie la hora del doble paso de los paquetes (RTT) de ambas conexiones. Tenga en cuenta que la escala de tiempo para este horario coincide con el tiempo de confirmación de llegada (ACK). Por lo tanto, puede parecer que los gráficos parecen ser desplazados a tiempo, pero de hecho, los eventos en la parte inferior corresponden a los momentos en que el sistema BBR aprende sobre estos eventos y reacciona.

La tabla inferior en la Figura 4 compara BBR y CUBIC. Primero, su comportamiento es casi el mismo, pero BBR se vacía completamente la cola formada cuando se inicia la conexión, y el cúbico no puede hacer esto. Ella no tiene un modelo de ruta que informaría cuántos datos enviados son excesivos. Por lo tanto, el cúbico está reduciendo de manera agresiva la transmisión de datos sin confirmación de la entrega, pero este crecimiento continúa hasta que el búfer de botella no se sobresalga y no comienza a caer paquetes, o antes de alcanzar el límite en el destinatario a los datos enviados sin confirmación (ventana de recepción de TCP ).

La Figura 5 muestra el comportamiento de RTT en los primeros ocho segundos de la conexión representada en la Figura anterior 4. La tecnología cúbica (RED) llena todo el búfer asequible, luego girando entre el 70% y el 100% de relleno cada pocos segundos. Después de comenzar la conexión BBR, funciona casi sin crear una cola.


Figura 5.

Comportamiento cuando se encuentran varias transmisiones BBR en un lugar estrecho

La Figura 6 muestra cómo el ancho de banda de varias corrientes BBR converge en una sección honesta del canal con un cuello de botella por 100 megabit / 10 milisegundos. Mirando las estructuras triangulares: el estado de los compuestos de ProberTT en la que la auto-sincronización acelera la convergencia final.


Figura 6.

Cambiar la ganancia de la probeta (Figura 2) Estimula mayores flujos para renunciar a la tira a corrientes más pequeñas, como resultado de lo cual cada flujo entiende su estado honesto. Esto sucede bastante rápido (varios ciclos de sonbatas), aunque la injusticia se puede mantener si los flujos que llegaban tarde para el inicio de los flujos, revalorizar el RTPROP debido al hecho de que los flujos comenzaban anteriormente (temporalmente) creaban una cola.

Para averiguar el RTPROP real, el hilo se mueve a la izquierda de la línea BDP utilizando el estado de ProberTT: si la calificación RTPROP no se actualiza (es decir, al medir el RTT más pequeño) durante muchos segundos, el BBR ingresa al estado ProberTT, reduciendo la cantidad de los datos enviados (en vuelo) a cuatro paquetes al menos para una doble pase, y luego regresan al estado anterior. Cuando las corrientes grandes se incluyen en el estado de Probertt, muchos paquetes están cubiertos de la cola, por lo que inmediatamente varios hilos ven el nuevo valor de RTPROP (nuevo RTT mínimo). Gracias a esto, sus estimaciones de RTPROP se restablecen al mismo tiempo, de modo que todos juntos ingresan al estado ProberTT, y la cola disminuye aún más, lo que resulta aún más, lo que resulta en aún más flujos, consulte el nuevo valor de RTPROP, etc. Dicha coordinación distribuida es un factor clave al mismo tiempo para la distribución honesta de la franja y la estabilidad.

BBR Sincroniza los flujos alrededor del evento deseado, que es una línea vacía en un lugar estrecho. En contraste con dicho enfoque, la regulación de los pases para la pérdida de paquetes sincroniza las corrientes de eventos no deseados, como el crecimiento periódico de la cola y el desbordamiento de tampón, lo que aumenta el retraso y la pérdida de paquetes.

Experiencia de implementación B4 WAN en Google

La red B4 en Google es una red de alta velocidad WAN (red de área amplia), construida en conmutadores baratos ordinarios. Las pérdidas en estos interruptores con pequeños buffers se producen principalmente debido a la afluencia accidental de pequeñas salpicaduras de tráfico. En 2015, Google comenzó a traducir el tráfico de trabajo con cúbico en BBR. No se registraron problemas ni regresiones, y desde 2016, todo el tráfico B4 TCP utiliza BBR. La Figura 7 ilustra una razón en la que se realizó: el ancho de banda BBR es constante 2-25 veces más alto que el de cúbico. Hemos visto aún más mejora, pero encontramos que el 75% de las conexiones BBR se limita al tampón de recepción de TCP en el núcleo, que los empleados del departamento de operación de la red se instalan deliberadamente a un valor bajo (8 MB) para no dar cúbico a archivos Una red de exceso de tráfico sin confirmar la entrega (si se divide de 8 MB por 200 ms de RTT InterContinental, resulta de 335 Mbps con un máximo). El aumento manual en el búfer de recepción en una ruta de EE. UU., Europa incrementó instantáneamente la tasa de transferencia de datos de BBR a 2 Gbps, mientras que el cúbico permaneció 15 Mbps, este es un aumento relativo de 133 veces en el ancho de banda se prevé a Matis con colegas en el trabajo científico de 1997 .


Figura 7.

La Figura 7 muestra la mejora relativa en el BBR en comparación con el cúbico; En la inserción: funciones de distribución integradas (funciones de distribución acumuladas, CDF) para ancho de banda. Las mediciones se realizan utilizando el servicio de detección activa, que abre las conexiones constantes BBR y CUBICA a los centros de datos remotos, luego transmite 8 MB cada minuto. Las sondas exploran muchas rutas B4 entre América del Norte, Europa y Asia.

La gran mejora es una consecuencia directa del hecho de que BBR no Utiliza la pérdida de paquetes como un indicador de bloque. Para lograr un ancho de banda completo, se necesitan métodos existentes para regular la pérdida de paquetes de los paquetes de que el nivel de pérdida sea menor que el cuadrado de inversión BDP (por ejemplo, menos de una pérdida de 30 millones de paquetes para componer 10 GB / s y 100 ms). La Figura 8 compara el ancho de banda útil medido en varios niveles de pérdida de paquetes. En el algoritmo cúbico, la tolerancia a la pérdida de paquetes es la propiedad estructural del algoritmo, y en BBR es un parámetro de configuración. A medida que el nivel de pérdida de BBR se está acercando a la ganancia de ganancia máxima, la probabilidad de medir la velocidad de administración de la BTLBW real, cae bruscamente, lo que conduce a la subestimación del filtro máximo.


Figura 8.

La FIGURA 8 compara el ancho de banda útil BBR y el cúbico en una corriente de 60 segundos en un compuesto de 100 Mbps y 100 mb con pérdidas aleatorias de 0,001% a 50%. El ancho de banda cúbico disminuye 10 veces con pérdidas de 0.1% y se detiene completamente en más del 1%. El ancho de banda máximo es la proporción de la pérdida de paquete Minus Paquete (). BBR se mantiene en este nivel a un nivel de pérdida del 5% y cerca de él hasta un 15%.

Experiencia de implementación del borde de YouTube

BBR está sin luz en los servidores de videos de YouTube y Google.com. Google realiza un pequeño experimento, en el que el pequeño porcentaje de usuarios se transfiere accidentalmente a BBR o CUBIC. La reproducción de video BRB muestra una mejora significativa en todas las estimaciones de los usuarios de la calidad del usuario. Tal vez porque el comportamiento de BBR es más consistente y predecible. BBR, simplemente mejora ligeramente el ancho de banda de la conexión, porque YouTube y así se adapta la velocidad de flujo al nivel es mucho más baja que BTLBW para minimizar el búfer de red excesivo y la re-tamponamiento. Pero incluso aquí, BBR reduce la mediana media RTT en un 53% en el mundo y más del 80% en los países en desarrollo.

La Figura 9 muestra la mejora de la mediana en RTT en comparación con BBR y CUBIC de acuerdo con las estadísticas de más de 200 millones de vistas de Vistas de Vistas de YouTube en YouTube, medidas en cinco continentes durante la semana. Más de la mitad de las 7 mil millones de conexiones móviles en el mundo están conectadas a 2.5 g a una velocidad de 8 a 114 kbps, experimentando problemas bien documentados debido al hecho de que los métodos para regular la pérdida de los paquetes se inclinan a sobrellenar tampones de sobrembligo . Un cuello de botella en estos sistemas suele estar entre SGSN (Nodo de soporte GPRS de servicio) y un dispositivo móvil. El software SGSN funciona y una plataforma de PC estándar con una cantidad abundante de RAM, donde a menudo hay megabytes de búfer entre Internet y un dispositivo móvil. La Figura 10 compara el retardo SGSN (emulado) entre Internet y un dispositivo móvil para BBR y CUBIC. Las líneas horizontales marcan algunas de las consecuencias más graves: TCP se adapta a los retrasos de RTT prolongados con la excepción del paquete SYN, que inicia la conexión que tiene un tiempo de espera fijo, dependiendo del sistema operativo. Cuando el dispositivo móvil recibe una gran matriz de datos (por ejemplo, desde la actualización automática del software) a través de SGSN con un búfer grande, el dispositivo no puede instalar ninguna conexión en Internet, hasta que la cola sea gratuita (confirmar el paquete SYN ACK se retrasa para más Tiempo que el tiempo de espera fijo fijo).


Figura 9.

La Figura 10 muestra cambios medianos a RTT en un estado compuesto estable y dependencia del tamaño del tampón en una conexión 128 Kbps y 40 ms con ocho flujos de BBR (verde) o cúbicos (rojo). BBR tiene la cola en valores mínimos, independientemente del tamaño del tampón del cuello de botella y el número de flujos activos. Las corrientes cúbicas siempre llenan el búfer, por lo que la demora aumenta linealmente con un tamaño de tampón.


Figura 10.

Tira adaptativa en comunicación celular móvil.

Los sistemas celulares adaptan el ancho de banda para cada usuario, dependiendo parcialmente del pronóstico de la consulta en el que se tiene en cuenta la cola de paquetes para este usuario. Las primeras versiones de BBR se configuraron de tal manera que crean colas muy pequeñas, debido a que los compuestos se detuvieron a bajas velocidades. Aumentar el valor pico de PACING_GAIN para probabbw y las colas cada vez mayores llevó a una disminución en los compuestos rellenos. Esto muestra la posibilidad de una excelente adaptación para algunas redes. Con el valor actual del factor de ganancia pico, ninguna degradación no se manifiesta en ninguna red, en comparación con el cúbico.

Paquetes de ACK detenidos y estirados

La red celular, las redes WiFi y la banda ancha a menudo se retrasan y se acumulan paquetes ACK. Cuando la entrada se limita a un BDP, conduce a desgloses que reducen el ancho de banda. AUMENTAR EL COEFICIENTE CWND_GAIN ProBEBW a dos permitió continuar transmitiendo suavemente en la velocidad de entrega predicha, incluso cuando los paquetes ACK se retrasaron a un valor en una RTT. Previene prácticamente averías.

Limitadores del cubo actual

La implementación inicial de BBR en YouTube mostró que la mayoría de los proveedores de Internet en el mundo distorsionan el tráfico utilizando limitadores de velocidad en el algoritmo del cubo actual. El cubo generalmente está completamente al comienzo de la conexión, por lo que BBR aprende el parámetro BTLBW para la red subyacente. Pero tan pronto como se vacía el cubo, todos los paquetes enviados se envían más rápido que (mucho menos que BTLBW) La velocidad de llenado de cubo se descartan. BRR finalmente reconocerá esta nueva tasa de entrega, pero el cambio cíclico en la ganancia de ProBebW conduce a pérdidas moderadas constantes. Para minimizar la pérdida de la banda ascendente y aumentar los retrasos de la aplicación de estas pérdidas, hemos agregado un detector de limitador especial y un modelo explícito de limitadores en BBR. También estudiamos activamente las mejores maneras de eliminar el detrimento de los limitadores de velocidad.

Concurso con métodos para regular la congestión en la pérdida de paquetes.

BBR se reduce a la división honesta del ancho de banda de un cuello de botella, ya sea en competencia con otras corrientes BBR o con flujos que ejecutan los métodos para regular la congestión por pérdida de paquetes. Incluso cuando la última llenan un búfer asequible, ProBebW todavía cambia de manera confiable la estimación de BTLBW al lado del flujo honesto de flujos, y ProberTT considera que la calificación RTPROP sea bastante alta para la convergencia de la "OCO UE" a la separación justa. Sin embargo, los búferes de enrutadores no administrados que exceden algún PCD se ven obligados a los competidores obsoletos con la regulación de la congestión sobre la pérdida de paquetes para inflar la cola y capturar más de ellos es honesto. La eliminación de esto es otra área de investigación activa.

Conclusión

Repensar los métodos de regulación de la congestión trae grandes beneficios. En lugar de usar eventos, como pérdidas o una ocupación de tampón, que solo se correlaciona débilmente con lo contrario, BBR comienza con un modelo formal de enfriamiento y el punto de operación óptimo asociado. Una conclusión molesta sobre la "incapacidad" de determinar simultáneamente los parámetros importantes críticos del retraso y el ancho de banda es por la ayuda de la observación de que se pueden predecir simultáneamente. Los últimos logros en la gestión y la teoría de los sistemas de estimación se aplican luego para crear un circuito de control distribuido simple, que se está acercando al óptimo, completamente utilizando la red mientras mantiene una pequeña cola. La implementación de BBR de Google está disponible en el kernel de código abierto Linux y se describe en detalle en el anexo de este artículo.

La tecnología BBR se usa en los Bemarks de Google B4, mejorando el ancho de banda en comparación con el cúbico. También se desarrolla en los servidores web de Google y YouTube, reduciendo significativamente la demora en los cinco continentes probados hasta la fecha, y especialmente en los países en desarrollo. La tecnología BBR funciona exclusivamente en el lado del remitente y no requiere cambios en el protocolo, en el destinatario o en la red, lo que le permite implementarlo gradualmente. Depende solo de la RTT y las notificaciones de entrega de paquetes, por lo que se puede aplicar en la mayoría de los protocolos de transporte de Internet.

Expresión de apreciación

Los autores están agradecidos a Lena Kleinoku para la dirección de cómo ajustar adecuadamente la congestión. Estamos en deuda con el matrimonio de Larry (Larry Brakmo) para el trabajo innovador en los sistemas regulatorios de Las Vegas y las nuevas VEGAS, que anticiparon muchos elementos BBR, así como por su consejo y guía en la etapa inicial del desarrollo de BBR. También nos gustaría agradecer a Eric Dukkipati, Nandita Dukkipati, Jana Ayengar (Ian Swett), Yana Svetta (Ian Swett), Noulan Fitza (M. Fitz Nowlan), David Wetherall, Leonidas Contothanossis (Leonidas Kontothanassis), Amin Vakhdata (Amin Vahdat ) y los grupos de desarrollo de Google BWE y la infraestructura de YouTube para su invaluable ayuda y apoyo.

Apéndice - descripción detallada

Máquina de estado para detección de serie

El factor de ganancia PACING_GAIN controla cómo se envían rápidamente los paquetes en relación con BTLBW, y esta es la clave de la función inteligente BBR. Cuando la unidad aumenta en la vuelta y disminuye la brecha entre los recibos de los paquetes, que mueve la conexión hacia el lado derecho en la Figura 1. Cuando PACING_GAIN es menor que una unidad, se produce la conexión, la conexión se está moviendo a la izquierda.

BBR utiliza PACING_GAIN para implementar una máquina de detección consistente simple, que se alterna entre las pruebas en una tira más grande y las pruebas durante un tiempo más pequeño del paquete Dual Pass. (No es necesario probar una tira más pequeña, ya que se procesa automáticamente con el filtro MSX BTLBW: las nuevas dimensiones reflejan la caída, por lo que el BTLBW se ajustará tan pronto como se eliminarán los últimos cambios antiguos del filtro TIMAOUT. El filtro mínimo de RTPROP está de la misma manera se encarga de la entrega de la ruta de entrega).

Si el ancho de banda del cuello de la botella está aumentando, el BBR debe enviar datos más rápido para detectarlo. De la misma manera, si el tiempo real del doble paso del paquete está cambiando, cambia el BDP, y, por lo tanto, el BDP debe enviar los datos más lentos para mantener la entrada a la entrada debajo del BDP para medir el nuevo RTPROP. Por lo tanto, la única forma de detectar estos cambios es realizar experimentos, enviando más rápido a verificar el aumento de BTLBW o enviar más lento para verificar la reducción de RTPROP. La frecuencia, la escala, la duración y la estructura de estos experimentos difieren dependiendo de lo que ya se conoce (lanzando una conexión o estado estable) y del comportamiento de la aplicación que envía datos (intermitentes o permanentes).

Estado estable

Los arroyos BBR pasan la mayor parte de su tiempo en el estado de ProBebBW, sondeo de la tira usando el método llamado ganar ciclismoEso ayuda a los flujos de BBR para lograr un alto ancho de banda, de baja demora en la cola y la convergencia en la sección justa de la tira. Usando ganar ciclismo, BBR intenta cíclicamente una serie de valores para la ganancia. pacing_Gain.. Las ocho fases del ciclo se utilizan con los siguientes valores: 5/4, 3/4, 1, 1, 1, 1, 1, 1, 1. Cada fase generalmente va durante el RTPROP proyectado. Dicho diseño permite que el ciclo de coeficiente se le resulte primero al canal al ancho de banda mayor con el valor pacing_Gain. más de 1.0, y luego dispersó cualquier cola formada con pacing_Gain. En el mismo valor inferior a 1,0, y luego se mueva de velocidad de crucero con una cola corta de los coeficientes de Rivne 1.0. La federación promedio de ganancia para todas las fases es 1.0, porque ProBebW tiende a igualar el ancho de banda disponible y, por lo tanto, mantener un alto grado de ancho de banda sin aumentar la cola. Tenga en cuenta que aunque los ciclos de los cambios del cambio de coeficiente pacing_Gain.Pero valor cwnd_gain. Permanece invariablemente a dos, ya que los detenidos y los paquetes de confirmación estirados pueden aparecer en cualquier momento (consulte el Capítulo sobre los detenidos y los paquetes de ACK estirados).

Además, para mejorar la mezcla de hilos y la separación justa de la tira, y para reducir las colas, cuando numerosas transmisiones BRB comparten un cuello de botella, BBR cambia al azar las fases del ciclo de la sonda, eligiendo accidentalmente la primera fase entre todos los valores, excepto 3/4. ¿Por qué el ciclo no comienza con 3/4? La tarea principal de este valor de coeficiente es dispersar cualquier cola que pueda formarse durante la aplicación del coeficiente 5/4 cuando el canal ya está completo. Cuando el proceso deja el desagüe o el estado de Probertt y entra probabbW, entonces falta la cola, por lo que el coeficiente 3/4 no realiza su tarea. Aplicación 3/4 En este contexto, solo un efecto negativo: el llenado del canal en esta fase será 3/4, y no 1. Por lo tanto, el comienzo del ciclo de 3/4 tiene solo un efecto negativo, pero no tiene Un positivo, y dado que la entrada a la probade estatal ocurre al inicio de cualquier conexión suficiente, el BBR utiliza esta pequeña optimización.

Las corrientes BBR actúan juntas para vaciar periódicamente la cola en un lugar estrecho con un estado llamado ProberTT. En cualquier condición que no sea el propio ProBertt, si la relación RTPROP no se actualiza (por ejemplo, midiendo un RTT más pequeño) más de 10 segundos, el BBR ingresa al estado ProberTT y reduce CWND a un valor muy pequeño (cuatro paquetes). Al guardar un número mínimo de paquetes "en vuelo" con al menos 200 ms y por una vez del pasaje de doble pasaje, el BBR sale del estado de ProberTT y entra o en la puesta en marcha, o en ProBEBW, dependiendo de la evaluación, ya sea la evaluación. El canal ya se ha llenado.

BBR se crea para trabajar como la mayoría de los tiempos (aproximadamente 98%) en el estado de ProBebB, y el resto del tiempo, en Protertt, basado en el conjunto de compromisos. El estado de ProberTT continúa lo suficientemente largo (al menos 200 ms) para permitir que los flujos con diferentes RTT tengan estados paralelos ProberTT, pero al mismo tiempo continúan un período de tiempo bastante corto para limitar la reducción de desempeño de aproximadamente el dos por ciento (200 ms / 10 segundos). La ventana del filtro RTPROP (10 segundos) es lo suficientemente pequeña como para ajustar rápidamente el nivel de tráfico o cambiar la ruta, pero es bastante grande para aplicaciones interactivas. Las aplicaciones de tales (por ejemplo, páginas web, llamadas de procedimientos remotos, fragmentos de video) a menudo demuestran los períodos naturales de silencio o actividad pequeña en el cáncer de esta ventana, donde el caudal es bastante bajo o bastante largo para dispersar la cola en un lugar estrecho. El filtro RTPROP se selecciona selectivamente en estas medidas de RTPROP, y RTPROP se actualiza sin la necesidad de usar ProberTT. Por lo tanto, los hilos generalmente se requieren solo para sacrificar el 2% de la banda si numerosas flujos se rellenan abundantemente el canal en toda la ventana de RTPROP.

Comportamiento al inicio

Cuando se inicia la corriente BBR, realiza su primer proceso secuencial (y el más rápido) de detección / vaciando la cola. El ancho de banda de red varía en el rango de 10 12, desde varios bits hasta 100 gigabits por segundo. Para averiguar el valor de BTLBW con un cambio de rango gigantesco, BBR proporciona una búsqueda binaria en el espacio de velocidad. Se encuentra rápidamente BTLBW (pasajes de doble paquete), pero creando una cola en 2BDP en la última etapa de la búsqueda. La búsqueda se realiza en el estado de inicio en BBR, y el vaciado de la cola creado está en el estado de drenaje.

Primero, la puesta en marcha aumenta exponencialmente la velocidad de enviar datos al doblarse en cada ronda. Para lograr una sensación tan rápida en el más tranquilo, al iniciar el valor de los coeficientes de ganancia pacing_Gain. y cwnd_gain. Instalado en, en un valor mínimo que le permite duplicar la velocidad de enviar datos en cada ronda. Una vez que el canal está lleno, coeficiente cwnd_gain. Limita el tamaño del valor de la cola.

En el inicio de la conexión BBR, se estima si el canal está lleno de una búsqueda de meseta en la evaluación BTLBW. Si se encuentra que se han pasado varias (tres) rondas, donde los intentos de duplicar la velocidad de entrega realmente no dan una ganancia de gran velocidad (menos del 25%), entonces cree que llegó a BTLBW, por lo que sale del inicio. Estado y entra en el estado de drenaje. BBR está esperando tres rondas para obtener evidencia convincente de que el remitente de velocidad de entrega no es un efecto temporal bajo la influencia de la ventana de recepción. La espera de tres rondas da tiempo suficiente para configurar automáticamente en el lado del destinatario para abrir la ventana de recepción y que el remitente para BBR ha descubierto la necesidad de aumentar BTLBW: En la primera ronda, el algoritmo de ajuste automático de la ventana de recepción aumenta la recepción. ventana; En la segunda ronda, el remitente llena la ventana incrementada de la recepción; En la tercera ronda, el remitente recibe muestras con una tasa de suministro ampliada. Tal límite de tres rondas se demostró de acuerdo con los resultados de la introducción en YouTube.

En el estado de drenaje, el algoritmo BBR busca vaciar rápidamente la cola que se formó en el estado de conexión girando en modo pacing_Gain. Con configuraciones que las utilizadas en el estado de inicio. Cuando el número de paquetes en el vuelo corresponde a la puntuación del BDP, esto significa que BBR estima que la cola está completamente vacía, pero el canal aún se llena. Entonces BBR sale del estado de drenaje y entra a ProBebBW.

Tenga en cuenta que el lanzamiento de la conexión BBR y el inicio cúbico lento tanto estudian el ancho de banda del cuello de botella exponencialmente, doble la velocidad de enviar en cada ronda. Sin embargo, difieren dramáticamente. Primero, BBR se determina más de manera confiable el ancho de banda disponible, ya que no detiene la búsqueda en caso de pérdida de paquete o (como Hystart en Cubic) aumenta el retraso. En segundo lugar, BBR aumenta suavemente la velocidad del envío, mientras que el cúbico en cada ronda (incluso con la estimulación) tiene un salpicaduras de paquetes, y luego el período de silencio. La Figura 4 muestra el número de paquetes en vuelo y observa la hora de RTT para cada mensaje de confirmación en BBR y CUBIC.

Reaccionando a situaciones de transición.

La ruta de la red y el paso del tráfico pueden experimentar cambios repentinos dramáticos. Para adaptarse de manera suave y confiable a ellos, así como a reducir las pérdidas de paquetes en estas situaciones, BBR utiliza una serie de estrategias para implementar su modelo base. Primero, BBR considera la meta a la que la corriente. cwnd. Acercarse cuidadosamente al fondo, aumentando cwnd. Cada vez no más que la cantidad de datos para los cuales llegó la confirmación de entrega. En segundo lugar, con un tiempo de espera de re-transmisión, lo que significa que el remitente considera a todos los paquetes en vuelo, BBR reduce de forma conservadora. cwnd. A un paquete y envía el único paquete (exactamente como algoritmos para regular la congestión para la pérdida de paquetes, como cúbicos). Al final, cuando el remitente nota la pérdida del paquete, pero en el vuelo todavía hay paquetes, en la primera etapa del proceso de recuperación, la pérdida de BRB reduce temporalmente la velocidad de envío al nivel de la velocidad de entrega actual; En la segunda y subsiguientes rondas de pérdidas de restauración, verifica que la velocidad de envío nunca exceda la velocidad de entrega actual de más de dos veces. Esto reduce significativamente las pérdidas de transición cuando BBR se enfrenta a los limitadores de velocidad o compite con otros hilos en el tampón comparable al tamaño del BDP.

Enlaces

1. Abrahamsson, M. 2015. TCP ACK Supresión. IETF AQM Lista de correo de correo;

Por favor, active Javascript para usar el convertidor de unidad

›› Más información del convertidor de unidad.

¿Cuántos CFM en 1 metro cúbico / minuto? La respuesta es 35.314666212661.
Asumimos que usted está convirtiendo entre pie cúbico / minuto Y. metro cúbico / minuto.
Puede ver más detalles en cada unidad de medición:
cFM o metro cúbico / minuto
La unidad derivada de SI para cAUDAL VOLUMÉTRICO. Es el medidor cúbico / segundo.
1 metro cúbico / segundo es igual al 2118.8799727597 CFM, o 60 metros cúbicos / minuto.
Tenga en cuenta que pueden ocurrir errores de redondeo, así que siempre revise los resultados.
Utilice esta página para aprender cómo convertir entre pies cúbicos / minuto y metros cúbicos / minuto.
Escriba sus propios números en el formulario para convertir las unidades!

›› Gráfico de conversión rápida de CFM a medidor cúbico / minuto

1 cfm a metro cúbico / minuto \u003d 0.02832 metro cúbico / minuto

10 cfm a metro cúbico / minuto \u003d 0.28317 metro cúbico / minuto

20 cfm a metro cúbico / minuto \u003d 0.56634 metro cúbico / minuto

30 cfm a metro cúbico / minuto \u003d 0.84951 metro cúbico / minuto

40 cfm a medidor cúbico / minuto \u003d 1.13267 metro cúbico / minuto

50 cfm a metro cúbico / minuto \u003d 1.41584 metro cúbico / minuto

100 cfm a metro cúbico / minuto \u003d 2.83168 metro cúbico / minuto

200 cfm a medidor cúbico / minuto \u003d 5.66337 metro cúbico / minuto

›› ¿Quieres otras unidades?

›› Definición: pie cúbico / minuto

Los pies cúbicos por minuto (CFM) son una medida utilizada en la ingeniería de higiene industrial y ventilación. Describe la tasa de flujo de un volumen de gas o aire dentro o fuera de un espacio.

Una medición estándar del flujo de aire que indica cuántos pies cúbicos de aire pasan por un punto estacionario en un minuto. Cuanto mayor sea el número, más aire se está forzando a través del sistema. El caudal volumétrico de un líquido o gas en pies cúbicos por minuto. 1 CFM es igual a aproximadamente 0,47 litros por segundo.

›› Conversiones métricas y más

sitio web Proporciona una calculadora de conversión en línea para todo tipo de unidades de medición. Puede encontrar tablas de conversión métricas para unidades SI, así como unidades de inglés, moneda y otros datos. Escriba los símbolos de la unidad, las abreviaturas o los nombres completos para unidades de longitud, área, masa, presión y otros tipos. Los ejemplos incluyen mm, pulgadas, 100 kg, onzas fluidas de los EE. UU., 6 "3", 10 de piedra 4, cm cúbicos, metros cuadrados, gramos, lunares, pies por segundo, y muchos más!