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.
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.
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.
- 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.
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.
- 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
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
- 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.