Descripción general de la arquitectura de Internet a gran escala, obtenga conocimientos después de leer el artículo
1. Características de los sistemas de redes a gran escala
2. Evolución de la arquitectura de redes a gran escala
2.1 Arquitectura inicial
Problemas: en las primeras etapas del funcionamiento del sitio web, hay menos usuarios que visitan el sitio web y el servidor es más que suficiente.
Características: Todos los recursos como aplicaciones, bases de datos, archivos, etc. están en un solo servidor.
Nota: Generalmente el sistema operativo del servidor es Linux, la aplicación se desarrolla usando PHP y se implementa en Apache, y la base de datos usa Mysql, comúnmente conocido como LAMP. El desarrollo del sistema puede comenzar reuniendo una variedad de software gratuito de código abierto y servidores económicos.
2.2. Separación de servicios de aplicaciones y servicios de datos
Problema: Cada vez más usuarios acceden al sistema, lo que hace que el rendimiento del sistema empeore cada vez más. El espacio de almacenamiento es cada vez más grande y un servidor no es suficiente para soportarlo.
Características: El servidor de aplicaciones, el servidor de bases de datos y el servidor de archivos se implementan de forma independiente.
Nota: Estos tres servidores tienen diferentes requisitos de rendimiento: el servidor de aplicaciones necesita procesar una gran cantidad de lógica empresarial, por lo que necesita una CPU más rápida y potente; el servidor de bases de datos necesita una recuperación rápida del disco y de los datos; almacenamiento en caché, por lo que necesita discos duros más rápidos y memoria más grande. Los servidores de archivos necesitan almacenar grandes cantidades de archivos, por lo que se necesitan discos duros más grandes.
2.3. Utilice el almacenamiento en caché para mejorar el rendimiento.
Problema: A medida que aumenta el número de usuarios, la presión sobre la base de datos es demasiado alta y el acceso se retrasa.
Características: Porque las visitas al sitio web siguen la misma regla 80/20 que la distribución de la riqueza: el 80% de las visitas comerciales se concentran en el 20% de los datos. Almacenar en caché una pequeña porción de datos en una base de datos con acceso relativamente concentrado en la memoria puede reducir la cantidad de accesos a la base de datos y reducir la presión de acceso a la base de datos.
Nota: Hay dos tipos de caché: caché local en el servidor de aplicaciones y caché remoto en el servidor de caché distribuido. Es más rápido acceder al caché local, pero la cantidad de datos almacenados en caché es limitada y compite con la aplicación por la memoria. Los cachés distribuidos se pueden agrupar, lo que en teoría permite que los servicios de almacenamiento en caché no estén limitados por la capacidad de la memoria.
2.4. Uso de clústeres de servidores de aplicaciones
Problema: el uso de caché puede aliviar eficazmente la presión de acceso a la base de datos. Sin embargo, un único servidor de aplicaciones puede manejar un número limitado de conexiones de solicitud, lo que puede convertirse en un cuello de botella durante los períodos de mayor acceso.
Características: Varios servidores brindan servicios al mundo exterior al mismo tiempo mediante el equilibrio de carga para resolver el problema de la potencia de procesamiento y el espacio de almacenamiento insuficientes de un solo servidor.
Nota: El uso de clústeres es un método común para que los sistemas resuelvan problemas de alta concurrencia y datos masivos. Al agregar recursos al clúster, se mejoran las capacidades de procesamiento concurrente del sistema, de modo que la presión de carga del servidor ya no se convierte en el cuello de botella de todo el sistema.
2.5. Separación de lectura y escritura de la base de datos
Problema: después de que el sitio web utiliza el almacenamiento en caché, no se puede acceder a la mayoría de las operaciones de lectura de datos a través de la base de datos, pero todavía quedan algunas operaciones de lectura y todo. escribe La operación requiere acceso a la base de datos. Una vez que los usuarios del sitio web alcanzan una cierta escala, la base de datos se convierte en el cuello de botella del sitio web debido a una presión de carga excesiva. Cuando el número de usuarios del sitio web alcanza una cierta escala, la base de datos se convertirá en el cuello de botella del sitio web debido a la alta presión de carga.
Características: la mayoría de las bases de datos convencionales proporcionan funcionalidad de espera activa maestro-esclavo. Al configurar una relación maestro-esclavo entre dos bases de datos, puede sincronizar las actualizaciones de datos de un servidor de bases de datos a otro. El sitio web utiliza la función de espera activa maestro-esclavo de la base de datos para realizar la separación de lectura y escritura de la base de datos, mejorando así la presión de carga de la base de datos.
Descripción: cuando el servidor de aplicaciones realiza una operación de escritura, accede a la base de datos maestra y la base de datos maestra sincroniza las actualizaciones de datos con la base de datos esclava a través del mecanismo de replicación maestro-esclavo. De esta forma, cuando el servidor de aplicaciones realiza una operación de lectura, accede a la base de datos esclava para obtener los datos.
Para facilitar la aplicación de lectura y escritura separadas para acceder a la base de datos, generalmente se usa un módulo de acceso a datos especial en el lado del servidor de aplicaciones para que la separación de lectura y escritura de la base de datos sea transparente para la aplicación.
2.6. Proxy inverso y aceleración CDN
Problema: el entorno de red de China es complejo y los usuarios de diferentes regiones tienen velocidades muy diferentes al acceder a sitios web.
Función: Utilice CDN y proxy inverso para acelerar el acceso del sistema a recursos estáticos.
Nota: Los principios básicos de CDN y proxy inverso son el almacenamiento en caché. La diferencia es que CDN se implementa en la sala de computadoras del proveedor de red. Cuando el usuario solicita servicios del sitio web, se puede obtener del proveedor de red más cercano. datos de la sala de computadoras y el proxy inverso se implementa en la sala de computadoras central del sitio web. Cuando la solicitud del usuario llega a la sala de computadoras centrales, el primer servidor visitado será el servidor proxy inverso. Si el servidor proxy inverso almacena en caché los recursos solicitados por el usuario, los devolverá directamente al usuario.
2.7. Sistema de archivos distribuido y base de datos distribuida
Problema: con el crecimiento continuo del negocio de sitios web a gran escala, la lectura y escritura de bases de datos aún se pueden separar de un servidor a dos servidores. No satisface la demanda.
Características: la base de datos utiliza una base de datos distribuida y el sistema de archivos utiliza un sistema de archivos distribuido.
Nota: La base de datos distribuida es el último método de división de la base de datos y solo se utiliza cuando la escala de datos de una sola tabla es muy grande. Cuando no se utiliza como último recurso, el método de división de bases de datos más común es la división de negocios, es decir, implementar diferentes bases de datos comerciales en diferentes servidores físicos.
2.8. Uso de NoSQL y motores de búsqueda
Problema: a medida que el negocio de los sitios web se vuelve cada vez más complejo, la demanda de almacenamiento y recuperación de datos también aumenta.
Función: El sistema introduce base de datos NoSQL y motor de búsqueda.
Descripción: Las bases de datos NoSQL y los motores de búsqueda admiten mejor capacidades distribuidas escalables. El servidor de aplicaciones accede a varios datos a través de un módulo de acceso a datos unificado, lo que reduce los problemas de las aplicaciones que administran múltiples fuentes de datos.
2.9. División del negocio
Problema: Los escenarios comerciales de los grandes sitios web son cada vez más complejos y se dividen en múltiples líneas de productos.
Características: Adopte un enfoque de divide y vencerás para dividir todo el negocio del sitio web en diferentes líneas de productos. Divida y transforme el sistema según la empresa e implemente servidores de aplicaciones por separado según la diferenciación empresarial.
Nota: La relación entre aplicaciones se puede establecer a través de hipervínculos o los datos se pueden distribuir a través de colas de mensajes. Por supuesto, la mayoría de las veces, los sistemas completos relacionados se forman accediendo al mismo sistema de almacenamiento de datos.
División vertical: dividir una aplicación grande en varias aplicaciones más pequeñas, o si el nuevo negocio es más independiente, diseñarla e implementarla como una aplicación web independiente. La división vertical es relativamente sencilla. Al separar el negocio, se pueden crear negocios menos relevantes.
División horizontal: dividir los servicios reutilizables e implementarlos de forma independiente como servicios distribuidos. Las nuevas empresas solo necesitan llamar a estos servicios distribuidos para identificar servicios reutilizables, diseñar interfaces de servicios y estandarizar las dependencias de los servicios.
2.10. Servicios distribuidos
Problema: A medida que las divisiones de negocio se hacen cada vez más pequeñas, los sistemas de almacenamiento se hacen cada vez más grandes y la complejidad general del sistema de aplicaciones aumenta exponencialmente y el mantenimiento es cada vez mayor. cada vez más difícil. Dado que todas las aplicaciones deben conectarse a todos los sistemas de bases de datos, esto en última instancia conduce a recursos de conexión de bases de datos insuficientes y a denegación de servicio.
Características: Extraiga e implemente de forma independiente servicios de **** públicos. La base de datos está conectada por estos servicios reutilizables para proporcionar servicios comerciales a través de servicios distribuidos.
3. Modelo de arquitectura de sitios web a gran escala
3.1 Capas
Una estructura en capas se utiliza a menudo en la arquitectura de sitios web a gran escala, es decir, el software. el sistema se divide en capa de aplicación y capa de servicio y capa de datos:
Restricciones de la arquitectura en capas: llamadas entre capas (la capa de aplicación llama directamente a la capa de datos) y llamadas inversas (la capa de datos llama). la capa de servicio, o la capa de servicio llama a la capa de aplicación) están prohibidos.
La arquitectura en capas puede continuar en capas. Por ejemplo, la aplicación se puede subdividir en la capa de vista y la capa de lógica empresarial se puede subdividir en la capa de interfaz de datos y la capa de procesamiento lógico; .
3.2. Segmentación
Segmentar diferentes funciones y servicios y empaquetarlos en unidades modulares altamente cohesivas y de bajo acoplamiento. Esto facilita el desarrollo y mantenimiento de software, facilita la implementación distribuida de diferentes módulos y mejora el procesamiento concurrente y la escalabilidad funcional del sitio web.
3.3.Distribuido
En comparación con los sitios web grandes, uno de los principales propósitos de la estratificación y la partición es reducir los módulos para facilitar la implementación distribuida, es decir, se implementan diferentes módulos en diferentes servidores. y trabajar juntos a través de llamadas remotas.
La distribución significa que se pueden utilizar más máquinas para trabajar, por lo que los recursos de CPU, memoria y almacenamiento son más abundantes, lo que puede manejar más acceso simultáneo y volumen de datos y, por lo tanto, puede proporcionar servicios a más usuarios.
La distribución también traerá algunos problemas:
Escenarios de aplicaciones distribuidas de uso común:
3.4 Clúster
El clúster se refiere a la implementación de varios servidores. la misma aplicación forma un clúster y es atendida por el mismo dispositivo de equilibrio de carga.
El clúster debe tener mecanismos de escalabilidad y conmutación por error: la escalabilidad significa que las máquinas se pueden agregar o eliminar del clúster según el acceso del usuario; la conmutación por error significa que cuando una máquina falla, se equilibrará la carga El dispositivo o el mecanismo de conmutación por error reenvíe la solicitud a otras máquinas del clúster para que los usuarios no se vean afectados.
3.5. Almacenamiento en caché
El almacenamiento en caché es la práctica de almacenar datos en la ubicación más cercana para acelerar el procesamiento. El almacenamiento en caché es el medio principal para mejorar el rendimiento del software.
En las aplicaciones de red, el almacenamiento en caché no solo puede acelerar el acceso a los datos, sino también reducir la presión de carga en las aplicaciones back-end y el almacenamiento de datos.
Tecnologías de almacenamiento en caché comunes:
Hay dos requisitos previos para usar el almacenamiento en caché:
3.6 Asíncrono
Objetivos clave e impulsores del desarrollo de software. Un factor es la reducción del acoplamiento de software. Cuantas menos cosas estén directamente relacionadas entre sí, menos influencia tendrán entre sí y más fácil les resultará desarrollarse de forma independiente.
En la arquitectura de sitios a gran escala, además de las capas, particiones, distribución, etc., existe otro medio importante para desacoplar el sistema: el asincrónico.
El paso de mensajes entre operaciones no es una llamada sincrónica, sino que se divide en varias etapas y la ejecución asincrónica entre cada etapa se coordina a través de **** Enjoy data.
La arquitectura asincrónica suele ser un modelo productor-consumidor y no existe una llamada directa entre los dos. Las colas de mensajes asincrónicas también tienen las siguientes características:
3.7 Redundancia
Para sitios web grandes, el tiempo de inactividad del servidor es inevitable. Para garantizar que el sitio web pueda continuar brindando servicios y no perder datos incluso si algunos servidores no funcionan, es necesario realizar un cierto grado de operación redundante y copia de seguridad de datos redundantes en el servidor. De esta manera, cuando un servidor falla, puede mover sus servicios y acceso a datos a otras máquinas.
También debe implementar servicios con acceso y carga mínimos, al menos dos servidores forman un clúster para lograr una alta disponibilidad del servicio a través de la redundancia. Además de la copia de seguridad de datos periódica, el almacenamiento de archivos y la copia de seguridad en frío, para garantizar la alta disponibilidad de los negocios en línea, la base de datos también debe separarse del maestro y el esclavo y sincronizarse en tiempo real para lograr una copia de seguridad en caliente.
Para resistir la parálisis completa del sitio web causada por factores incontrolables como terremotos y tsunamis, algunos sitios web grandes realizarán copias de seguridad de todo el centro de datos e implementarán centros de datos de recuperación de desastres en todo el mundo. Los programas y datos del sitio web se sincronizan con múltiples centros de datos de recuperación ante desastres en tiempo real.
3.8. Automatización
El diseño de arquitectura automatizada de sitios web a gran escala se centra en las operaciones de lanzamiento y el mantenimiento:
3.9. > 4 .Elementos arquitectónicos centrales de los grandes sitios web
4.
El dicho popular de la arquitectura es: el nivel más alto de planificación, la decisión que es difícil de cambiar.
4.1. Rendimiento
Los problemas de rendimiento están en todas partes, por lo que existen muchas formas de optimizar el rendimiento del sitio web:
Disponibilidad
Disponibilidad. Se refiere a la capacidad de brindar servicios a los usuarios cuando algunos servidores fallan. Escalabilidad
La escalabilidad se mide por la capacidad de configurar un clúster de múltiples servidores y la facilidad para agregar y eliminar nodos de servidor del clúster. Después de agregar o eliminar un nodo de servidor, los servicios proporcionados pueden ser los mismos que antes. ¿Existe un límite para la cantidad total de servidores que pueden estar en el clúster?
4.4. Escalabilidad
Una medida de la escalabilidad es si la forma de agregar nuevos productos comerciales es transparente y no se ve afectada por los productos existentes, y si se puede agregar sin que se lancen nuevos productos. con cambios en funciones existentes o solo cambios menores. Las principales herramientas son: arquitectura basada en eventos y servicios distribuidos.
4.5. Seguridad
La seguridad protege el sitio web de ataques maliciosos y protege los datos importantes contra el robo.
Los amigos ingenieros de Java que hayan trabajado durante uno a cinco años pueden unirse a las filas del desarrollo de programadores de Java: 721575865
Este grupo proporciona materiales gratuitos de aprendizaje de arquitectura Java (que incluyen alta disponibilidad, alta concurrencia, alto rendimiento y distribución, ajuste del rendimiento de Jvm, código fuente Spring, MyBatis, Netty, Redis, Kafka, Mysyspace, etc.). Materiales arquitectónicos para puntos de conocimiento como Kafka, Mysql, Zookeeper, Tomcat, Docker, Dubbo, Nginx, etc.) Haga un uso razonable de cada minuto y cada segundo para aprender y mejorar, y no use "tiempo insuficiente" para ¡cubre tu pereza mental! En el proceso de aprendizaje, debemos ser buenos aprovechando cada minuto y cada segundo para aprender y mejorar, ¡y no utilizar "tiempo insuficiente" para encubrir nuestra pereza al pensar!