Características de las aplicaciones de Internet y su evolución arquitectónica.

1. La diferencia entre proyectos tradicionales y proyectos de Internet.

Proyectos tradicionales:
OA, RRHH, CRM y otros sistemas. Grupo objetivo: empleados corporativos.
Características: menos usuarios del proyecto, relativamente menos concurrencia y alta tolerancia del usuario.

Proyectos de Internet:
Taobao, Tmall, JD.com Grupo objetivo: Internet
Características: gran número de usuarios, gran número de visitas, más énfasis en la experiencia del usuario : estética, funcionalidad, velocidad, estabilidad

Para proyectos de Internet, los ingenieros de back-end pueden intervenir en la velocidad y la estabilidad.

Velocidad: abrir una nueva página lleva solo un momento y no hay demoras entre páginas.

Estabilidad: Se puede acceder al 99,9% del sitio web con normalidad durante todo el año sin problemas

2. Objetivos arquitectónicos de proyectos de Internet a gran escala:

Características de los proyectos de Internet:

  • Muchos usuarios

  • Gran tráfico y alta concurrencia

  • Datos masivos

  • vulnerable

  • Funciones engorrosas

  • Cambiar rápidamente

Medir las métricas de rendimiento del sitio web

  • Tiempo de respuesta : el tiempo total que lleva ejecutar una solicitud desde el momento de inicio hasta la última vez que se reciben los datos de respuesta.
  • Concurrencia : la cantidad de solicitudes que el sistema puede manejar al mismo tiempo
    • Número de conexiones simultáneas : se refiere al cliente que inicia una solicitud al servidor y establece una conexión TCP. El número total de conexiones TCP al servidor por segundo
    • Número de solicitudes : QPS (consulta por segundo) se refiere al número de solicitudes por segundo
    • Número de usuarios simultáneos : cuántos usuarios hay por unidad de tiempo.
  • Rendimiento : se refiere al número de solicitudes que el sistema puede manejar por unidad de tiempo.
    • QPS: Consulta por segundo se refiere a cuántas solicitudes por segundo
    • TPS: Transacción por segundo Número de transacciones por segundo
    • Una transacción se refiere al proceso en el que un cliente envía una solicitud al servidor y el servidor responde. El cliente comienza a cronometrar cuando envía una solicitud y finaliza cuando recibe la respuesta del servidor. Esto se utiliza para calcular el tiempo utilizado y el número de transacciones completadas.

Objetivos arquitectónicos de los proyectos de Internet.

  • Alto rendimiento: proporcione una experiencia de acceso rápido
  • Alta disponibilidad: siempre se puede acceder a los servicios del sitio web con normalidad
  • Escalable: al aumentar o disminuir el hardware, las capacidades de procesamiento se pueden aumentar o disminuir (gran promoción de la expansión de la capacidad)
  • Alta escalabilidad: bajo acoplamiento entre sistemas, fácil de agregar o quitar nuevos módulos funcionales agregándolos o quitándolos
  • Seguridad: proporcione acceso seguro al sitio web y cifrado de datos, estrategia de almacenamiento seguro
  • Agilidad: adaptarse a las necesidades y responder rápidamente

Agrupados y distribuidos

Grupo:

  • Descripción popular: Muchas máquinas, haciendo lo mismo.
  • Descripción profesional: un módulo empresarial implementado en un servidor polimórfico

repartido:

  • Descripción popular: Hay muchas máquinas y cada clúster hace cosas diferentes. Juntos, es un evento complejo (las cosas profesionales se hacen de manera profesional, porque cada cosa tiene diferentes requisitos de rendimiento)

  • Descripción profesional: un sistema empresarial grande se divide en secciones para pequeñas empresas y se implementa en diferentes máquinas.
    Insertar descripción de la imagen aquíInsertar descripción de la imagen aquí

Los proyectos bajo la arquitectura cluster cumplen con las siguientes características:

  • Alto rendimiento: el clúster es escalable, si el rendimiento no es suficiente, se pueden agregar máquinas para garantizar el rendimiento.

  • Alta disponibilidad: siempre que una máquina no esté inactiva, se puede proporcionar el servicio.

Insertar descripción de la imagen aquí
La arquitectura distribuida en clúster puede cumplir bien los objetivos arquitectónicos del sistema de Internet.

  • Alto rendimiento: el clúster es escalable, si el rendimiento no es suficiente, se pueden agregar máquinas para garantizar el rendimiento.

  • Alta disponibilidad: siempre que una máquina no esté inactiva, se puede proporcionar el servicio.

  • Escalable: expanda y reduzca dinámicamente diferentes grupos de servicios de acuerdo con los requisitos de rendimiento de los diferentes servicios.

  • Alta escalabilidad: cuando necesite agregar o reducir ciertos servicios, simplemente aumente o disminuya los clústeres que responden al servicio.

Evolución de la arquitectura

Arquitectura monolítica

Todos los servicios se implementan en un servidor.

Insertar descripción de la imagen aquí

  • Ventajas: Desarrollo e implementación simples, preferido para proyectos pequeños.
  • defecto:
    • Gran cantidad de código y lento inicio del proyecto
    • Poca confiabilidad
    • Poca escalabilidad
    • Poca escalabilidad y mantenibilidad.
    • Bajo rendimiento

arquitectura vertical

La arquitectura vertical consiste en dividir varios módulos en una sola arquitectura en múltiples proyectos independientes para formar múltiples arquitecturas únicas e independientes.

Insertar descripción de la imagen aquí

Problemas con la arquitectura monolítica:

  • El proyecto comienza lentamente
  • Poca confiabilidad
  • Poca escalabilidad
  • Poca escalabilidad y mantenibilidad.
  • Bajo rendimiento

Problemas con la arquitectura vertical:

  • Demasiadas funciones duplicadas

Arquitectura distribuida

La arquitectura distribuida se refiere a extraer módulos comerciales públicos sobre la base de una arquitectura vertical y brindarlos como servicios independientes a otros consumidores para lograr compartir y reutilizar servicios.

Insertar descripción de la imagen aquí

  • RPC: Llamada a procedimiento remoto Llamada a procedimiento remoto.

Problemas con la arquitectura vertical:

  • Demasiadas funciones duplicadas

Problemas con la arquitectura distribuida:

  • Una vez que el proveedor de servicios cambia, todos los proveedores deben cambiar

arquitectura SOA

Insertar descripción de la imagen aquí

SOA: (Service-Oriented Architecture, arquitectura orientada a servicios) es un modelo de componentes que divide diferentes unidades funcionales de una aplicación (llamadas servicios) y las conecta a través de interfaces definidas y contratos para estos servicios.

ESB: (Enterparise Service Bus) bus de servicios empresariales, intermediario de servicios. Proporciona principalmente interacción entre servicios. ESB incluye funciones tales como: equilibrio de carga, control de flujo, procesamiento de cifrado, monitoreo de servicios, manejo de excepciones, monitoreo de emergencia, etc.

Problemas con la arquitectura distribuida:

  • Una vez que el proveedor de servicios cambia, todos los proveedores deben cambiar

Arquitectura de microservicio

Insertar descripción de la imagen aquí

  • La arquitectura de microservicio es una sublimación de SOA. La arquitectura de microservicio enfatiza un punto clave: "Las empresas deben estar completamente integradas en componentes y orientadas a servicios". El sistema comercial único original se dividirá en múltiples sistemas que se pueden desarrollar, diseñar y operar de forma independiente. Las pequeñas aplicaciones, la interacción y la integración entre estas pequeñas aplicaciones se completan a través de varios servicios.
  • Arquitectura de microservicio = 80% pensamiento de arquitectura de servicios SOA + 100% pensamiento de arquitectura de componentes + 80% pensamiento de modelado de dominio

Características:

  • Los servicios están divididos en componentes: los desarrolladores pueden elegir libremente las tecnologías de desarrollo y los equipos no necesitan ser los mismos.
  • La interacción entre servicios generalmente utiliza API REST
  • Descentralización: cada microservicio tiene su propia base de datos privada para conservar los datos comerciales.
  • Implementación automatizada: divida la aplicación en servicios individuales independientes para facilitar la implementación, las pruebas, la operación y el mantenimiento automatizados.

Supongo que te gusta

Origin blog.csdn.net/weixin_43828467/article/details/130033089
Recomendado
Clasificación