Acerca de cómo se implementa el mecanismo de procesamiento de alta concurrencia de MySQL
Algoritmo de limitación actual Hay dos algoritmos de limitación actual de uso común en el proceso de desarrollo de programas: el algoritmo de depósito con fugas y el algoritmo de depósito de tokens.
Algoritmo del balde con fugas
El principio del algoritmo del balde con fugas es relativamente simple. Una solicitud ingresa a un balde con fugas y el balde con fugas pierde agua a una cierta velocidad. Cuando hay demasiadas solicitudes, el agua se desborda directamente. Se puede ver que el algoritmo del depósito con fugas puede limitar con fuerza la velocidad de transmisión de datos. Como se muestra en la figura, la solicitud se compara con una gota de agua. El agua primero cae en el balde, pasa a través de la laguna y sale a una velocidad limitada cuando el agua entra demasiado dura y sale lo suficientemente rápido. , provocará que el agua se desborde directamente, es decir, una denegación de servicio.
La imagen proviene de Internet
La velocidad de salida del agua del balde que gotea es constante, lo que significa que si hay un gran flujo instantáneo, la mayoría de las solicitudes serán descartadas ( también conocido como desbordamiento).
Algoritmo de depósito de tokens
El principio del algoritmo de depósito de tokens es que el sistema coloca tokens en el depósito a una velocidad determinada. Si hay una solicitud, la solicitud tomará el token. fuera del depósito, si se puede obtener el token, puede continuar para completar la solicitud; de lo contrario, espere o rechace el servicio. Este algoritmo puede manejar solicitudes en ráfagas y, por lo tanto, es mejor que el algoritmo del depósito con fugas.
La imagen proviene de Internet
La elección entre el algoritmo del depósito con fugas y el algoritmo del depósito de tokens
La principal diferencia entre los dos es que el algoritmo del depósito con fugas El algoritmo puede limitar por la fuerza la velocidad de procesamiento de datos independientemente de si el sistema está inactivo o no. El algoritmo del depósito de tokens puede limitar la velocidad promedio de procesamiento de datos y al mismo tiempo permitir un cierto grado de tráfico en ráfagas. ¿Cómo entender el significado anterior? Algoritmo de depósito con fugas, por ejemplo, si el rendimiento del sistema es 120/s, la solicitud comercial es 130/s y el embudo se usa para limitar la corriente a 100/s, desempeña el papel de limitar la corriente y el exceso de solicitudes ser esperado o descartado. Para el algoritmo del depósito de tokens, se generan 100 tokens por segundo y la capacidad del sistema es de 200 tokens. En circunstancias normales, cuando la tasa de solicitud comercial es 100/s, la solicitud se puede procesar normalmente. Cuando hay tráfico repentino, como 200 solicitudes, debido a que la capacidad del sistema tiene 200 tokens, estas 200 solicitudes se pueden procesar al mismo tiempo. Si se trata de un algoritmo de depósito con fugas, solo puede procesar 100 solicitudes y otras solicitudes esperarán o serán descartadas.