Cómo mejorar el rendimiento del acceso simultáneo al sitio web
1. HTML estático
De hecho, todo el mundo sabe que la más eficiente y la que menos se consume es la página HTML puramente estática, por lo que hacemos todo lo posible para que las páginas de nuestro sitio web se utilicen. Para lograr esto a través de páginas estáticas, este método más simple
es en realidad también el método más efectivo. Sin embargo, para los sitios web con una gran cantidad de contenido y actualizaciones frecuentes, no podemos implementarlos todos manualmente uno por uno, por lo que apareció nuestro sistema de publicación de información CMS común, como los canales de noticias de varios portales que visitamos con frecuencia, e incluso sus Otros. Los canales se administran e implementan a través del sistema de publicación de información. El sistema de publicación de información puede realizar la entrada de información más simple y generar automáticamente páginas estáticas. También puede tener administración de canales, administración de permisos y captura automática. Tener un CMS eficiente y manejable.
Además de los portales y los sitios web de publicación de información, para los sitios web de tipo comunitario con altos requisitos de interactividad, ser lo más estáticos posible también es un medio necesario para mejorar el rendimiento en el que se pueden procesar las publicaciones y artículos de la comunidad. La estatización y la reestatización en tiempo real cuando hay actualizaciones también son estrategias ampliamente utilizadas. La mezcolanza de Mop utiliza esta estrategia, al igual que la comunidad NetEase, etc.
Al mismo tiempo, la estatización HTML también es un método utilizado por algunas estrategias de almacenamiento en caché. Para las aplicaciones en el sistema que utilizan con frecuencia consultas de bases de datos pero tienen actualizaciones de contenido muy pequeñas, puede considerar usar la estática HTML.
Considere hacer que esta parte del contenido sea estática durante las actualizaciones en segundo plano para evitar una gran cantidad de solicitudes de acceso a la base de datos.
2. Separación del servidor de imágenes
Como todos sabemos, para los servidores web, ya sea Apache, IIS u otros contenedores, las imágenes consumen la mayor cantidad de recursos, por lo que es necesario para nosotros. Separar imágenes Separar imágenes de páginas es una estrategia que básicamente adoptan los sitios web grandes. Todos tienen servidores de imágenes independientes o incluso múltiples. Una arquitectura de este tipo puede reducir la presión sobre el sistema del servidor que proporciona solicitudes de acceso a la página y puede garantizar que el sistema no falle debido a problemas de imagen.
En servidores de aplicaciones y servidores de imágenes, se pueden realizar diferentes optimizaciones de configuración. Por ejemplo, Apache puede admitir la menor cantidad posible de LoadModules al configurar ContentType para garantizar un mayor consumo del sistema y eficiencia de ejecución.
3. Clúster de bases de datos, hash de tablas de bases de datos
Los sitios web grandes tienen aplicaciones complejas y estas aplicaciones deben utilizar bases de datos cuando se enfrentan a una gran cantidad de accesos, el cuello de botella de la base de datos es. muy grande pronto será evidente que una base de datos pronto no podrá satisfacer la aplicación, por lo que debemos utilizar agrupación de bases de datos o hash de tablas de bases de datos.
En términos de clústeres de bases de datos, muchas bases de datos tienen sus propias soluciones. Oracle, Sybase, etc. tienen buenas soluciones. El maestro/esclavo comúnmente utilizado proporcionado por MySQL también es una solución similar. usas?DB, solo consulta la solución correspondiente para implementarlo.
El grupo de bases de datos mencionado anteriormente estará limitado por el tipo de base de datos en términos de arquitectura, costo y escalabilidad, por lo que debemos considerar mejorar la arquitectura del sistema desde la perspectiva de la aplicación. solución más utilizada y eficaz.
Instalamos módulos comerciales y de aplicación o funcionales en la aplicación para separar la base de datos. Diferentes módulos corresponden a diferentes bases de datos o tablas, y luego usamos ciertas estrategias para crear bases de datos más pequeñas para ciertas páginas o funciones, como Hashing. como tabla de usuarios, aplica un hash a la tabla según el ID del usuario, lo que puede mejorar el rendimiento del sistema a bajo costo y tener una buena escalabilidad.
El foro de sohu adopta dicha estructura, que separa los usuarios, configuraciones, publicaciones y otra información del foro en una base de datos, y luego agrupa las publicaciones y los usuarios en bases de datos y tablas según secciones e ID. Puede ser una configuración simple en el archivo de configuración que permite al sistema agregar una base de datos de bajo costo en cualquier momento para complementar el rendimiento del sistema.
4. Almacenamiento en caché
Todos los técnicos se han encontrado con la palabra caché y se utiliza en muchos lugares. El almacenamiento en caché en la arquitectura y el desarrollo de sitios web también es muy importante. Aquí primero hablamos de los dos cachés más básicos. El almacenamiento en caché avanzado y distribuido se describe más adelante.
En cuanto al almacenamiento en caché arquitectónico, cualquiera que esté familiarizado con Apache sabrá que Apache proporciona su propio módulo de almacenamiento en caché y también puede utilizar el módulo Squid adicional para el almacenamiento en caché. Ambos métodos pueden mejorar eficazmente la capacidad de respuesta de Access. .
Caché en el desarrollo de programas de sitios web, memoria proporcionada en Linux
Caché es una interfaz de caché de uso común que se puede utilizar en el desarrollo web. Por ejemplo, se puede llamar a MemoryCache cuando se desarrolla en Java. Almacenar en caché y comunicarse con algunos datos. Algunas comunidades grandes utilizan esta arquitectura. Además, cuando se utiliza el desarrollo de lenguajes web, cada lenguaje básicamente tiene su propio módulo y método de caché. PHP tiene el módulo de caché de Pear y Java tiene más
. No estoy muy familiarizado con .net, creo que existe. definitivamente lo es.
5. Duplicación
La duplicación es un método que suelen utilizar los sitios web grandes para mejorar el rendimiento y la seguridad de los datos. La tecnología de duplicación puede resolver el problema del acceso de los usuarios causado por diferentes proveedores de acceso a la red y regiones. Las diferencias de velocidad, como la diferencia entre ChinaNet y
EduNet, han llevado a muchos sitios web a crear sitios espejo dentro de la red educativa, con datos actualizados periódicamente o en tiempo real. En términos de la tecnología detallada de duplicación, no entraré en demasiados detalles aquí. Hay muchas arquitecturas y productos de soluciones profesionales disponibles para elegir. También existen formas económicas de implementarlo a través de software, como rsync y otras herramientas en Linux.
6. Equilibrio de carga
El equilibrio de carga será una solución de alto nivel para que sitios web grandes resuelvan el acceso con alta carga y una gran cantidad de solicitudes simultáneas.
La tecnología de equilibrio de carga se ha desarrollado durante muchos años y hay muchos proveedores de servicios profesionales y productos para elegir. Personalmente he encontrado algunas soluciones, y dos de ellas pueden usarse como referencia.
(1) Conmutación de hardware de cuatro capas
La conmutación de capa 4 utiliza la información del encabezado de los paquetes de información de la tercera y cuarta capa para identificar el flujo de negocios según la aplicación. intervalo y convierta todo el intervalo. El flujo de negocios del segmento se asigna al servidor de aplicaciones apropiado para su procesamiento.
La función de conmutación de cuarta capa es como una IP virtual, que apunta al servidor físico. Los servicios que transmite obedecen a una variedad de protocolos, incluidos HTTP, FTP, NFS, Telnet u otros protocolos. Estos servicios requieren complejos algoritmos de equilibrio de carga basados en servidores físicos. En el mundo IP, el tipo de servicio está determinado por la dirección del puerto TCP o UDP del terminal. El rango de aplicación en la conmutación de capa 4 está determinado por las direcciones IP de origen y del terminal, los puertos TCP y UDP.
En el campo de los productos de conmutación de cuatro capas de hardware, hay algunos productos bien conocidos para elegir, como Alteon, F5, etc. Estos productos son caros, pero valen la pena y pueden Proporcionan un excelente rendimiento y flexibilidad de gestión. "Yahoo China" originalmente tenía cerca de 2000 servidores y solo usaba tres o cuatro Alteons para hacerlo.
(2) Conmutación de cuatro capas por software
Después de que todos conocieron el principio del conmutador de cuatro capas por hardware, surgió la conmutación por software de cuatro capas basada en el modelo OSI. way La solución implementa el mismo principio, pero el rendimiento es ligeramente peor. Sin embargo, todavía es fácil soportar cierta presión. Algunas personas dicen que el método de implementación del software es en realidad más flexible y que la potencia de procesamiento depende completamente de su familiaridad con la configuración.
Podemos utilizar el LVS de uso común en Linux para resolver el cambio de software de cuatro capas. LVS es el servidor virtual de Linux
Proporciona una solución de respuesta ante desastres en tiempo real. la línea de latidos, mejorando La robustez del sistema también proporciona funciones de administración y configuración VIP virtuales flexibles, que pueden cumplir con una variedad de requisitos de aplicaciones al mismo tiempo, lo cual es esencial para los sistemas distribuidos.
Una estrategia típica de equilibrio de carga es construir un clúster Squid basado en conmutación de cuatro capas de software o hardware. Esta idea es adoptada por muchos sitios web grandes, incluidos los motores de búsqueda. Esta arquitectura es de bajo costo. Gracias a su rendimiento y gran escalabilidad, es muy fácil agregar o eliminar nodos a la arquitectura en cualquier momento.
Para sitios web grandes, cada uno de los métodos mencionados anteriormente se puede utilizar al mismo tiempo. La introducción aquí es relativamente simple. Muchos detalles en el proceso de implementación específico aún necesitan que todos se familiaricen y comprendan gradualmente. A veces, una pequeña configuración de parámetros de Squid o de Apache puede tener un gran impacto en el rendimiento del sistema.
7. Lo último: tecnología de aceleración CDN
¿Qué es CDN?
El nombre completo de CDN es red de distribución de contenidos. Su propósito es agregar una nueva capa de arquitectura de red a la Internet existente para publicar el contenido del sitio web en el "borde" de la red más cercano al usuario, de modo que el usuario pueda obtener el contenido requerido cerca y mejorar la velocidad de respuesta del acceso del usuario al sitio web.
CDN se diferencia de la duplicación porque es más inteligente que la duplicación, o podemos usar esta metáfora: CDN = duplicación, almacenamiento en caché y desvío de tráfico más inteligentes. Por tanto, CDN puede mejorar significativamente la eficiencia del flujo de información en la red de Internet. Técnicamente, resolveremos de manera integral los problemas causados por el pequeño ancho de banda de la red, las grandes visitas de los usuarios y la distribución desigual de los puntos de venta, y mejoraremos la velocidad de respuesta para que los usuarios accedan al sitio web.
Características del tipo de CDN
La implementación de CDN se divide en tres categorías: duplicación, almacenamiento en caché y líneas dedicadas.
Mirror Site es el más común, que permite publicar contenido directamente y es adecuado para la sincronización de datos estáticos y cuasi dinámicos. Sin embargo, el costo de comprar y mantener nuevos servidores es relativamente alto, y se deben instalar servidores espejo en varias regiones y se deben desplegar técnicos profesionales para la administración y el mantenimiento. Para sitios web grandes, el coste del ancho de banda para las actualizaciones también aumenta significativamente.
Caché, de bajo coste, apto para contenidos estáticos. Las estadísticas de Internet muestran que más del 80% de los usuarios visitan con frecuencia el contenido del 20% de los sitios web. Según esta regla, el servidor de caché puede manejar la mayoría de las solicitudes estáticas de los clientes, mientras que el servidor original solo necesita procesar alrededor de 20 no. -solicitudes almacenadas en caché y solicitudes dinámicas, lo que acelera enormemente el tiempo de respuesta de las solicitudes de los clientes y reduce la carga en el servidor original.
Los servicios CDN generalmente colocan servidores de caché en nodos clave en todo el país.
La línea dedicada permite a los usuarios acceder directamente a la fuente de datos, lo que permite la sincronización dinámica de los datos.
Instancias de CDN
Por ejemplo, cuando un usuario accede a un sitio web, el sitio web utilizará tecnología de equilibrio de carga global para dirigir el acceso del usuario al servidor de trabajo normal más cercano al usuario. El servidor de caché responde directamente a la solicitud del usuario.
Cuando un usuario visita un sitio web que ha utilizado un servicio CDN, la mayor diferencia entre el proceso de resolución y el método de resolución tradicional es que el servidor de nombres de dominio autorizado del sitio web no responde al dominio local de una manera tradicional. método de sondeo
Solicitud de resolución de DNS, pero considera completamente la ubicación donde el usuario inicia la solicitud y las condiciones de la red en ese momento, para decidir dirigir la solicitud del usuario al servidor de caché de nodo más cercano al usuario. y tiene una carga relativamente ligera.
Utilizando los datos combinados del algoritmo de posicionamiento del usuario y el algoritmo de detección del estado del servidor, la solicitud del usuario se puede dirigir al servidor de caché distribuido en el "borde" de la red para garantizar que el acceso del usuario pueda ser respuesta más oportuna y confiable.
Dado que el servidor de caché del nodo CDN distribuido en el borde de la red responde directamente a una gran cantidad de visitas de usuarios, esto no solo mejora la calidad del acceso de los usuarios, sino que también reduce efectivamente la presión de carga sobre el servidor de origen.