La historia de desarrollo de la estructura B / S

La arquitectura del sistema de un sitio web grande y maduro (como Taobao, Jingdong, etc.) no está diseñada para tener un alto rendimiento completo, alta disponibilidad, seguridad y otras características. Siempre evoluciona y mejora con el aumento del número de usuarios y la expansión de las funciones comerciales. Durante este proceso, se han producido grandes cambios en el modelo de desarrollo, la arquitectura técnica y las ideas de diseño, incluso el personal técnico ha crecido de unas pocas personas a un departamento o incluso a una línea de productos. Por lo tanto, la arquitectura de sistema madura se perfecciona con la expansión comercial, y no se logra de la noche a la mañana; los sistemas con diferentes características comerciales tendrán sus propios enfoques, como Taobao, para resolver la búsqueda, el orden y el pago de información masiva de productos, como Tencent Para resolver la transmisión de mensajes en tiempo real de cientos de millones de usuarios, Baidu tiene que lidiar con solicitudes de búsqueda masivas, todas ellas tienen sus propias características comerciales y las arquitecturas del sistema también son diferentes. Sin embargo, también podemos descubrir las tecnologías comunes a partir de estos diferentes fondos de sitios web. Estas tecnologías y métodos pueden ser ampliamente utilizados en la arquitectura de los sistemas de sitios web a gran escala. Vamos a entender estas tecnologías introduciendo la evolución de los sistemas de sitios web a gran escala. Y medios.
1. La arquitectura inicial del sitio

En la arquitectura inicial , las aplicaciones, las bases de datos y los archivos se implementan en un servidor , como se muestra en la figura:

2. Separación
de aplicaciones, datos y archivos Con la expansión del negocio, un servidor ya no puede cumplir con los requisitos de rendimiento. Por lo tanto, implemente aplicaciones, bases de datos y archivos en servidores separados, y configure hardware diferente de acuerdo con el propósito del servidor para lograr El mejor efecto de rendimiento.

En tercer lugar, utilice la memoria caché para mejorar el rendimiento del sitio web.
Si bien el hardware optimiza el rendimiento, también optimiza el rendimiento a través del software. En la mayoría de los sistemas del sitio web, la tecnología de memoria caché se utiliza para mejorar el rendimiento del sistema. El uso de la memoria caché se debe principalmente a la presencia de datos activos. Algunas visitas al sitio web siguen el principio 28 (es decir, el 80% de las solicitudes de acceso, que finalmente recaen en el 20% de los datos), por lo que podemos almacenar en caché los datos activos, reducir la ruta de acceso de estos datos y mejorar la experiencia del usuario.

Las formas comunes de implementar caché son caché local y caché distribuido. Por supuesto, hay CDN, proxy inverso, etc., que se discutirán más adelante. El caché local, como su nombre lo indica, es almacenar en caché los datos localmente en el servidor de aplicaciones, que pueden almacenarse en la memoria o en archivos. OSCache es un componente de caché local de uso común. Las características de la memoria caché local son rápidas, pero debido al espacio local limitado, la cantidad de datos en caché también es limitada. Las características del caché distribuido son que puede almacenar en caché datos masivos y es muy fácil de expandir. A menudo se usa en sitios web de portal. La velocidad no es tan rápida como el caché local. Los cachés distribuidos comúnmente utilizados son Memcached y Redis.
En cuarto lugar, use clústeres para mejorar el rendimiento de
los servidores de aplicaciones. Los servidores de aplicaciones, dado que la entrada al sitio web soportará una gran cantidad de solicitudes, a menudo compartimos la cantidad de solicitudes a través del clúster de servidores de aplicaciones. Se implementa un servidor de equilibrio de carga frente al servidor de aplicaciones para programar las solicitudes de los usuarios y distribuir las solicitudes a múltiples nodos del servidor de aplicaciones de acuerdo con la estrategia de distribución.

El hardware de tecnología de equilibrio de carga de uso común es F5, el precio es relativamente caro y el software es LVS, Nginx, HAProxy. LVS es un equilibrio de carga de cuatro capas, seleccione el servidor interno de acuerdo con la dirección y el puerto de destino, Nginx es un equilibrio de carga de siete capas y HAProxy admite el equilibrio de carga de cuatro capas y siete capas, puede elegir el servidor interno de acuerdo con el contenido del mensaje, por lo que la ruta de distribución de LVS es mejor que Nginx y HAProxy tiene un mayor rendimiento, mientras que Nginx y HAProxy son más configurables, por ejemplo, se pueden usar para la separación dinámica y estática (según las características del mensaje de solicitud, elija un servidor de recursos estáticos o un servidor de aplicaciones).
Quinto, separación de lectura y escritura de la base de datos y subtabla de subbibliotecas
A medida que aumenta el número de usuarios, la base de datos se convierte en el mayor cuello de botella. Los métodos comunes para mejorar el rendimiento de la base de datos son la separación y subtabla de lectura y escritura. Y escriba la biblioteca para lograr la sincronización de datos a través de las funciones principales y en espera. La sub-biblioteca y la sub-tabla se dividen en segmentación horizontal y vertical, y el cambio horizontal consiste en dividir una tabla de base de datos grande, como una tabla de usuario. La segmentación vertical es cambiar de acuerdo con diferentes negocios, como el negocio del usuario, las tablas relacionadas con el negocio de productos básicos se colocan en diferentes bases de datos.

6. Use CDN y proxy inverso para mejorar el rendimiento del sitio web.
Si todos nuestros servidores están implementados en una sala de computadoras en Chengdu, el acceso es más rápido para los usuarios en Sichuan, pero más lento para los usuarios en Beijing. Esto se debe a que Sichuan y Beijing pertenece a diferentes regiones desarrolladas de China Telecom y China Unicom respectivamente. Los usuarios de Beijing necesitan acceder a los servidores de Internet a través de un largo camino a través de enrutadores de Internet. El camino de retorno es el mismo, por lo que el tiempo de transmisión de datos es relativamente largo. Para esta situación, el CDN se usa a menudo para resolver el problema: el CDN almacena en caché el contenido de datos en la sala de computadoras del operador, y el usuario obtiene primero los datos del operador más cercano al acceder, lo que reduce en gran medida la ruta de acceso a la red. Los operadores de CDN más profesionales incluyen Lanxun y Wangsu.
El proxy inverso se implementa en la sala de computadoras del sitio web. Cuando llega la solicitud del usuario, primero se accede al servidor proxy inverso. El servidor proxy inverso devuelve los datos almacenados en caché al usuario. Si no hay datos almacenados en caché, el servidor de aplicaciones continuará obteniéndolo. También reduce el costo de adquirir datos. El proxy inverso tiene Squid, Nginx.

Siete, use el sistema de archivos distribuido

Los usuarios aumentan día a día, el volumen de negocios aumenta, se generan más y más archivos y un solo servidor de archivos ya no puede satisfacer la demanda. Necesita soporte de sistema de archivos distribuido. El sistema de archivos distribuidos comúnmente utilizado tiene NFS.

Ocho, utilizando NoSql y el motor de búsqueda
Para la consulta de datos masiva, utilizamos la base de datos nosql más el motor de búsqueda para lograr un mejor rendimiento. No todos los datos deben colocarse en datos relacionales. Los NOSQL más utilizados son mongodb y redis, y el motor de búsqueda es lucene.

Nueve, divida el negocio del servidor de aplicaciones
A medida que el negocio se expande aún más, la aplicación se vuelve muy hinchada, entonces necesitamos dividir el negocio de la aplicación, como Baidu dividido en noticias, páginas web, imágenes y otros servicios. Cada aplicación comercial es responsable de operaciones comerciales relativamente independientes. Las empresas se comunican a través de mensajes o comparten bases de datos.

Diez, crear servicios distribuidos
En este momento, encontramos que cada aplicación comercial utilizará algunos servicios comerciales básicos, como servicios de usuario, servicios de pedidos, servicios de pago, servicios de seguridad, estos servicios son los elementos básicos para respaldar cada aplicación comercial. Extrajimos estos servicios y construimos un servicio distribuido utilizando un marco de servicio parcial. Dubo de Taobao es una buena opción.

Resumen
La estructura de los sitios web grandes se mejora continuamente de acuerdo con las necesidades del negocio, y se realizarán diseños y consideraciones específicos de acuerdo con las diferentes características del negocio.

51 artículos originales publicados · Me gusta 4 · Visitante 7893

Supongo que te gusta

Origin blog.csdn.net/u012174809/article/details/103070733
Recomendado
Clasificación