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