zuihou-admin-cloud 2.7.0 lanzado, muchos detalles optimizados

Detalles de la actualización de la versión 2.7.0:

  1.  corrección: una vez iniciada la tarea de reparación, actualice el tiempo de activación de la tarea, no tendrá efecto.
  2.  corrección: la estrategia de persistencia de redis no afecta la configuración global
  3.  corrección: corrige el error de que el módulo uid puede informar un error al iniciar
  4.  feat: Combine ContextHandlerInterceptor, TenantContextHandlerInterceptor y MdcHandlerInterceptor en HeaderThreadLocalInterceptor, que se usa específicamente para procesar los parámetros en el encabezado de la solicitud y encapsularlo en ThreadLocal
  5.  hazaña: TokenContextFilter admite una configuración separada para ignorar el inquilino y el token
  6.  feat: Cambie el nombre de IgnoreTokenProperties a IgnoreProperties y cambie la configuración original ʻignore.token.url` a `zuihou.ignore.xxx`
  7.  hazaña: descartar pruebas unitarias inútiles
  8.  hazaña: Reemplazar StringUtils de apache con StrUtil de hutool
  9.  hazaña: las funciones relacionadas con xss-starter admiten la configuración a través de archivos de configuración
  10.  hazaña: la anotación SysLog admite la obtención de parámetros en el contexto del hilo actual. Uso # threadLocal.name
  11.  hazaña: estructura de código de inyección de datos, optimización de comentarios
  12.  hazaña: la inyección de datos admite ignorar la inyección de campos especificados
  13.  hazaña: se mejoraron algunos comentarios de código, se optimizó alguna lógica de código y se corrigieron algunos errores

Introducción:


Andamio de microservicio basado en `SpringCloud (Hoxton.SR7)` + `SpringBoot (2.2.9.RELEASE)`, con la capacidad de deshabilitar y cambiar libremente los métodos de implementación de inquilinos. Con administración de usuarios, administración de autoridad de recursos, autenticación de puerta de enlace unificada, Xss Múltiples módulos, como prevención de ataques entre sitios, generación automática de código, múltiples sistemas de almacenamiento, transacciones distribuidas, tareas de tiempo distribuido, etc., respaldan el desarrollo paralelo de múltiples sistemas comerciales, respaldan el desarrollo paralelo de múltiples servicios y se pueden utilizar como un andamio de desarrollo para servicios back-end. El código es simple y la estructura es clara, lo que es muy adecuado para aprender y usar. La tecnología central adopta Nacos, Fegin, Ribbon, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Seata, Sentinel, RabbitMQ, FastDFS y otros marcos y middleware principales.

Espero trabajar duro para crear un conjunto de soluciones desde  el marco básico de SaaS  -  arquitectura de microservicio  -  implementación automatizada  -  monitoreo del sistema  . Este proyecto tiene como objetivo lograr capacidades básicas y no involucra empresas específicas.

Este proyecto tiene como objetivo realizar la función de generación de código, la función básica, la función común y la función general del sistema a través de la especificación de diseño de la estructura de la tabla de convenciones, la especificación de escritura de código y la especificación de división del módulo.

 

Diagrama de arquitectura:

Modelo de inquilino:

Modelo de inquilino descripción ventaja Desventaja Transacción distribuida
NINGUNO (modo no inquilino)  Sin inquilinos Simple y adecuado para sistemas independientes Falta de conveniencia del sistema de inquilinos colocarse
COLUMNA (modo de campo) Los inquilinos comparten una base de datos y agregan campos a la tabla de negocios para distinguir   Desarrollo simple, sin complicaciones, sin percepción  Aislamiento de datos deficiente, seguridad deficiente, copia de seguridad y recuperación de datos difíciles colocarse
SCHEMA (esquema independiente)  Cada inquilino tiene una base de datos independiente (esquema). Al ejecutar sql, agregue dinámicamente el esquema antes del nombre de la tabla Simple, sin percepción de desarrollo, buen aislamiento de datos La cuenta raíz de la base de datos debe configurarse en el archivo de configuración, y no se admiten funciones personalizadas anidadas de SQL complejas y SQL colocarse
DATASOURCE (fuente de datos independiente)  Cada inquilino tiene una base de datos independiente (fuente de datos) y la fuente de datos se cambia dinámicamente cuando se ejecuta el código La base de datos se puede implementar de forma independiente, con buen aislamiento de datos, alta escalabilidad y bajo impacto de fallas. Relativamente complejo, el desarrollo debe prestar atención a los problemas de las transacciones al cambiar las fuentes de datos y requiere más bases de datos colocarse

caracteristicas:

 

  1. Gestión de inquilinos: el fondo de operaciones (zuihou-admin-ui) gestiona toda la creación de inquilinos
  2. Centro de usuario: organización, puesto, mantenimiento de datos de usuario, restablecimiento de contraseña de usuario, etc.
  3. Gestión de autoridad: menú, configuración de recursos, gestión de roles, vincular usuarios a roles, autorizar menús y recursos a roles
  4. Configuración básica: mantenimiento de diccionario, región, parámetros del sistema y otra información
  5. Gestión de desarrolladores: gestión de aplicaciones, monitorización de bases de datos, registros de operaciones, registros de inicio de sesión, documentos de interfaz swagger, centros de registro, varios controles
  6. Centro de mensajes: envíe y vea mensajes en este sitio
  7. Centro de SMS: configuración básica de SMS de los principales operadores. Después de la configuración, el sistema tiene la capacidad de enviar SMS
  8. Centro de archivos: proporciona capacidades de almacenamiento y carga de archivos adjuntos del sistema, soporte integrado para almacenamiento local, almacenamiento FastDFS, almacenamiento en la nube de Alibaba y solo cambio a través de la configuración
  9. Gestión de la puerta de enlace: capacidad de límite actual, capacidad de bloqueo de acceso (es decir, lista hei)
  10. Gestión de procesos: funciones comunes del flujo de trabajo (gestión de modelos, implementación de procesos, etc.)

Introducción al punto técnico:

 Autenticación del servicio:

JWT se utiliza para fortalecer la verificación de autorización de la programación entre servicios para garantizar la seguridad de los servicios internos.

monitor:

Use Spring Boot Admin para monitorear el estado de ejecución de cada servicio independiente; use la turbina para ver el estado de ejecución y la frecuencia de llamada de la interfaz en tiempo real; use Zipkin para ver la cadena de llamadas entre cada servicio.

permiso de datos:

Los permisos de datos simples se implementan utilizando el interceptor DataScopeInterceptor basado en Mybatis

Solución sin sentido de SaaS:

Utilice el interceptor Mybatis para lograr la interceptación de todo SQL, el modo COLUMN empalma dinámicamente los códigos de inquilinos, el modo SCHEMA modifica el esquema predeterminado y el modo DATASOURCE cambia dinámicamente las fuentes de datos para lograr el propósito de aislamiento de datos de múltiples inquilinos. Y es compatible con el modo de inquilino discapacitado.

Caché secundario:

J2Cache se usa 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. El marco de almacenamiento en caché se utiliza principalmente en un entorno de clúster. También se puede usar en una computadora independiente para evitar el impacto en el negocio de back-end después del reinicio en frío de la caché causado por el reinicio de la aplicación.

Conversión de frijol elegante:

Utilice componentes de Dozer para optimizar la conversión de DTO, DO, PO y otros objetos

Validación unificada de formularios de front-end y back-end:

La validación de formularios rigurosa generalmente requiere verificación tanto de front-end como de back-end. Sin embargo, los proyectos tradicionales solo se pueden probar una vez para cada front y back. Después de que cambia la regla, los front-end y back-end deben modificarse al mismo tiempo. Por lo tanto, sobre la base de hibernate-validator, se encapsula la dependencia inicial de Zuihou-validator-starter y se proporciona una interfaz común para obtener las reglas que necesitan para verificar el formulario, y luego el front-end usa las reglas devueltas por el back-end. Si las reglas cambian en el futuro, solo se requiere el back-end Simplemente modifíquelo.

Scripting anti-cross-site (XSS):

  •      Filtrar los parámetros del formulario en todas las solicitudes a través de filtros
  •      Filtrar todos los parámetros de tipo application / json a través del deserializador Json

Inyector de información de usuario actual:

 Inyección de identidad de usuario a través de anotaciones

API en línea:

Debido a que algunas funciones del swagger-ui nativo no son lo suficientemente amigables, se adopta el knife4j de código abierto doméstico y se crea un statuser para facilitar el uso de los usuarios de springboot.

Generador de códigos:

Un conjunto de generador de código se personaliza basado en 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.

Programador de tareas cronometrado:

La función se mejora en función de xxl-jobs. (Por ejemplo: enviar tareas a una hora determinada, proyectos combinados de ejecutor y programador, múltiples fuentes de datos)

Currículum de archivo grande / punto de interrupción / fragmento:

El front-end usa webupload.js y el back-end usa NIO para realizar un gran punto de interrupción de archivos y una reanudación fragmentada. Después de iniciar los servicios Eureka, Zuul y File, abra directamente docs / chunkUploadDemo / demo.html para realizar pruebas. Después de la prueba, el servicio de archivos se inicia con un límite local de 128M de la memoria máxima de la pila, y un archivo grande de 4.6G + se puede cargar con éxito en 5 minutos. El consumo de tiempo del servicio oficial se verá afectado por el ancho de banda del usuario y el servidor, y el tiempo será relativamente largo.

Transacción distribuida:

Integre el middleware de transacciones distribuidas de Ali: seata, para  resolver los problemas de transacciones distribuidas que enfrentan los microservicios de una manera  eficiente  e intrusiva para el negocio  .

Lanzamiento gris:
    
para resolver actualizaciones y lanzamientos frecuentes de servicios, reversiones de versiones, iteración rápida y desarrollo colaborativo dentro de la empresa, este proyecto utiliza una estrategia de equilibrio de carga de cinta modificada para lograr el lanzamiento gris.     

Inyección automática de datos asociados:

Se utiliza para resolver el dolor de los atributos de datos de paginación de tablas cruzadas, bases de datos cruzadas, servicios cruzados o atributos de objeto único que hacen eco de los datos asociados, y admite la inyección automática de atributos de datos estáticos (diccionario de datos) y datos de clave primaria dinámica.

Dirección del código del proyecto

proyecto albergue github Observaciones
Proyecto de micro servicio https://gitee.com/zuihou111/zuihou-admin-cloud https://github.com/zuihou/zuihou-admin-cloud Código de backend de la versión SpringCloud
Proyecto único https://gitee.com/zuihou111/zuihou-admin-boot https://github.com/zuihou/zuihou-admin-boot Código de backend de la versión SpringBoot
Antecedentes del inquilino https://gitee.com/zuihou111/zuihou-ui https://github.com/zuihou/zuihou-ui | Interfaz para clientes
Antecedentes de desarrollo y operación https://gitee.com/zuihou111/zuihou-admin-ui https://github.com/zuihou/zuihou-admin-ui Utilizado por el personal interno de desarrollo, operación, operación y mantenimiento de la empresa.
Generador de códigos https://gitee.com/zuihou111/zuihou-generator https://github.com/zuihou/zuihou-generator Los desarrolladores usan
Kit de herramientas básico https://gitee.com/zuihou111/zuihou-commons https://github.com/zuihou/zuihou-commons Kit de herramientas básico

Dirección de demostración (la cuenta de demostración no tiene permiso de escritura, solo consulta)

proyecto Dirección de demostración Cuenta de administrador Cuenta ordinaria
Antecedentes del inquilino http://tangyh.top:10000/zuihou-ui zuihou / zuihou prueba / zuiou
Antecedentes de desarrollo y operación http://tangyh.top:180/zuihou-admin-ui demoAdmin / zuihou No

Supongo que te gusta

Origin www.oschina.net/news/119996/zuihou-admin-cloud-2-7-0-released
Recomendado
Clasificación