Red de conocimiento del abogados - Ley de patentes - ¿Por qué elegir Spring Boot como el micromarco básico para microservicios?

¿Por qué elegir Spring Boot como el micromarco básico para microservicios?

1. ¿Qué es Spring Boot y qué problemas resuelve?

?1) Spring Boot facilita la codificación

?2) Spring Boot facilita la configuración

?3) Spring Boot simplifica la implementación

?4) Spring Boot simplifica el monitoreo

?5) Deficiencias de Spring Boot

2 El posicionamiento de Spring Boot en la plataforma y cómo integrar tecnologías relacionadas

?1) SpringBoot y SEDA +MicroService + RESTful

?2) SpringBoot y Mock

<. p>3. Después de adoptar SpringBoot, ¿cómo se debe realizar la gestión técnica?

Primero, echemos un vistazo a qué es Spring Boot y qué problemas nos ayuda a resolver:

SpringBoot es Con el nacimiento de Spring 4.0;

Entendido literalmente, Boot significa guía, por lo que SpringBoot ayuda a los desarrolladores a construir rápidamente el marco Spring;

SpringBoot ayuda a los desarrolladores a iniciar rápidamente un contenedor web;

SpringBoot hereda los excelentes genes del framework Spring original;

SpringBoot simplifica el proceso de uso de Spring.

Spring alguna vez fue considerado el "infierno de la configuración" debido a su engorrosa configuración. Las diversas configuraciones de XML y anotaciones son deslumbrantes, y es difícil descubrir la causa si algo sale mal.

Spring Boot utiliza principalmente Java Config para configurar Spring.

Como puede ver, después de usar spring-boot-start-actuator, los parámetros de rendimiento en tiempo de ejecución del proceso se obtienen directamente a través de REST.

Por supuesto, algunas de estas métricas contienen datos confidenciales. Spring-boot-start-actuator proporciona algunas soluciones de autenticación básica para este propósito. Estas soluciones tampoco son suficientes en la aplicación real.

Como micromarco, Spring Boot aún está lejos de la implementación de microservicios.

No proporciona las funciones de soporte correspondientes para el descubrimiento y registro de servicios. La función de monitoreo proporcionada por su propio actuador también debe conectarse con el monitoreo existente. No existe un plan de control de seguridad de respaldo para la implementación de REST, es necesario estandarizar los URI en función de las condiciones reales.

A continuación, estudiemos el posicionamiento de Spring Boot en la plataforma y cómo se integran las tecnologías relacionadas.

La imagen de arriba es relativamente complicada. La imagen completa utiliza SEDA, que es Stage-EDA. Como puede ver, la visualización general está en orden de procesamiento y el proceso de respuesta es similar. En el proceso de procesamiento, existen principalmente prefiltrado, procesamiento de funciones centrales y posfiltrado.

Todos los filtros de la figura son conectables y se pueden ampliar y desarrollar de acuerdo con escenarios reales. Cada filtro es una etapa, como verificación de legalidad de ClientInstance, autenticación de llamadas, descifrado, limitación actual, etc.

Una solicitud de conversión de etapa a etapa se implementa cambiando diferentes grupos de subprocesos y es impulsada por EDA.

Para los desarrolladores de lógica de negocios, solo deben preocuparse por la implementación de la lógica de negocios de la parte CORE, y el marco implementa uniformemente otras funciones que no son funciones.

Mock ya no debería ser un nombre propio para pruebas. Por supuesto, para la función de pruebas, herramientas como mockito aún pueden mejorar mucho su eficiencia.

SpringBoot proporciona una forma sencilla de crear servicios REST. Por el contrario, cuando se utiliza dubbo de Alibaba para realizar depuración conjunta de múltiples equipos y procesos, la dificultad de burlarse aumenta considerablemente.

Mock es una herramienta poderosa para el desarrollo paralelo desacoplado. En circunstancias racionales, el software puede pasar de una depuración conjunta simulada durante el desarrollo a una depuración conjunta real entre desarrollo y desarrollo, simplemente cambiando un nombre de dominio dependiente, por ejemplo. :

mockURI:/v1/function?param1=value1

devURI:/v1/function?param1=value1

El cambio de nombre de dominio anterior solo requiere Definir un elemento de configuración durante el período de desarrollo e inyectarlo automáticamente al cambiar de entorno, ahorrando tiempo, preocupaciones y esfuerzo.

Como se muestra arriba, hay dos opciones para integrar Docker con A: El núcleo de la opción A es usar Docker como línea base de entrega del entorno del sistema operativo, es decir, diferentes fat jars usan el mismo sistema operativo. versión del sistema y el mismo entorno JVM. Pero ocurre lo mismo con las imágenes acoplables. El núcleo del plan B es que diferentes frascos de grasa se compilan de forma independiente en imágenes acoplables y la imagen con una versión específica se inicia directamente al inicio.

En comparación con la solución B, la solución A se caracteriza por una menor dependencia del registro de Docker (es decir, el almacén de imágenes de Docker) y menores requisitos para el proceso de compilación inicial.

Después de adoptar Spring Boot, ¿cómo se debe realizar la gestión técnica?

Precisamente porque Spring Boot tiene el mismo origen que Spring, para la mayoría de desarrolladores de Java, el coste de aprender Spring es casi nulo.

Los puntos clave a aprender al practicar Spring Boot, o los puntos clave para cambiar la forma de pensar son:

1) Esto es particularmente importante para la comprensión de REST, que requiere El diseño y desarrollo de múltiples Cuando se logra el rol, muchas personas no comprenden el protocolo HTTP 1.1 y la esencia de REST, lo que hace que REST se "use a ciegas" y produzca algunos efectos negativos.

2) La comprensión de YAML y la comprensión de JavaConfig son relativamente simples. Básicamente, simplifican el archivo xml y proporcionan capacidades de expresión de configuración equivalentes.

1. La rica cadena de herramientas aporta beneficios a la promoción de SpringBoot.

2. La cadena de herramientas de SpringBoot proviene principalmente de dos aspectos:

1) La cadena de herramientas acumulada por el Spring original

2) SpringMVC u otro REST; framework utiliza el protocolo HTTP, lo que hace que las herramientas ricas en HTTP sean un recurso natural para Spring Boot.

SpringBoot proporciona múltiples "Perfiles" para el archivo de configuración mencionado anteriormente: "application.yml", que puede facilitar a los desarrolladores describir la configuración de diferentes entornos, como la dirección de conexión de la base de datos, el nombre de usuario y la contraseña.

Pero para los usuarios empresariales, escribir configuraciones para diferentes entornos en el mismo archivo de configuración es extremadamente inseguro y una medida muy peligrosa.

Un ejemplo que se menciona a menudo es que con el avance del código abierto, muchas empresas de Internet han enviado códigos relevantes a comunidades de código fuente abierto como github y no han revisado estrictamente el código, lo que resulta en algunos ". "contraseñas" están expuestas. Algunas personas con malas intenciones utilizan herramientas de búsqueda para extraer específicamente estas palabras clave, lo que a su vez hace que la base de datos sea "arrastrada".

Por lo tanto, para los usuarios empresariales, se deben utilizar sistemas de gestión de configuración más centralizados para almacenar estrictamente las configuraciones de diferentes entornos.

Aunque el actuador de SpringBoot en sí proporciona el método de autenticación más simple basado en "nombre de usuario + contraseña", protege la protección más básica de datos confidenciales en los indicadores de rendimiento durante el tiempo de ejecución del marco.

En el proceso de aplicación real de este tipo de protección, falta la gestión de "nombre de usuario + contraseña" y falta el proceso de configuración de seguridad de "nombre de usuario + contraseña".

SpringBoot tampoco proporciona ninguna función de protección para las funciones que desarrollamos nosotros mismos.

En términos generales, un canal seguro (canal de transmisión de información) requiere que ambas partes comunicantes se autentiquen entre sí antes de que se transmita formalmente la información. El proveedor de servicios también debe autenticarse mutuamente sobre esta base. para obtener permisos para garantizar la seguridad empresarial. Estos contenidos también requieren extensiones de seguridad periférica basadas en SpringBoot, como el uso de S-EDA mencionado anteriormente para el control de seguridad a nivel de proceso. Estos también deben contar con el apoyo de servicios de seguridad de apoyo.

En términos generales, mientras una empresa esté conectada a Internet, cualquier "actividad de mercado" orientada al consumidor probablemente generará una gran cantidad de tráfico hacia la empresa.

En las empresas tradicionales, la mayoría de los sistemas son sistemas de soporte de información de gestión. Los principales usuarios de dichos sistemas cuando se diseñan son los empleados internos y los proveedores externos limitados. Este tipo de sistema existe desde hace mucho tiempo en las empresas y tiene mucho acoplamiento funcional antes de que se desacoplen las funciones, es muy inadecuado o no puede servir directamente a los usuarios de Internet.

SpringBoot en sí no proporciona tales medidas de control de flujo, por lo que debe combinarse con el S-EDA mencionado anteriormente para controlar el flujo y combinarse con las capacidades de expansión horizontal de la capa inferior (por ejemplo, Kubernets) para lograr una carga de tráfico razonable Expansión dinámica.

Además, en el diseño de procesos comerciales largos, se deben utilizar métodos asincrónicos tanto como sea posible. Por ejemplo, la llamada de interfaz devuelve un "número de aceptación" en lugar de los resultados del procesamiento comercial, para Para evitar la llegada de negocios explosivos, el bloqueo causado por las llamadas sincrónicas hace que el sistema colapse rápidamente. Estos también son problemas que SpringBoot por sí solo no resuelve.

Resumamos: