Xiaobai analiza el esquema de diseño de la arquitectura de sitios web a gran escala

El diseño de la arquitectura de los sitios web grandes es generalmente muy diferente al de los sitios web pequeños, y los puntos técnicos considerados también son diferentes.

Inserte la descripción de la imagen aquí

01 Prefacio


Recientemente, estoy más interesado en la arquitectura de sitios web a gran escala, leí un libro sobre arquitectura y grabé mis pensamientos.

Sabemos que el diseño de software de Taobao, Weibo, 12306, etc. debe ser diferente del diseño de software que usamos habitualmente, porque el primero implica una gran cantidad de almacenamiento de datos, una gran cantidad de accesos de usuarios y un alto tráfico concurrente (acceso instantáneo) . Si uno de los enlaces no se realiza bien, definitivamente afectará el rendimiento general, por lo que habrá un efecto de placa corta.

Lo que hemos visto, como la venta de boletos a tiempo, la compra de pánico doble once, la búsqueda de Weibo, etc., puede conducir al tiempo de inactividad del servidor y la parálisis de la red. Por un lado, la red puede estar congestionada, pero lo más importante, el diseño arquitectónico del sitio web. Puede cumplir con el estado de alta concurrencia y alta disponibilidad (7 * 24 horas). Echemos un vistazo a cómo se implementa paso a paso el diseño arquitectónico de sitios web grandes.

02 Características


Las características que vemos en la superficie son estas dos, con grandes visitas al sitio web y alta concurrencia del sitio web. Además, no nos preocuparemos por otras cosas. Esto es lo que los usuarios pueden pensar, y también son los dos problemas más urgentes que los usuarios quieren resolver. Sin embargo, en opinión de los técnicos de desarrollo, hay muchos factores a tener en cuenta, en general, los siguientes puntos:

  • Alta concurrencia

¿Cuál es la cantidad de sitios web que tiene que soportar una visita instantánea? Por ejemplo, la concurrencia de compra de pánico doble once puede alcanzar el nivel de 100 millones. Tal alta concurrencia es la presión que los sitios web normales simplemente no pueden soportar, no solo la cantidad de servidores, sino también el servidor. Factores como las opciones de diseño.

  • Alta disponibilidad

Al principio, no entendía qué es la alta disponibilidad. En pocas palabras, son 7 * 24 horas para mantener el servicio normal. Debido a que no puede garantizar que los usuarios naveguen por su sitio web en medio de la noche, queremos asegurarnos de que el servicio sea siempre normal. En términos generales, algunos sitios web o sistemas pequeños se actualizarán a las 0 p.m. para restringir el acceso del personal.

  • Almacenamiento masivo de datos

Cuando se trata de sitios web grandes, el usuario promedio es masivo y debe considerar cómo almacenar los datos del usuario y la información de navegación del usuario. Por ejemplo, el WeChat que usamos todos los días, el círculo de amigos y la información de chat publicada todos los días son masivos, almacenados en el clúster de servidores dedicado de Tencent (muchos servidores).

  • Alto factor de seguridad

Es innegable que estamos involucrados en algunas transacciones bancarias, transferencias de WeChat o transferencias de Alipay todos los días. De hecho, si piensa en sus cambios de efectivo, es solo un cambio en los números. Es preocupante pensar en ello. Por ejemplo, su saldo de Alipay es solo un número que yace allí, Alipay ha utilizado el dinero para otros canales, pero su retiro y otras operaciones se programarán de nuevo. Todos estos procesos deben ser seguros.

  • Actualizaciones frecuentes

Debido a que el fondo recopilará cierta información del usuario para mejorar la función del producto y la experiencia del producto, o el usuario espera agregar una determinada función. En este momento, habrá necesidades de los usuarios, la necesidad de actualizar las características del producto. Cada desarrollo de software cumple una función, y luego se desarrolla de forma iterativa continuamente.

  • Desarrollo progresivo

No importa cuán grande sea el sitio web, comienza pequeño, y no importa cuán grande sea el edificio de gran altura hecho de ladrillos y azulejos. El desarrollo progresivo es diferente del desarrollo y diseño de software tradicional. Sin las expectativas completas del software y la previsibilidad de la función como un todo, se trata de mejorar en el desarrollo continuo. A través de la operación continua de productos, adáptese a las necesidades del usuario y adáptese a la tendencia de los tiempos.

03 Evolución del diseño


No sé si ha escuchado la palabra "LAMP". Este es el primer plan de diseño de sitios web, que solo es adecuado para sitios web pequeños. Definitivamente, ahora no es posible. Debido a la pequeña cantidad de datos al principio, un servidor es suficiente para soportar el funcionamiento del sitio web real: el sistema operativo usa Linux, el servidor usa Apache, la base de datos usa mysql y el lenguaje usa PHP para desarrollar.

Después del desarrollo del negocio, el sitio web se ha mejorado y evolucionado continuamente, formando una solución técnica con reglas a seguir. Cada etapa de la experiencia es impulsada por el negocio. Si su sitio web no tiene este tipo de demanda, ¿los programadores participan en estas grandes soluciones de diseño? Como dice el libro, son los negocios los que hacen tecnología, y la carrera hace a las personas.

Etapa de desarrollo inicial

La demanda comercial no es alta, el uso de una configuración simple, software libre y de código abierto puede construir un sistema.

Inserte la descripción de la imagen aquí

Separación de los datos de la aplicación y del servicio.

Con el desarrollo del negocio, el rendimiento del sitio web inevitablemente disminuirá, por lo que en este momento, el servicio puede separarse.

Inserte la descripción de la imagen aquí

Usar caché

De acuerdo con la regla 28, sabemos que el 80% de los usuarios accede al 20% de las funciones del sitio web, por lo que solo necesitamos hacer las funciones que los usuarios más necesitan, luego podemos usar la tecnología de almacenamiento en caché, que puede recopilar rápida y rápidamente los recursos que los usuarios necesitan. Regresar al usuario.

Inserte la descripción de la imagen aquí

Clúster del servidor de aplicaciones

Con el aumento del volumen de su negocio y el aumento continuo de funciones, el procesamiento de un servidor puede no ser capaz de soportarlo. En este caso, pondremos varios servidores para manejar este negocio al mismo tiempo. Al igual que entregar la solicitud de un usuario a varias personas, el rendimiento definitivamente mejorará.

Inserte la descripción de la imagen aquí

Separación de bases de datos de lectura y escritura

No solo a nivel de aplicación, el funcionamiento de los datos también es importante. Sabemos que los datos se leen o se escriben. En términos generales, hay más operaciones de lectura por parte de los usuarios. Por lo tanto, separamos la lectura y escritura de la base de datos, una base de datos proporciona datos y la otra escribe datos del usuario, y luego realiza la sincronización de datos (copia de seguridad maestro-esclavo) en el medio.

Inserte la descripción de la imagen aquí

Balanceo de carga y CDN

Para los sitios web con un volumen de negocios relativamente grande, como los que se extienden por todo el país o incluso en todo el mundo, debe usar CDN. Debido a que los usuarios en el sur acceden a los servidores en el norte, habrá una demora en el medio; o los usuarios en los Estados Unidos visitan China, la demora será aún mayor. CDN es una red de distribución de contenido, el servidor más cercano al usuario devolverá directamente los datos, que es mucho más rápido.

Inserte la descripción de la imagen aquí

También hay equilibrio de carga. Los datos agregados a la CDN caducan. Cuando los usuarios necesitan acceder al centro de datos, primero van al servidor de equilibrio de carga. También hay un caché. Si no hay acierto, su solicitud se distribuirá al servidor de aplicaciones con menos presión. En general, el principio de CDN y el servidor de equilibrio de carga es utilizar la tecnología de almacenamiento en caché.

Sistema de archivos distribuido y sistema de base de datos distribuida

Distribuido en realidad está dividiendo el almacenamiento de datos original, almacenando los datos de diferentes empresas en diferentes servidores, reduciendo la presión sobre los servidores restantes. Por ejemplo, puede almacenar los datos del pedido del usuario en el servidor de la base de datos A y la información del usuario en el servidor de la base de datos B.

Inserte la descripción de la imagen aquí

NoSQL y motores de búsqueda

El motor de búsqueda es hacer frente a la función de búsqueda del sitio web.

Inserte la descripción de la imagen aquí

División comercial

Divida un sitio web en múltiples aplicaciones diferentes, y cada aplicación se implementa y mantiene de forma independiente. Por ejemplo, puede separar una función y proporcionar una interfaz para incrustar en el sitio web. El procesamiento lógico se encuentra en otro servidor.

Inserte la descripción de la imagen aquí

Servicio distribuido

Extraiga el negocio público, y luego impleméntelo de manera independiente, y use el servicio distribuido para llamar al servicio común para completar la operación comercial específica.

Inserte la descripción de la imagen aquí

04 Resumen

Podemos ver las compañías actuales de Internet. Solo hay unas pocas compañías de nivel BAT. Después de todo, la mayoría de ellas son pequeñas empresas y están desarrollando gradualmente sus propios negocios. Es imposible para él tener tiempo y energía para investigar y desarrollarse en todos los campos. Pero la empresa promedio tendrá su propio punto profesional, siempre que desarrolle su propio negocio y sirva bien a nuestros usuarios, a veces no es beneficioso participar en muchas campanas y silbatos.

Lo más importante que debe hacer un sitio web pequeño es proporcionar a los usuarios buenos servicios para crear valor, obtener la aprobación del usuario, sobrevivir y crecer salvajemente. ——Li Zhihui "Arquitectura técnica de grandes sitios web"

Algunas empresas quieren transformar su arquitectura porque han visto muchas tecnologías nuevas recientemente, tecnología para tecnología. A veces, su punto de partida es bueno, pero también puede traer malos resultados, y no sigue sus propias tendencias comerciales. Además, no imite ciegamente las soluciones técnicas de grandes empresas, sino desarrolle su propio negocio independiente y desarrolle su propia tecnología independiente.

En general, cada empresa ahora tiene su propio conjunto de soluciones técnicas, ya sea que refactorice sus soluciones técnicas o cambie la distribución de su servidor depende de si tiene esta necesidad. Sin embargo, el desarrollo de la tecnología de Internet se está volviendo cada vez más maduro. Puede comprar algunos recursos para el pago, como Alibaba Cloud y Tencent Cloud, etc., y la tecnología es estable y la calidad ha terminado. Después de todo, es una gran empresa. La cantidad de recursos de alta calidad que necesita depende de cuánto dinero dona. Es muy simple y no tiene preocupaciones (ya lo resolvió por usted).

Finalmente, recomiendo este libro "Arquitectura técnica de sitios web grandes: principios básicos y análisis de casos". El autor de este libro es muy bueno en tecnología y único en análisis. Vale la pena leerlo en profundidad.

Artículo de referencia

  • Li Zhihui "Arquitectura técnica de grandes sitios web: principios básicos y análisis de casos"

Inserte la descripción de la imagen aquí

Publicado 57 artículos originales · ganado elogios 6 · vistas 6419

Supongo que te gusta

Origin blog.csdn.net/weixin_42724176/article/details/105012750
Recomendado
Clasificación