zoukankan      html  css  js  c++  java
  • Dapr项目应用探索

    背景介绍

     前面文章对Dapr的基本信息进行了学习,接下来尝试将Dapr应用相关应用中。

     接下来一步步实现应用dapr功能。

    一、预期效果

     

     如上图应用Dapr点包含

      a) 报表服务绑定统一数据源服务:接受更新通知
      b) 业务系统调用报表操作:采用Dapr方式

     二、Dapr应用:

    • 绑定统一数据源:更新通知:

      a) dapr创建绑定处理组件:(http调用接口->放到\.dapr\components目录)

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: uds
    spec:
      type: bindings.http
      version: v1
      metadata:
      - name: url
        value: http://127.0.0.1:8230/BindingInvoke/InvkeBind

      在Dashboard中查看添加的组件:

      

       b) 在统一数据源中数据变化时,调用执行binding方法:

    //执行绑定:对应绑定的名称:uds
    _daprClient.InvokeBindingAsync<dynamic>("uds", "post", new { data = apps, type = refCache3 ? 3 : 1 });

       c) 在报表服务中提供对应服务:

    [Route("api/[controller]/")]
    [ApiController]
    public class BindingInvokeController : ControllerBase
    {
        [Route("InvkeBind")]
        [HttpPost]
        public IActionResult InvkeBind([FromBody] InvokeBindDto invokeBindDto)
        {
            Console.WriteLine(JsonConvert.SerializeObject(invokeBindDto));
            return new JsonResult(invokeBindDto);
        }
    }
    public class InvokeBindDto
    {
        public object data { get; set; }
        public int type { get; set; }
    }
    • 业务系统:服务调用:

      a) 引用Nuget包:Dapr.Client

    //Dapr.Client 直接创建
    Install-Package Dapr.Client
    //Dapr.AspNetCore 依赖注入
    Install-Package Dapr.AspNetCore

      b) 创建DaprClient对象:

      • 注入方式:
    //Startup 
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers().AddDapr();
        //……
    }
    
    //依赖注入:DaprClient 
    private readonly ILogger<BindingController> _logger;
    private readonly DaprClient _daprClient;
    public BindingController(ILogger<BindingController> logger, DaprClient daprClient)
    {
        _logger = logger;
        _daprClient = daprClient;
    }
      • 创建方式:
    Dapr.Client.DaprClientBuilder daprClientBuilder = new Dapr.Client.DaprClientBuilder();
    var daprClient = daprClientBuilder.Build();

      c) 调用报表服务接口:

    Dapr.Client.DaprClientBuilder daprClientBuilder = new Dapr.Client.DaprClientBuilder();
    var daprClient = daprClientBuilder.Build();
    var obj = daprClient.InvokeMethodAsync<dynamic>(HttpMethod.Get, "rpts", "api/Run/GetRptParametersByRptId").Result; Console.WriteLine("Dapr调用报表服务(GET)结果:" + System.Text.Json.JsonSerializer.Serialize(obj)); //Post dynamic data = new { rptId = "c34f45f5-e075-9559-44dc-915886c4bde5", rptPars = new { }, rptStaticPars = new { 人员姓名 = "admin", 人员编码 = "admin" }, logLevel = 0 }; var task = daprClient.InvokeMethodAsync<dynamic, dynamic>(HttpMethod.Post, "rpts", "api/Run/ExecDynamicRptByRptId", data); obj = task.Result; Console.WriteLine("Dapr调用报表服务(POST)结果:" + System.Text.Json.JsonSerializer.Serialize(obj)); 

    三、效果:

     1、启动dapr服务:

    //启动统一数据源:
    dapr run --app-id uds --app-port 8220 --dapr-http-port 3500 dotnet UDS.Host.dll
    //启动报表服务
    dapr run --app-id rpts --app-port 8230 --dapr-http-port 3501 dotnet ZLRPTS.Web.Host.dll

     2、业务系统调用服务成功:

      模拟运行业务系统:

      

     3、统一数据源应用修改后报表服务同步更新:

      a) 在UDS中修改数据:

      

      b) 在报表服务中,得到binding响应数据

      

     4、查看zipkin调用记录

      

    四、总结

      本次已初步把dapr相关绑定、服务调用应用到了项目中;接下来进一步对秘钥存储进一步应用。

     

  • 相关阅读:
    STM32F103ZET6 PWM输出
    STM32F103ZET6串口通信
    STM32F103ZET6系统定时器SysTick
    STM32F103ZET6的基本定时器
    npm 安装vue cli脚手架报错 npm err code EEXIST 或者 npm err cb<> never called 解决方案
    Java调用第三方http接口的方式
    机器学习算法原理解析
    Spark MLlib 机器学习
    Spark SQL基本概念与基本用法
    HBase基本概念与基本使用
  • 原文地址:https://www.cnblogs.com/cwsheng/p/15733159.html
Copyright © 2011-2022 走看看