05/06/2019 M evolución de la arquitectura del sitio web y optimización del sistema de almacenamiento en caché

Anteriormente, el programa de generación inversa de 7 capas nginx, tales aplicaciones también tienen haproxy
nginx, que puede realizar tanto el proxy inverso de 4 capas como la generación inversa de 7 capas, y después de que se completa la generación inversa, el módulo ascendente correspondiente también se puede completar El efecto del equilibrio de carga
ahora está dirigido principalmente a la generación de la capa de aplicación, usando nginx para lograr la generación del módulo proxy, hay un comando en el módulo proxy llamado proxy_cache_path,
proxy_cache_path, especifique la ruta, (algunos niveles de ruta, cuántos subdirectorios, 1, , 2, hay dos partes en la memoria caché, una
parte está en la memoria, es la clave, la tabla hash del disco y la otra parte está en el disco. Los datos en el disco son el contenido correspondiente uno a uno
en la memoria caché. Reduzca los enlaces en todo el proceso de servicio para lograr funciones aceleradas.
Cuando un cliente accede a su servicio web, si no hay caché, llegará al servidor proxy inverso por primera vez, y el servidor inverso llegará al servidor proxy a través de la red nuevamente. Para obtener el contenido que el usuario necesita, este host también necesita ver si es estático o dinámico. Si es contenido estático, debe ser Después de IO de disco, llegar
al contenido solicitado por el usuario, en respuesta al paquete de host del proxy, lo que en general será más de un proceso de red IO, S de disco inevitable, esta red IO puede consumir una gran cantidad de tiempo, si se trata de obtener una dinámica Contenido, puede haber un proceso de ejecución en el medio, incluso si no es generación inversa, este servidor debe ejecutarse para obtener el contenido. Este paso es indispensable. Para el servidor de fondo, para hacer el equilibrio de carga, esta red IO tampoco es posible Para evitarlo, es inevitable que el proceso de ejecución tome un período de tiempo.
Con el caché, estos procesos pueden omitirse hasta cierto punto. Si se trata de contenido dinámico, el proceso de ejecución también puede omitirse. Por lo tanto, puede ahorrar mucho tiempo.
Si el usuario es un método de solicitud para obtener, o si no hay modificación, se puede utilizar el contenido original. Este método de caché puede mejorar la percepción del rendimiento del usuario

Inserte la descripción de la imagen aquí
** La razón por la cual el caché puede tener efecto depende principalmente del hecho de que el programa tiene características locales. La
operación a largo plazo tiene una localidad de tiempo: después de acceder a los datos, se puede volver a acceder pronto (esta lógica hace que el caché sea valioso. Base)
**
Inserte la descripción de la imagen aquí
Localidad espacial: en general, cuando se accede a un dato, también se puede acceder a los datos circundantes
, y se puede utilizar el método de precarga. Cuando se accede a un dato, los datos circundantes también se almacenan en la memoria caché. Luego puede acceder a

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
por qué desea usar la memoria caché. Si hay demasiados enlaces intermedios, cada enlace inevitablemente reducirá el rendimiento y afectará la percepción del usuario. Por lo tanto, el contenido que esos usuarios necesitan se envía al lugar más cercano del usuario para llevar el rendimiento La mejora es obvia:
el caché utilizado aquí no es solo el caché utilizado por nuestro servidor proxy inverso (caché del servidor de caché, caché público), de hecho, cada navegador tiene un caché (caché privado de usuario caché privado)
tiene múltiples niveles el más cercano al usuario, mejor

Inserte la descripción de la imagen aquí
es el propio sitio se localiza la zona caliente, así que deja la memoria caché local Fortalecido
Inserte la descripción de la imagen aquí
para MySQL se refiere, es resultado de la consulta Cache Cache instrucción de selección, que es el flujo de datos, y el sitio de caché (más de una imagen, un archivo CSS, los datos de la página)
MySQL y algunas clases de almacenamiento en caché de datos por lo general llamada de datos ceche
y para los sitios web, la memoria caché generalmente se denomina
lógica de caché de la página caché es la misma
debido al concepto de zona activa , por lo que la memoria caché general no almacenará en caché todo el conjunto de datos, la mayoría de ellos siguen la regla 2,8, 20% Datos, que transportan el 80% del acceso, y el 80% restante transporta el 20% del acceso, por lo que el 20% de los datos se almacena en caché en el sistema, generalmente solo se almacenan en caché los datos de la zona activa
Es imposible determinar qué datos se encuentran en la zona activa, por lo que la memoria caché no tendrá efecto inmediatamente después de conectarse y no alcanzará de inmediato el mejor modo de funcionamiento. Debe ser aproximadamente después de un período de tiempo, la mayoría de los datos de la zona activa se pueden almacenar en caché procedimiento de calentamiento caché se caliente

Inserte la descripción de la imagen aquí
pero el proceso es demasiado largo, será alguna medición de flujo de presión con el Sr. replicación para el almacenamiento en caché, la presión se mide continuamente los datos de cambio, se deja a los datos de la zona caliente, el proceso de calentamiento, la necesidad de implementar manualmente
Inserte la descripción de la imagen aquí
para algunos de compilación de los resultados de la aplicación también puede almacenar en caché
como php hay código de operación, por lo general entre dos no seguir el ritmo del tiempo, tanto para resolver el problema con la caché, la memoria caché en casi todas partes en los
datos de la caché debe ser inferior a la cantidad de espacio de datos original

Inserte la descripción de la imagen aquí
caché Está lleno y necesita ser limpiado. Un algoritmo bien conocido es LRU. El menos utilizado recientemente.
Dado que es un caché, estos datos no deberían ser válidos por mucho tiempo. Los
datos originales también pueden cambiarse. En este momento, el caché original debería invalidarse, de lo contrario el caché responde al usuario y no a los últimos datos
(para datos mysql) , El caché se debe actualizar a tiempo)
Pero para los sitios web, el nuevo CSS, mi forma de mostrar los productos, pero solo otra forma de mostrar los productos, en este momento para actualizar el caché a tiempo, no es necesario, puede permitir lento Un poco '
después de la expiración, hay una lógica de limpieza de caché para limpiar' el

Inserte la descripción de la imagen aquí
caché perdido por muchas razones,
1. El primer acceso, sin historial antes (calentamiento manual)
2. El caché se guarda, pero el tiempo de caché es muy corto, la próxima visita Anteriormente, se borraba por caducidad (aumentando la duración de la memoria caché para resolver el problema, si los datos originales cambian con demasiada frecuencia, la eficiencia de aceleración de la memoria caché suele ser muy baja)
3. El espacio de la memoria caché es demasiado pequeño, una gran cantidad de elementos de la memoria caché, según el algoritmo LRU Limpiado, (necesita aumentar el espacio de caché)
Por lo tanto, generalmente se almacena en caché para leer más y escribir menos. Si la tasa de aciertos de caché es demasiado baja, presenta un problema (primero verifique el caché, el caché falla y luego búsquelo más tarde, no hay más pasos, pero
si hay más pasos si El valor del costo del caché es menor que el tiempo ahorrado, entonces el caché necesita ser retirado) La

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
tasa de aciertos debe estar entre 0-1, qué tan alto es bueno y qué tan alto es pobre, y no hay medida de la
tasa de acierto estándar de la página (un total de 800 páginas, Hay 40 cachés, y la tasa de éxito de estas 40 páginas es muy alta, 90%. Sucede que estas páginas son de tamaño muy pequeño. A menudo se solicitan las que faltan, pero el volumen es muy grande. En este estado, el ahorro También es limitado) en
función del tamaño de la página, en función del número de páginas para medir,
casi todas las cachés son similares a la

Inserte la descripción de la imagen aquí
caché es una estructura de varios niveles, al igual que la generación inversa, cada nivel de generación inversa abrirá la caché,
Inserte la descripción de la imagen aquí
por lo que el servidor debe especificar esto ¿Son los datos que pueden almacenarse en caché públicamente o solo datos almacenados en caché de forma privada?
Para información privada, con autenticación y autorización, las cookies,
excepto estas son generalmente datos públicos, pero no necesariamente Las cookies con cookies son todas privadas. Después de iniciar sesión, verifique el producto, y la información descriptiva del producto no son datos privados.
Para el administrador de caché, es necesario comprender qué es privado y público.

Inserte la descripción de la imagen aquí
Para los servicios web, todas las cachés son un proxy
Caché proxy (solicitud del usuario, el caché no está disponible, el servidor de caché debe pedirle al servidor que lo ayude a obtener los datos y luego enviarlo al cliente)
También hay un caché llamado bypass (acceso del usuario al caché, si el hit regresa directamente, ningún hit, El cliente necesita encontrar el servidor original por sí mismo. Después de encontrarlo, le corresponde al cliente decidir si guardarlo en caché. Al igual que este servidor de caché, el cliente no decide los datos en caché (servicio web, todos los cachés del protocolo http) Todos son servidores proxy, pero los servidores proxy no se almacenan en caché, pero siempre que los cachés sean servidores proxy)
Los requisitos de montaje lateral en el cliente se vuelven más altos (en general, los buenos productos hacen que los usuarios engañen, el cliente se dará por vencido porque es difícil de usar, memacached, es un caché, un servidor de caché puro, no un proxy)

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
La capacidad de almacenamiento en caché de Vanish no es comparable a nginx, pero la concurrencia es débil, por lo que al construir un sitio, el barniz y el nginx se usarán juntos.
¿Por qué no usar calamar (la relación entre el barniz y el calamar es como la relación entre nginx y httpd, uno es Los productos de la era anterior, uno de los productos de la era actual, aprovechan al máximo las ventajas del modelo de programación de concurrencia de red actual, como EPOLL). Debemos
organizar
las solicitudes de los usuarios de nuestro sitio web para ir primero a nginx, para evitar puntos únicos, así que use Keepalived es un modelo de maestro doble. Al iterar
hacia el back-end, no es directamente un servidor web sino una capa más. El servidor de caché
divide los elementos de caché en varios servidores. Cada servidor de caché solo transporta una parte de los elementos de caché
para mejorar los aciertos de caché. Rate (url, programación de caché basada en url), utilizando un algoritmo de hash consistente para mejorar los hits de caché , A fin de no provocar un fallo global cuando el número de servidores de caché cambió
el almacenamiento en caché del servidor puede almacenar en caché de contenido estático, el contenido dinámico es necesario pensar dos veces, (que el almacenamiento en caché de contenido, lo que no debe caché)
añadir contenido dinámico no está en cache, la definición de los servicios de ubicación nginx Cuando el contenido estático (imágenes, CSS) se envía al servidor de caché

Inserte la descripción de la imagen aquí
o puede definir directamente cuál no se puede almacenar en caché es más simple.
Para el contenido dinámico, puede ir directamente al host original. Index.php
piensa que cada usuario es la primera vez La solicitud de acceso debe ser transportada por el servidor de números original. Si la velocidad de generación de la página de inicio es muy lenta, la experiencia del usuario será deficiente.
Por lo tanto, el contenido dinámico debe ser estático y index.html
generalmente separa los sitios web dinámicos y estáticos .
css y js se colocan en el servidor dinámico de la página de inicio, y las imágenes generalmente se colocan en el servidor de imágenes, por lo que las imágenes en un sitio web son
aproximadamente una docena de unidades con nombres de dominio separados , que pueden transportar casi diez millones. El nivel pv

Inserte la descripción de la imagen aquí
ahora es web2. 0, algunos datos fragmentados se colocan en una base de datos relacional, la eficiencia es muy baja, debe usar una base de datos no relacional (como redis, mongodb)
Inserte la descripción de la imagen aquí
, sistema de colas de mensajes kafka, twitter internamente, los mensajes que se llevan todos los días son billones de niveles Use el
pequeño servicio Kafka y use su propia solución. No tiene que obtener deliberadamente un kafka o similar.
Ahora esta arquitectura se ve perfecta, pero qué debe hacer si hay un problema con el nodo.
Entonces, el primer paso en la operación y mantenimiento Asegúrese de que nuestro sistema necesita ser estandarizado, la
versión del sistema de texto sin formato debe ser consistente, la versión del programa debe ser consistente, la organización de la ruta debe ser consistente y se puede lograr una buena coherencia.
Este paso es hacer un buen trabajo de monitoreo, cada componente de todo su sistema necesita hacer un trabajo bueno de monitorización y alarma después del descubrimiento de la falla se notificará a la persona a la reparación de
un sistema de vigilancia sólo puede identificar problemas y resolver problemas también tienen que
resolver las necesidades de problemas (mala para un nuevo sistema, tendría que instalar el sistema, programas instalados, proporcionar energía para iniciar el servicio, y luego dejar que se unen el planificador, el servicio continúa)
la dirección IP puede cambiar, pero el nombre de host puede ser el mismo Así que necesitamos un servidor DNS interno
este tiempo que necesita para configurar un servidor para alojar toda su entera medio ambiente, cada ordenador que simule el programa, proporcionando qué archivo de configuración, que comienzan los servicios, etc., están definidos en el servidor que es bueno , Puede ser el mismo que su sistema de monitoreo periódicamente, monitoreando si cada uno de sus hosts está en el objetivo deseado. (Si se inicia un servicio y si un determinado archivo de configuración es coherente) Puede forzar a cada uno de sus nodos a instalar el software, copiar el archivo de configuración, iniciar el servicio y

Inserte la descripción de la imagen aquí
monitorear el sistema de configuración si encuentra una falla. Luego configure el monitoreo de reparación,
Si no desea cambiar manualmente el servidor hay una manera sencilla de nube, todos los servidores pueden utilizar máquinas virtuales utilizar máquinas virtuales, fallo de la máquina virtual no importa, simplemente eliminar el problema se produce, siempre y cuando los datos no es local, crear una nueva instancia directamente, continuará
tener Después de instalar la nube, sigue siendo muy problemático instalar el sistema e implementarlo. Al igual que el programa vinculante, existen muchas dependencias, pero si se implementa el programa Python, esta dependencia no es tan fácil de resolver (varios módulos, varios Es necesario instalar la biblioteca y varios pams de terceros. Esta relación de dependencia es muy complicada de resolver. Si no accede a Internet, es probable que algunos paquetes de instalación no se puedan instalar. Para los usuarios que instalan el sistema, esto es un gran desafío. Si hay un problema, solo una aplicación y el paquete del que depende se pueden empaquetar en un archivo de imagen, que se inicia directamente en función de este archivo de imagen, contenedor), por lo que después de que el sistema se esté ejecutando, ya no es una sola operación, sino un programa y un contenedor. Con todas las dependencias se puede resolver
la necesidad de implementación manual de dooker
La nube depende menos de las capacidades de creación de redes subyacentes, por lo que generalmente se recomienda que las pequeñas empresas usen la nube pública
como un paso que falta, cómo empujar su sitio web a la puerta del usuario, CDN, resolución de nombre de dominio en varios lugares, y el servidor obtenido está lejos dirección de reciente servidor de caché

Inserte la descripción de la imagen aquí
si ningún nombre de CDN, CDN iniciará una solicitud de enlace a su sitio, lo cual significa que el sitio pueda tener presión por ciento 8090 CDN acarreos
Inserte la descripción de la imagen aquí
Si CDN colgado, colgó su sala de servidores, Necesita hacer una sala de computadoras en un lugar diferente y hacer redundancia
. Construir todo el sistema basado en doocker, llamado contenedorización, realmente puede reducir la complejidad de
nuestro trabajo de operación y mantenimiento. Cuando hacemos todo el sitio, necesitamos hacer análisis de operación y mantenimiento. Todo el sitio web también Existe un sistema de motor de búsqueda (ELK).
Puede haber un conjunto de datos con una gran cantidad de datos, que debe mostrarse en tiempo real, y algún sistema de procesamiento de flujo de datos grandes (strom)

Inserte la descripción de la imagen aquí
. El sitio oficial de Varnish
Inserte la descripción de la imagen aquí
Para la versión HTTP1.1, hay dos protocolos de almacenamiento en caché, lógica de caché caducada, 2. La condición es que la solicitud, el contenido de caché caducado no irá inmediatamente al servidor de fondo para solicitar datos, primero pregunte al servidor de fondo si se ha modificado, no Se siguen utilizando modificaciones y la memoria caché se actualiza para otro ciclo de vida)
puede reducir en gran medida la presión sobre el servidor de fondo

252 artículos originales publicados · Me gusta6 · Visitas 60,000+

Supongo que te gusta

Origin blog.csdn.net/qq_42227818/article/details/90938729
Recomendado
Clasificación