Red de conocimiento informático - Material del sitio web - ¿Qué experiencia tiene en el desarrollo de sitios web de alta concurrencia y gran escala?

¿Qué experiencia tiene en el desarrollo de sitios web de alta concurrencia y gran escala?

Solución de sitio web de alta concurrencia

Se puede implementar un sitio web pequeño utilizando la página estática HTML más simple, con algunas imágenes para lograr un efecto embellecedor. Todas las páginas se almacenan en Debajo de un directorio, como. un sitio web tiene una arquitectura de sistema simple y requisitos de rendimiento. Con el continuo enriquecimiento de los negocios de Internet, las tecnologías relacionadas con los sitios web se han subdividido en aspectos muy finos después de años de desarrollo. Especialmente para los sitios web grandes, las tecnologías utilizadas cubren una amplia gama de aspectos, desde hardware hasta software, lenguajes de programación, bases de datos y servidores web. , firewalls y otros campos tienen requisitos muy altos, que ya no son comparables a los sitios web estáticos HTML simples originales.

Cuando los sitios web grandes, como los portales, enfrentan una gran cantidad de visitas de usuarios y altas solicitudes simultáneas, las soluciones básicas se centran en los siguientes enlaces: uso de servidores de alto rendimiento, bases de datos de alto rendimiento y alta eficiencia. Lenguajes de programación y contenedores web de alto rendimiento. Estas soluciones suponen en cierta medida una mayor inversión.

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 el 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. canales, todo a través de Es administrado e implementado por el 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 funciones como administración de canales, administración de permisos y rastreo automático. sitio web grande, tiene un conjunto eficiente de , un CMS manejable es esencial.

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 medio 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. Por ejemplo, la información de configuración pública del foro en el foro puede ser administrada por los foros principales actuales y almacenada en la base de datos. De hecho, el programa front-end llama a una gran cantidad de esta información, pero la frecuencia de actualización es. muy pequeño. Puede considerar actualizar esta parte del contenido en segundo plano. Cuando está estático, esto evita 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 la agrupación de bases de datos o el 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 topado 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. .

Para el almacenamiento en caché en el desarrollo de programas de sitios web, Memory Cache proporcionado en Linux es una interfaz de almacenamiento en caché de uso común que se puede utilizar en el desarrollo web. Por ejemplo, cuando se desarrolla en Java, puede llamar a MemoryCache para almacenar en caché y comunicar algo. datos ***Compartir, 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 aún más. No estoy muy familiarizado con .net, pero creo que debe estar ahí.

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 los 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 2.000 servidores, pero sólo usó 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 comúnmente utilizado en Linux para resolver la conmutación de software de cuatro capas. LVS es un servidor virtual de Linux. Proporciona una solución de respuesta ante desastres en tiempo real basada en la línea de latidos, que mejora la calidad. robustez del sistema y al mismo tiempo puede Proporciona funciones de administración y configuración VIP virtuales flexibles que pueden cumplir con múltiples 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 y alta. 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.

Lo último: tecnología de aceleración CDN

El nombre completo de CDN es red de distribución de contenido. 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 de los usuarios que acceden al sitio web.

Características de 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.

Almacenamiento en 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 manejar alrededor del 20% de las que no. -Las solicitudes de caché y las solicitudes dinámicas aceleran enormemente el tiempo de respuesta de las solicitudes de los clientes y reducen 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 a las solicitudes de resolución DNS locales en un método de sondeo tradicional, pero considere 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 que esté más cerca del usuario y que tenga una carga relativamente liviana.

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.