El predecesor del andamio de microservicios lamp-cloud es zuihou-admin-cloud. A partir de 3.0.0, pasó a llamarse lamp-cloud. Es miembro del proyecto lamp.
El andamio de microservicios Lamp-Cloud es un andamio de microservicios SaaS basado en SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE). Tiene un sistema unificado de gestión en segundo plano de autorización y autenticación, que incluye gestión de usuarios, gestión de permisos de recursos y puerta de enlace. Múltiples módulos, como API, transacciones distribuidas y resumen de fragmentación de puntos de interrupción de archivos grandes, respaldan el desarrollo paralelo de sistemas multinegocios y pueden usarse como andamios de desarrollo para servicios back-end. El código es conciso y la estructura clara, adecuada para el aprendizaje y el uso directo en proyectos. La tecnología central utiliza marcos y middleware importantes como Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis y RiadfdsitMQ.
función de andamio de microservicio de nube de lámpara
1. Registro, descubrimiento e invocación del servicio.
El registro y descubrimiento de servicios basado en Nacos, utilizando Feign para implementar la intermodulación de servicios, puede lograr la misma experiencia de codificación que llamar a métodos locales cuando se utilizan solicitudes HTTP para llamadas remotas. Los desarrolladores desconocen por completo que este es un método remoto, y aún más. Percibí que se trata de una solicitud HTTP.
2. Autenticación del servicio:
Utilice JWT para fortalecer la verificación de permisos para la programación entre servicios y garantizar la seguridad de los servicios internos.
3. Equilibrio de carga
El resto retenido por el servicio se utiliza para el control de proxy y puerta de enlace. Además de los comúnmente utilizados node.js y nginx, zuul y riadfdson de la serie Spring Cloud pueden ayudarnos a realizar el control de puerta de enlace normal y el equilibrio de carga. Entre ellos, la expansión y referencia de proyectos extranjeros se basan en el complemento limitador de corriente JWT Zuul, que limita la corriente.
4. Mecanismo de fusión
Debido a la distribución de servicios, para evitar la "avalancha" de llamadas entre servicios, Hystrix se utiliza como fusible para evitar la "avalancha" de llamadas entre servicios.
5. Monitoreo
Utilice Spring Boot Admin para monitorear el estado de ejecución de cada Servicio independiente; use turbina para ver el estado de ejecución y la frecuencia de llamadas de la interfaz en tiempo real; use Zipkin para ver la cadena de llamadas entre cada servicio, etc.
6. Monitoreo de llamadas de enlace
Utilice Zipkin para realizar un monitoreo del rendimiento de enlace completo de los microservicios, mostrar varios indicadores desde la dimensión general hasta la dimensión local y mostrar de forma centralizada toda la información de rendimiento de la cadena de llamadas en todas las aplicaciones, lo que puede medir fácilmente el rendimiento general y local y encontrar fácilmente la fuente de fallas. , lo que puede acortar en gran medida el tiempo de resolución de problemas en producción. Con ello podemos hacer
Solicite seguimiento de enlaces y localización rápida de fallos: la información de error se puede localizar rápidamente a través de la cadena de llamadas combinada con registros comerciales. Visualización: cada etapa lleva tiempo y se realiza un análisis de rendimiento. Optimización de dependencias: disponibilidad de cada enlace de llamada, clasificación de dependencias de servicios y optimización. Análisis de datos, optimización de enlaces: se pueden obtener las rutas de comportamiento de los usuarios y el análisis resumido se aplica en muchos escenarios comerciales.
7. Permisos de datos
Implementación de permisos de datos simples utilizando el interceptor DataScopeInterceptor basado en Mybatis
8. Solución no intrusiva SaaS (multiinquilino)
Utilice el interceptor Mybatis para interceptar todo el SQL y modificar el esquema predeterminado para lograr el aislamiento de datos de múltiples inquilinos. Y admite capacidad de conexión.
9. Caché de segundo nivel
J2Cache se utiliza para operar el caché. El caché de primer nivel usa memoria (cafeína) y el caché de segundo nivel usa Redis. Dado que una gran cantidad de lecturas de caché hará que la red L2 se convierta en el cuello de botella de todo el sistema, el objetivo de L1 es reducir la cantidad de lecturas a L2. Este marco de almacenamiento en caché se utiliza principalmente en entornos de clúster. También se puede utilizar en una sola máquina para evitar el impacto en el negocio de back-end después del inicio en frío de la caché causado por el reinicio de la aplicación.
10. Conversión elegante de Bean
Utilice componentes Dozer para optimizar y convertir DTO, DO, PO y otros objetos
11. Verificación de formulario unificado en la parte delantera y trasera.
La verificación de formulario rigurosa generalmente requiere verificación de front-end + back-end al mismo tiempo. Sin embargo, en proyectos tradicionales, el front-end y el front-end solo se pueden probar una vez cada uno. Si las reglas se cambian más adelante, el front-end. y el back-end deben modificarse al mismo tiempo. Por lo tanto, la dependencia inicial de zuihou-validator-starter se encapsula sobre la base de hibernate-validator, proporcionando una interfaz común para obtener las reglas que deben verificarse y luego el front-end usa las reglas devueltas por el back-end. Si las reglas cambian en el futuro, solo se necesita el back-end. Simplemente modifíquelo.
12. Prevenir ataques de secuencias de comandos entre sitios (XSS)
Utilice filtros para filtrar los parámetros del formulario en todas las solicitudes
Filtre todos los parámetros de tipo aplicación/json a través del deserializador Json
13. Inyector de información de usuario actualmente registrado
Inyección de identidad de usuario a través de anotaciones.
14. API en línea
Dado que algunas funciones del swagger-ui nativo no son lo suficientemente amigables, adoptamos el swagger-bootstrap-ui de código abierto nacional y creamos un stater para facilitar a los usuarios de Springboot.
15. Generador de código
Se personaliza un conjunto de generadores de código en función de Mybatis-plus-generator. Al configurar las anotaciones de los campos de la base de datos, genera automáticamente clases de enumeración, anotaciones de diccionario de datos, SaveDTO, UpdateDTO, anotaciones de reglas de validación de formularios, anotaciones Swagger, etc.
16. Programador de tareas programadas
Mejoras de funciones basadas en xxl-jobs. (Por ejemplo: enviar tareas a una hora específica, fusionar proyectos con ejecutores y programadores, múltiples fuentes de datos)
17. Carga de archivos grandes, puntos de interrupción o currículum fragmentado
El front-end usa webupload.js y el back-end usa NIO para implementar la carga fragmentada de puntos de interrupción de archivos grandes. Después de iniciar los servicios Eureka, Zuul y File, puede abrir directamente docs/chunkUploadDemo/demo.html para realizar pruebas. Después de la prueba, el límite de memoria máxima de la pila local es de 128 M para iniciar el servicio de archivos, y se puede cargar con éxito un archivo grande de 4,6 G+ en 5 minutos. El tiempo de servicio oficial se verá afectado por el ancho de banda del usuario y el ancho de banda del servidor, y así será. tomar mucho tiempo.
18. Transacciones distribuidas
Integrado con el middleware de transacciones distribuidas de Alibaba: seata, resuelve los problemas de transacciones distribuidas que se enfrentan en escenarios de microservicios de una manera eficiente y no invasiva.
19. Inyector automático de datos relacionados entre tablas, bases de datos y servicios cruzados
Se utiliza para resolver el problema de hacer eco de datos relacionados de atributos de tablas cruzadas, bases de datos cruzadas, datos de paginación de servicios cruzados o atributos de un solo objeto. Admite la inyección automática de atributos de datos estáticos (diccionario de datos) y clave primaria dinámica. datos.
20. Lanzamiento en escala de grises
Para resolver el problema de las frecuentes actualizaciones de servicios en línea, reversiones, iteraciones rápidas y desarrollo colaborativo dentro de la empresa, este proyecto utiliza la estrategia de equilibrio de carga modificada de riadfdson para lograr el lanzamiento en escala de grises.
registro de actualización de la nube de lámpara
v3.5.5
refactorizar
lamp-cloud: ajuste el orden de ejecución de TraceFilter para facilitar que otros filtros en la puerta de enlace registren la información de registro
lamp-cloud: Optimice RouterMeta y admita claves personalizadas de front-end
lamp-cloud: Optimice el problema confuso de datos de rastreo de la interfaz de rastreo regional
lamp-cloud: La optimización de la interfaz de rastreo regional no puede rastrear datos para los condados debajo de la ciudad
lamp-cloud: Se agregó el método addChildren a la entidad básica de la estructura de árbol
lamp-cloud: Optimice la estructura de agregación de arrogancia para ignorar el servicio de socket web
arreglar
lamp-util: cuando un parámetro de encabezado de solicitud contiene chino, la llamada simulada asincrónica informa un error
lamp-cloud: Se corrigió el error por el cual la estructura de árbol no podía obtener la estructura jerárquica de empalme correcta.
lamp-web-plus: Corrección del error causado por la altura fija de la página del árbol
lamp-web-plus: Resuelva el problema del menú desplegable del componente TableAction que provoca que la línea divisoria se muestre incorrectamente debido a permisos
lamp-web-plus: Se solucionó el problema por el cual los datos de la página de lista se transferían a la página de edición y los datos se modificaban accidentalmente.