Red de conocimiento informático - Consumibles informáticos - Enlaces largos, enlaces cortos y grupos de conexiones

Enlaces largos, enlaces cortos y grupos de conexiones

Antes de comprender la agrupación de conexiones, debemos establecer una comprensión preliminar de los enlaces largos y cortos. Todos sabemos que la mayoría de las comunicaciones de red se basan en el protocolo TCP/IP. Antes de la transmisión de datos, las dos partes establecen una conexión mediante un "apretón de manos de tres vías". Cuando se completa la transmisión de datos, la conexión se libera mediante un "cuatro". Onda de tres vías". El siguiente es el diagrama de "apretón de manos de tres vías" " y "Agitación de cuatro veces":

Apretón de manos de tres vías para establecer una conexión:

Cuatro ondas para Liberar la conexión:

Las conexiones largas y cortas son comunicaciones relativas en términos de tiempo. En comparación con las conexiones cortas, las conexiones largas tienen un proceso adicional de mantenimiento de la conexión. Se pueden enviar varios paquetes de datos continuamente en una conexión. Durante el período de mantenimiento de la conexión, si no se envían paquetes de datos, ambas partes deben enviar paquetes de detección de enlace.

Los pasos para una conexión corta son:

Establecer conexión - transferencia de datos - cerrar conexión... Establecer conexión - transferencia de datos - cerrar conexión

cliente Iniciar una Solicitud de conexión al servidor, el servidor recibe la solicitud y luego las dos partes establecen una conexión. El cliente envía un mensaje al servidor, el servidor responde al cliente y luego se completa la solicitud. En este momento, ambas partes pueden iniciar una operación de cierre en cualquier momento, pero normalmente el cliente inicia la operación de cierre primero. Como se puede ver en lo anterior, las conexiones cortas generalmente solo transfieren una operación de solicitud entre cliente/servidor.

La ventaja de las conexiones cortas es que son relativamente simples de administrar. Todas las conexiones existentes son conexiones útiles y no requieren métodos de control adicionales.

Los pasos de operación de una conexión larga son:

Establecer una conexión - transmisión de datos... (mantener la conexión)... transmisión de datos - cerrar la conexión

El cliente inicia una solicitud al servidor Conexión, el servidor acepta la conexión del cliente y las dos partes establecen una conexión. Una vez que el cliente y el servidor completan una solicitud, la conexión entre ellos no se cerrará activamente y se leerá posteriormente. y las operaciones de escritura seguirán utilizando esta conexión.

Dos formas de mantener conexiones TCP largas:

Personalizar el encabezado del mensaje de latido Generalmente, el cliente lo envía activamente al servidor y el servidor responde después de recibirlo (o lo hace). no es necesario responder), para poder detectar si la conexión se desconecta de forma anormal.

Configurando los atributos keepalive de TCP y estableciendo el intervalo de tiempo para enviar el paquete de latidos subyacente. TCP keepalive envía mensajes de latido regularmente a la capa inferior. Cuando el servidor recibe el mensaje de latido de la capa inferior, lo descarta directamente sin preocuparse por su contenido.

El protocolo HTTP no tiene estado. En HTTP/1.0, se utilizan conexiones cortas de forma predeterminada. Cada vez que el cliente y el servidor realizan una operación HTTP, el navegador restablecerá una sesión HTTP.

A partir de HTTP/1.1, las conexiones largas se utilizan de forma predeterminada para mantener las características de la conexión. El protocolo HTTP que utiliza conexiones largas agregará esta línea de código al encabezado de respuesta:

En. utilizar En el caso de una conexión larga, cuando se abre una página web, la conexión TCP utilizada para transmitir datos HTTP entre el cliente y el servidor no se cerrará. Cuando el cliente acceda nuevamente al servidor, continuará usando este establecido. conexión. Keep-Alive no mantiene la conexión de forma permanente. Tiene un tiempo de retención que se puede configurar en diferentes software de servidor. Para implementar conexiones largas, tanto el cliente como el servidor deben admitir conexiones largas.

Las conexiones largas y las conexiones cortas del protocolo HTTP son esencialmente las conexiones largas y las conexiones cortas del protocolo TCP.

Según el protocolo TCP / IP, podemos saber que la creación y destrucción frecuentes de conexiones consumen recursos, y el grupo de conexiones guarda las conexiones creadas en el grupo. Cuando llega una solicitud, se usa directamente. conexión creada para el acceso, omitiendo así el proceso de creación y destrucción de conexiones. Esto mejora el rendimiento.

Tomando el grupo de conexiones de la base de datos como ejemplo, los principios básicos son los siguientes:

Beneficios que aporta la tecnología del grupo de conexiones:

Debido a que las conexiones se reutilizan, son frecuentes creación y existe una sobrecarga de rendimiento significativa causada por la liberación de la conexión. Por otro lado, sobre la base de reducir el consumo del sistema, también mejora la estabilidad del entorno operativo del sistema (reduce la fragmentación de la memoria y la cantidad de procesos/hilos temporales).

Durante el proceso de inicialización del grupo de conexiones, a menudo se crean varias conexiones y se colocan en el grupo como respaldo. En este punto, se ha completado el trabajo de inicialización de la conexión. Para el procesamiento de solicitudes comerciales, las conexiones disponibles existentes se utilizan directamente para evitar la sobrecarga de tiempo de los procesos de inicialización y liberación de la conexión, reduciendo así el tiempo de respuesta general del sistema.

En una implementación más completa del grupo de conexiones, la conexión ocupada se puede recuperar por la fuerza de acuerdo con la configuración de tiempo de espera de ocupación de conexión preestablecida. Esto evita las fugas de recursos que pueden ocurrir durante las operaciones de conexión regulares.

Tomando el desarrollo PHP como ejemplo, no es fácil implementar la agrupación de conexiones para servicios web basados ​​en el mecanismo PHP-FPM. Sin embargo, los marcos de desarrollo residentes en memoria, como Workerman y Swoole, pueden implementarlo fácilmente. la función de agrupación de conexiones. El grupo de conexiones bajo el mecanismo PHP-FPM debe implementarse con la ayuda de un proxy de terceros, por ejemplo: