Red de conocimiento informático - Espacio del host - Práctica de Dapr - 4. Llamada de servicio

Práctica de Dapr - 4. Llamada de servicio

Al utilizar llamadas de servicio, su aplicación puede comunicarse de manera confiable y segura con otras aplicaciones utilizando protocolos gRPC o HTTP estándar.

Primero, permítanos hacer algunas preguntas:

En este punto, encontrará que HttpClientFactory no puede completar estas tareas por usted y que estas funciones son esenciales en los microservicios. A continuación, veamos la función de las llamadas de servicio

Primero, veamos el orden de las llamadas entre dos servicios

De forma predeterminada, las llamadas están en el mismo espacio de nombres que las llamadas de servicio Otros servicios puede usar AppID directamente (suponiendo que sea: nodeapp)

Las llamadas de servicio también admiten llamadas entre espacios de nombres. En todas las plataformas de host compatibles, Dapr AppID sigue el formato FQDN, que incluye el espacio de nombres de destino.

Por ejemplo, llame al espacio de nombres: producción, AppID: nodeapp

Esto es especialmente útil para llamadas entre espacios de nombres en clústeres K8

Verificación mutua (mTLS), incluida la transferencia automática de certificados a través del servicio Dapr Sentry, garantiza que todas las llamadas entre aplicaciones Dapr sean seguras. La siguiente imagen muestra una aplicación autohospedada.

Las aplicaciones pueden utilizar políticas de acceso para controlar qué otras aplicaciones pueden llamarlas y qué están autorizadas a hacer. Esto le permite limitar el acceso a la información personal confidencial de las aplicaciones a aplicaciones no autorizadas y, combinado con una comunicación segura entre servicios, proporciona una implementación suave de múltiples inquilinos.

Si hay una falla en la llamada o un error transitorio, la llamada de servicio realizará un reintento automático y establecerá un período de reserva.

Nota: El reintento automático está habilitado de forma predeterminada y también se puede deshabilitar. Sin embargo, sería muy peligroso si los reintentos automáticos no están desactivados y el servicio no admite la empotencia. Se recomienda que la interfaz del servicio esté diseñada para admitir la empotencia, que también es una opción estándar para los microservicios.

Dapr se ejecuta en una variedad de plataformas de alojamiento. Para implementar el descubrimiento de servicios y la invocación de servicios, Dapr utiliza un componente de resolución de nombres conectable. Por ejemplo, el componente de resolución de nombres de K8s utiliza el servicio DNS de K8s para resolver la ubicación de otras aplicaciones que se ejecutan en el clúster. Las máquinas autohospedadas pueden utilizar el componente de resolución de nombres mDNS. El componente de resolución de nombres de Consul se puede utilizar en cualquier entorno alojado, incluidos K8 o entornos autohospedados

Una imagen vale más que mil palabras, solo use la llamada de rotación mDNS

De forma predeterminada , la aplicación Se realizará un seguimiento de todas las llamadas entre programas y se recopilarán métricas para proporcionar información y diagnósticos sobre la aplicación, lo cual es especialmente importante en escenarios de producción. Esto le brindará un gráfico de llamadas y métricas para llamadas entre servicios.

Pythonapp llama a nodeapp a través del sidecar Dapr, la API y el proxy gRPC llamados a través del servicio siguen siendo el mismo flujo de llamadas que vio anteriormente, por lo que es independiente del idioma

Cree un ASP vacío. NET Core y modifique launchSettings.json para configurar el puerto de inicio para iniciar HTTP en 5000

Modifique el archivo Program.cs

En este momento, un **** Contiene 4 servicios

Ejecute Assignment.Server en el directorio dapr-study-room\Assignment04\Assignment.

Abra la herramienta de línea de comando y ejecute el siguiente comando

Llame al servicio: abra una nueva herramienta de línea de comando y ejecute el siguiente comando

Puede encontrar que los 4 comandos se llamaron correctamente. pero Assignment La salida de .Server es un poco inesperada

Sí, no existe Hello World1! La salida del servidor es correcta.

Además de la llamada exitosa de la aplicación, la salida de la llamada de invoke también tiene una línea adicional de Hello World1.

Al mismo tiempo, la salida de Assignment.Server también es correcta

Además de que la aplicación se llamó correctamente, la salida de llamada de invoke también tiene una línea adicional de Hello World1! Además, invoke también tiene amigos a quienes les gusta estudiar Dapr CLI y pueden continuar probando algunos parámetros, como --data y --data-file. Pero, en general, no hay ningún problema con el SDK

Cree un proyecto de aplicación de consola, use el administrador de paquetes NuGet para agregar el SDK Dapr.Client y modifique el archivo Program.cs

Ver algunos detalles

Nota:

Utilice la herramienta de línea de comandos para abrir el directorio dapr-study-room\Assignment04\Assignment.Client y ejecute el comando

Si no está en VS Cuando usa PowerShell para ejecutar dapr en la terminal Code, puede encontrar el siguiente error

Incluso si no está ejecutando, se recomienda que aprenda a admitir puertos no predeterminados

Debido a que dapr /doddgu no se especificó cuando se usó dapr run arriba /dapr-study-room

Nuestro objetivo es ser gratuito, fácil de usar, escalable, rico en funciones y robusto.

Como resultado, estamos desarrollando un nuevo marco, el marco MASA, que se basa en conceptos de diseño de bloques de construcción.

Actualmente el código fuente se ha sincronizado con Github (el sitio web de documentación está en planificación y se mejorará gradualmente):

MASA.BuildingBlocks

MASA.Contrib

MASA.Utils

MASA.EShop

BlazorComponent

MASA.Blazor

Grupo QQ: 7424099

p>

Grupo WeChat: agregue operaciones técnicas WeChat (MasaStackTechOps), anote sus intereses e invítelo a unirse al grupo.