[Arquitectura] Reflexiones sobre la evolución de la arquitectura del sistema Java

1. Introducción

Con el desarrollo de Internet móvil, la escala de aplicaciones de sitios web, H5 y terminales móviles también ha continuado expandiéndose, y tanto la cantidad como la calidad de las aplicaciones han mejorado exponencialmente. La cantidad de desarrolladores aumenta día a día, y la complejidad de las aplicaciones también aumenta. Cómo completar rápidamente la entrega de funciones y coordinar una gran cantidad de desarrolladores para trabajar juntos es una ingeniería de sistema compleja. Desde el comienzo de Internet hasta el presente, la arquitectura del sistema generalmente ha pasado por varios procesos: arquitectura de aplicación única, arquitectura de aplicación vertical, arquitectura distribuida, arquitectura SOA y arquitectura de nube de microservicio. En este artículo, presentaré el proceso de evolución de la arquitectura y mi propio pensamiento.

2 Arquitectura de aplicación monolítica

En los primeros días del desarrollo de Internet, el tráfico de la aplicación de su sitio web era pequeño y todos los códigos funcionales y el almacenamiento de datos estaban en un servidor, lo que podía reducir el costo de los proyectos de desarrollo, implementación y mantenimiento. En esta etapa, el front-end y el back-end generalmente no están separados, y se implementan múltiples servicios de aplicaciones bajo un solo tomcat. Las pilas tecnológicas comunes incluyen spring+mybaits+jspo spring+mybaits+freemaker. La ventaja de este método es el mantenimiento por una sola persona y el rápido ritmo de desarrollo. La desventaja es que no es adecuado para proyectos a gran escala, el acoplamiento entre módulos es grande y la tasa de tolerancia a fallas de un solo punto es baja.

inserte la descripción de la imagen aquí

3 Arquitectura de aplicaciones verticales

El trasfondo del surgimiento de la arquitectura de aplicaciones verticales es que la cantidad de visitas al sitio web está aumentando, y una sola aplicación también puede agregar nodos para manejarlo, pero no todos los módulos necesitan aumentar las capacidades del servicio, por lo que es necesario dividir el servicio según la función Ampliar la capacidad de un gran número de módulos. La división del sistema comparte el tráfico, resuelve el problema de concurrencia y también puede dividir y optimizar diferentes módulos funcionales. Además, el problema de un sistema no afectará a otros sistemas, lo que mejora la tasa de tolerancia a fallas entre sistemas. Esto es una aplicación vertical.Al mismo tiempo, no se puede llamar a varios sistemas y habrá códigos de función duplicados.Además, para el sistema de gestión, la retención de sesión también es un gran problema.En este modo, el modo de replicación de sesión de Tomcat se usa generalmente y el recurso El consumo es relativamente grande.
inserte la descripción de la imagen aquí

4 Arquitectura distribuida

En un sistema distribuido, el código repetido en el sistema se extraerá por separado como un servicio independiente. El sistema vertical original se divide en una capa de servicio independiente y una capa de presentación comercial específica. Esta arquitectura mejora la reutilización del código, pero la complejidad y el acoplamiento entre aumentan los sistemas, lo que dificulta el mantenimiento del proyecto.

inserte la descripción de la imagen aquí

5 arquitectura SOA

Para la arquitectura SOA, se introduce un centro de registro de servicios sobre la base de la arquitectura distribuida para desacoplar la capa de presentación y la capa de servicio, lo que resuelve en gran medida la dificultad de operación y mantenimiento del sistema. Bajo la arquitectura SOA, se puede decir que la estructura de ssm framework + dubbo + zk está de moda. Bajo la arquitectura SOA, una mayor división de los servicios puede maximizar la efectividad del personal.Bajo esta arquitectura, también se logra la separación de front-end y back-end, lo que mejora aún más la eficiencia del desarrollo.El back-end y el front-end se enfocan cada uno en su propio campo , la complejidad del sistema ha aumentado aún más.
inserte la descripción de la imagen aquí

6 Arquitectura de nube de microservicios

En la era en la que todo está conectado a la nube y todo está conectado a la nube, la arquitectura de microservicios surge como lo requieren los tiempos. La arquitectura de microservicios divide aún más los servicios e introduce varios componentes del sistema para la gestión de servicios, la supervisión de servicios, el seguimiento de enlaces, la autenticación y la autorización. En este escenario, cada componente del servicio es más especializado, no solo el registro y el descubrimiento del servicio, sino también el centro de configuración, el seguimiento de enlaces, etc., el depósito de la familia de microservicios (springcloud springcloud alibaba).
Comparación de las capacidades de servicio de la arquitectura SOA y la arquitectura de microservicios:

Soluciones técnicas opcionales para cada componente de SpringCloud.

inserte la descripción de la imagen aquí

7 resumen

En este artículo, presentamos principalmente el camino de evolución de la arquitectura de servicios en los últimos 10 años, así como las ventajas y desventajas de cada arquitectura. Ahora es la era del Internet de Todo y todo en la nube, los microservicios son actualmente una solución muy popular para proyectos a gran escala. Sin embargo, en el desarrollo del proyecto real, también se debe considerar la situación real. El posicionamiento y el desarrollo del proyecto no deben desarrollarse en exceso. La solución más popular no es necesariamente la mejor, pero la arquitectura que mejor se adapte al escenario comercial debe ser elegido. , de modo que se pueda garantizar la entrega y actualización iterativa del proyecto.

Supongo que te gusta

Origin blog.csdn.net/u011397981/article/details/132128670
Recomendado
Clasificación