Dapr项目应用探索

背景介绍

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

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

一、预期效果

 0b53e0e79534b292f0670fa2f947a9bb.png

 如上图应用Dapr点包含

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

 二、Dapr应用:

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

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

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: uds
spec:type: bindings.httpversion: v1metadata:- name: urlvalue: http://127.0.0.1:8230/BindingInvoke/InvkeBind

  在Dashboard中查看添加的组件:

  549fd47c5478bc7deeca737548a5d36e.png

   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、业务系统调用服务成功:

  模拟运行业务系统:

  5d49a9209fd8cbf5f36df28f226db1d5.png

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

  a) 在UDS中修改数据:

  f6453c8a46595a4319257a1f64d02669.png

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

  bf1ad642c0b9f514da3d6e1143d3eac6.png

 4、查看zipkin调用记录

  77a938335862b8856904399a22fb12da.png

四、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么当代人越来越不快乐?

全世界只有3.14 % 的人关注了爆炸吧知识小时候哭着哭着就笑了&#xff0c;长大后笑着笑着就哭了。生活不易&#xff0c;成年人叹气&#xff0c;房租水费&#xff0c;学习压力、工作不如意...各种无形的压力&#xff0c;压得人喘不过气。如果一绷得太紧&#xff0c;再坚韧的弦也…

解读C#正则表达式

为什么80%的码农都做不了架构师&#xff1f;>>> 多少年来&#xff0c;许多的编程语言和工具都包含对正则表达式的支持&#xff0c;.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类&#xff0c;而且它们也都与未来的Perl 5中的规则表达式兼…

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续《SAS编程与数据挖掘商业案例》学习笔记&#xff0c;本文侧重数据处理实践&#xff0c;包括&#xff1a;HASH对象、自定义format、以及功能强大的正则表达式 一&#xff1a;HASH对象 Hash对象又称散列表&#xff0c;是根据关键码值而直接进行访问的数据结构&#xff0c;是根…

do { ....} while(0) 在宏里冗余的意义

do { ....} while(0) 在宏里冗余的意义 cocos2d-x提供了许多宏模板&#xff0c;如&#xff1a;CC_SAFE_RETAIN(p),CC_SAFE_DELETE(p) 等等 查看一下CC_SAFE_RETAIN的源码&#xff1a; #define CC_SAFE_RETAIN(p) do { if(p) { (p)->retain(); } } while(0) 为什么…

iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)

2020年09月20日前言&#xff1a;卖掉iPhone7暂时回到Android手机&#xff0c;然后需要将iPhone内的资料迁移到新手机中。我尽量不使用第三方工具实现迁移工作。一般新手机都会有迁移助手&#xff0c;但是都不完美&#xff0c;毕竟是两个不同手机系统&#xff0c;很多东西还是需…

网关和路由的区别

网关&#xff1a;网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B&#xff0c;网络A的IP地址范围为“192.168.1.1~192. 168.1.254”&#xff0c;子网掩码为255.255.255.0&#xff1b;网络B的IP地址范围为“192.168.2.1~192.168.2.254”&#xff0c;子网掩码为25…

Java里阻塞线程的三种实现方法

在日常开发中&#xff0c;我们有时会遇到遇到多线程处理任务的情况&#xff0c;JDK里提供了便利的 ThreadPoolExecutor以及其包装的工具类Executors。但是我们知道 ExecutorService.excute(Runnable r)是异步的&#xff0c;超过线程池处理能力的线程会被加入到执行队列里。有时…

使用 dotnet-outdated 维护项目 nuget 包版本

使用 dotnet-outdated 维护项目 nuget 包版本Intro我们项目中或多或少都会有一些 NuGet 包&#xff0c;使用到 NuGet 包时&#xff0c;如何保证我们的 NuGet 包不会太旧呢&#xff1f;我们可以借助 dotnet-outdated 来检查项目中的 NuGet 包是否有更新Sample首先我们需要执行 d…

mysql-5.5.31主从复制

给数据库用户配置groupadd mysqluseradd -g mysql mysql -s /sbin/nologinrm -rf /home/mysqlmkdir -p /opt/mysqlchmod -R 755 /opt/mysqlchown -R mysql:mysql /opt/mysql准备工作&#xff1a;安装基本依赖包&#xff0c;先用yum安装cmake、automake 、autoconf &#xff0c;…

被一帮小姐姐围着是什么感觉?

1 阿姨&#xff1a;我靠灵魂呼吸...▼2 医学院护理班男生的日常▼3 嫌自己活太久了&#xff1f;▼4 看来还是作业太少了▼5 小孟老师&#xff0c;您妈&#xff01;▼6 哈哈哈哈哈&#xff0c;不行了...▼7 他今天是不会跟你走的&#xff01;&#xff01;&#xff01;▼8 …

OSI各层相关的协议

<pre id"best-content-639348667" class"best-text mb-10" name"code" style"white-space: pre-wrap; word-wrap: break-word;">一、<strong>OSI各层</strong> 物理层&#xff1a;EIA/TIA-232, EIA/TIA-499, V.35, …

仓库处理中 无法修改_上海电商仓储物流公司,冷链仓库-上海玖日仓储

首页 > 新闻列表 > 浏览文章发布时间&#xff1a;2020-10-21 15:03:33 浏览量&#xff1a; 4导读&#xff1a;上海玖日仓储为您提供上海电商仓储物流公司,冷链仓库的相关知识与详情&#xff1a; 货物出入库扫描功能&#xff0c;同时记录扫描时间&#xff1b;完善订单与仓…

java轻量级Http Server

lighttpd 官方主页&#xff1a;www.lighttpd.netLighttpd是一个德国人领导的开源软件&#xff0c;其根本的目的是提供一个专门针对高性能网站&#xff0c;安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销&#xff0c;cpu占用率低&#xff0c;效能好&#…

使用CDN引用jQuery

CDN (Content Delivery Network) 内容分发网络。 Google 为一系列 JavaScript 库提供了免费的 CDN&#xff0c;包括&#xff1a; jQueryPrototypeMooToolsDojoYahoo! YUI如需在您的网页中使用 JavaScript 框架库&#xff0c;只需在 <script> 标签中引用该库即可&#xff…

13 个 C# 10 特性

常量的内插字符串C# 10 允许使用在常量字符串初始化中使用插值, 如下const string name "Oleg"; const string greeting $"Hello, {name}.";Console.WriteLine(greeting); // Output: Hello, Oleg.扩展属性模式从 C# 10 开始&#xff0c;您可以在适当的模…

nodejs安装express框架

安装express框架npm install express -gd-g代表安装到NODE_PATH的lib里面&#xff0c;而-d代表把相依性套件也一起安装。如果沒有-g的话会安装目前所在的目录(会建立一个node_modules的文件夹)&#xff0c;express –help 查看帮助cd /data/wwwroot/express –ejs –sessions m…

学习总结之数据挖掘三大类六分项

Data Mining可分为三大类六分项来说明&#xff1a; Classification和Clustering属于分类区隔类&#xff1b; Regression和Time-series属于推算预测类&#xff1b; Association和Sequence则属于序列规则类。 Classification是根据一些变量的数值做计算&#xff0c;再依照结果作分…

android studio button位置_免费的Android开发环境

Android Studio for mac是一个全面的Android开发环境&#xff0c;Android Studio帮助您设计&#xff0c;构建&#xff0c;测试和调试Android应用程序&#xff0c;利用Android Studio所有特色工具并开发出令人惊叹的应用程序。Android Studio是一个为Android平台开发程序的集成开…

TCP握手/挥手的过程分析

TCP连接建立 在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c;采用三次握手建立一个连接。 服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成&#xff0c;称为被动打开(passive open)。 第一次握手&#xff1a;客户通过调用connec…