¡6 tecnologías clave para resistir millones de alta concurrencia!

Pila de tecnología Java

www.javastack.cn

Siga para leer más artículos de calidad

Autor: Lu Avatar

Fuente: http://www.cnblogs.com/luxiaoxun/

1. ¿Qué es alta concurrencia?

La alta concurrencia es uno de los factores que se deben considerar en el diseño de la arquitectura de un sistema distribuido de Internet y generalmente se refiere al diseño para asegurar que el sistema pueda procesar muchas solicitudes en paralelo al mismo tiempo.

Algunos indicadores de uso común relacionados con la alta concurrencia son el tiempo de respuesta, el rendimiento, QPS (consulta por segundo), TPS (transacción por segundo) y el número de usuarios simultáneos.

Tiempo de respuesta : el tiempo que tarda el sistema en responder a la solicitud.

Rendimiento : el número de solicitudes procesadas por unidad de tiempo.

QPS : el número de respuestas a solicitudes de consulta por segundo.

TPS : el número de solicitudes de transacciones de respuesta por segundo.

Número de usuarios concurrentes : el número de usuarios que realizan el uso normal de las funciones del sistema al mismo tiempo.

2. Mejorar la concurrencia del sistema

Existen dos métodos metodológicos principales para el diseño de la arquitectura distribuida de Internet para mejorar la concurrencia del sistema: expansión vertical (Scale Up) y expansión horizontal (Scale Out).

(1) Expansión vertical: mejora la capacidad de procesamiento de una sola máquina. Hay dos formas de expansión vertical:

1) Mejore el rendimiento del hardware autónomo, por ejemplo: aumente el número de núcleos de CPU como 32 núcleos, actualice mejores tarjetas de red como 10G, actualice mejores discos duros como SSD, amplíe la capacidad del disco duro como 2T, amplíe la memoria del sistema como 128G;

2) Mejore el rendimiento de la arquitectura autónoma, por ejemplo: use Cache para reducir el número de IO, use la asincronía para aumentar el rendimiento de un solo servicio y use estructuras de datos sin bloqueo para reducir el tiempo de respuesta;

(2) Expansión horizontal: siempre que aumente el número de servidores, el rendimiento del sistema se puede expandir linealmente. La expansión horizontal requiere el diseño de la arquitectura del sistema. Cómo diseñar escalable horizontalmente en cada capa de la arquitectura es el tema central de este artículo.

1. Implementación de clústeres del sistema + equilibrio de carga

(1) Agregue una capa de equilibrio de carga para enviar solicitudes de manera uniforme a la capa del sistema.

(2) La capa del sistema adopta una implementación multiactiva agrupada para soportar la presión de concurrencia inicial.

2. Subtabla de base de datos de base de datos + separación de lectura y escritura + base de datos distribuida

(1) Subbase de datos y subtabla : división horizontal, división vertical (demasiados inconvenientes, como consultas relacionadas).

(2) Separación de lectura y escritura: escritura de la biblioteca principal y lectura de la biblioteca (retardo de sincronización de datos).

(3) Base de datos distribuida: TiDB (HTAP, compatible con protocolo MySQL , expansión horizontal, transacción distribuida)

3. Caché

(1) Caché local: disco o memoria local.

(2) Caché distribuido : utilice el clúster de caché para resistir una gran cantidad de solicitudes de lectura.

(3) Pre-caché, caché de varios niveles.

4. Middleware de mensajes

(1) Desacoplamiento del sistema y sincronización de datos.

(2) Solicite procesamiento asincrónico para lograr el efecto de recorte de picos y llenado de valles.

5. División de aplicaciones (microservicios)

(1) Dividir por negocio y reducir el acoplamiento.

(2) Despliegue, expansión y contracción jerárquica.

(3) Aislamiento de recursos de la aplicación.

6. CDN (Red de entrega de contenido)

(1) Evite los cuellos de botella y los enlaces en Internet que puedan afectar la velocidad y la estabilidad de la transmisión de datos, para que la transmisión de contenido sea más rápida y estable.

(2) La CDN puede redirigir la solicitud del usuario al nodo de servicio más cercano al usuario en tiempo real en base a información completa como el tráfico de red y el enlace de cada nodo, estado de carga, distancia al usuario y tiempo de respuesta.

Los derechos de autor de este artículo pertenecen al autor y al jardín del blog, bienvenido a reimprimir, pero sin el consentimiento del autor, esta declaración debe conservarse y el enlace original debe figurar en un lugar obvio en la página del artículo; de lo contrario, el derecho a perseguir la responsabilidad legal está reservado.

Artículos calientes recientes:

1. Escribí una parte de la lógica en Java 8, pero mis colegas no pudieron entenderla directamente.

2. Notas de estudio de Spring Boot, ¡esto es demasiado completo!

3. ¡ Cuelgue Tomcat, el rendimiento de Undertow es muy explosivo! !

4. Spring Boot es demasiado cruel, ¡lanza 3 versiones a la vez!

5. ¿Cómo Spring Boot integra Redis rápidamente?

6 、La última versión del "Manual de desarrollo de Java (edición Songshan)"

7. Spring Boot Redis implementa cerraduras distribuidas, ¡que es tan fragante!

8. ¡Los chinos abrieron una pequeña y completa biblioteca de herramientas Java !

9. ¡Los chinos crearon un cliente de Redis muy fácil de usar! !

10 、Mi colega escribió un error oculto y lo revisé durante 3 días.

Escanee el código QR para seguir la cuenta oficial de Java Technology Stack para leer más productos secos.

Haga clic en " Leer original " para obtener una lista completa de las preguntas de la entrevista ~

Supongo que te gusta

Origin blog.csdn.net/youanyyou/article/details/108426582
Recomendado
Clasificación