在k8s 环境下,通过Operator 可以管理Dapr sidecar, 在虚拟机环境下,我们也是非常需要这样的一个管理组件,之前写的一篇文章《 在 k8s 以外的分布式环境中使用 Dapr》 里面介绍了一个案例Dapr case study: Man Group:https://blog.dapr.io/posts/2021/10/05/join-us-for-daprcon-october-19th-20th-2021/ :

在这张图片中,在上图左面,我们看到了“dapr.exe”、我们的应用程序和另一个进程“daprd.exe”之间的通信,该进程实际上是 Sidecar 进程。这是通常的方式(“开箱即用”),例如:

dapr run --app-id backend --app-port 5001  -- dotnet run --urls=http://localhost:5001/ -p ./WeatherForecastService/WeatherForecastService.csproj

dapr run --app-id proxy --app-port 6001  -- dotnet run --urls=http://localhost:6001/ -p ./WeatherForecastProxyService/WeatherForecastProxyService.csproj

图片右面,使用 Sidekick简化了此过程/通信,并且我们可以更好地控制以及其他功能。Dapr Sidekick for .NET 是一个组件,它允许我们将 Dapr 添加到我们的项目中以避免摩擦。简化 .NET 开发和操作。当我们的项目部署在虚拟机环境时,推荐使用这个组件。通过Sidekick 我们的应用程序/进程负责启动和运行 Dapr 所需的一切。

我的示例代码放在这里:https://github.com/geffzhang/ServiceToService-Sideckick ,通过简单的三步就可以完成这项工作。

1、添加Nuget 包 Man.Dapr.Sidekick.AspNetCore :

dotnet add package Man.Dapr.Sidekick.AspNetCore --version 1.2.1
2、修改类 Startup.cs 的  ConfigureServices 方法如下:

public void ConfigureServices(IServiceCollection services){    services.AddControllers();    // Add Dapr Sidekick    services.AddDaprSidekick(Configuration);}

3、接下来,当我们的调用(或代理)应用程序调用另一个应用程序时,名称/id 为“ backend ”,我们需要指定其AppId。以同样的方式,由于我们使用“ http”,我们必须指出"AppSsl": false。所有这些规范都通过“ appsetings.json ” 文件传递给 Sidekick,如下所示。

项目backend 的配置:

"DaprSidekick": {
   // Set the runtime location of config/components files to be the "dapr" folder under the deployed application
   "RuntimeDirectory": "dapr",
   "Sidecar": {
     "AppId": "backend",
     "AppSsl": false,
     "AppPort": 5001,
     "DaprHttpPort": 3501,
     "DaprGrpcPort": 50001
   },
   "Placement": {},
   "Sentry": {}
}

项目 proxy的配置

"DaprSidekick": {
   // Set the runtime location of config/components files to be the "dapr" folder under the deployed application
   "RuntimeDirectory": "dapr",
   "Sidecar": {
     "AppId": "proxy",
     "AppSsl": false,
     "AppPort": 6001,
     "DaprHttpPort": 3601,
     "DaprGrpcPort": 60001
   },
   "Placement": {},
   "Sentry": {}
}

注意对于上述配置文件,由于我们运行多个项目,我们还必须指定“ AppPort ”、“ DaprHttpPort ”和“ DaprGrpcPort ”属性。其余的“Placement”和“Sentry”部分,以及其他属性,暂时可以忽略

RuntimeDirectory  是Dapr 运行时配置文件位置,我们在示例里测试使用Consul 作为服务注册和服务发现组件。

改造后直接运行就可以了,这个特别适合IOT场景下使用Dapr。

dotnet WeatherForecastService.dll --urls=http://localhost:5001

dotnet WeatherForecastProxyService.dll --urls=http://localhost:6001

在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET相关推荐

  1. 【K8S 二】搭建Docker Registry私有仓库(自签发证书+登录认证)(K8S和非K8S环境下)

    目录 生成证书(更新:2022-08-02) 单SAN(Subject Alternative Name)的场景 多SAN(Subject Alternative Name)场景 创建openssl配 ...

  2. spring boot api文档_精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

    一.什么是 RestTemplate? RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpCo ...

  3. 非域环境下使用证书部署数据库(SqlServer2008R2)镜像

    非域环境下使用证书部署数据库(SqlServer2008R2)镜像 前言 部署数据库镜像一般有两种方式域环境下部署http://liulike.blog.51cto.com/1355103/33918 ...

  4. 基于Android9的非root环境下frida-gadget持久化

    基于Android9的非root环境下frida持久化 博客: http://www.zhuoyue360.com 参考: 小肩膀安卓系统沙箱课程 https://bbs.pediy.com/thre ...

  5. 【云原生之kubernetes实战】在k8s环境下部署Snipe-IT固定资产管理平台

    [云原生之kubernetes实战]在k8s环境下部署Snipe-IT固定资产管理平台 一.Snipe-IT介绍 二.检查本地k8s环境 1.检查工作节点状态 2.检查系统pod状态 3.检查kube ...

  6. 非域环境下搭建文件服务器,非域环境下SQL Server搭建Mirror(镜像)的详细步骤...

    原标题:非域环境下SQL Server搭建Mirror(镜像)的详细步骤 1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83. ...

  7. F5在K8S环境下的4、7层应用统一发布

    F5在K8S环境下的4.7层应用统一发布 F5在K8S环境下的4.7层应用统一发布(By Jeremy文轩) 一.实验拓扑 二.K8S环境搭建 三.开始前的准备 1.F5上安装AS3 2.取消阿里云的 ...

  8. 【云原生之kubernetes实战】在k8s环境下部署OneNav个人书签工具

    [云原生之kubernetes实战]在k8s环境下部署OneNav个人书签工具 一.OneNav介绍 1.OneNav简介 2.OneNav特点 二.检查本地k8s环境 1.检查工作节点状态 2.检查 ...

  9. 非Root环境下安卓实现全屏,屏蔽下方虚拟按键:左键、右键。较新安卓系统无法屏蔽Home键。源代码例子

    非Root环境下安卓实现全屏,屏蔽下方虚拟按键:左键.右键.较新安卓系统无法屏蔽Home键. 全屏后,用户上划之后点击虚拟按键如图所示: 代码中分三部分: 1.隐藏屏幕下方的虚拟按键,并且全屏.   ...

最新文章

  1. Linux下安装Java(JDK8)
  2. C语言 读取字符串数组中的字符串并获取字符串的长度
  3. spring 3.0.5+velocity tools 2.0
  4. python的复数实部和虚部都是整数_Python(一)
  5. C语言学习笔记---可变参数
  6. mysql并发量是多少_如何为 MySQL 选择 CPU?
  7. python任务调度系统web_监听调度系统定时执行任务python_websock
  8. 光芒国际——我的面试(二)
  9. 精度提升第一步:形状各异测区的像控点布设方案
  10. 知识点笔记(二维数组排序、统计数组重复个数、)
  11. VS Code 调试 Angular 和 TypeScript 的配置
  12. HDU_2082 找单词 (生成函数)
  13. poj2914无向图的最小割
  14. SQL Server 数据库之启动 SQL Server 2008 服务
  15. 如何选择一款程序员理想中的显示器
  16. 阿里云服务器ECS不能通过浏览器(外网)访问的解决办法
  17. 计算机不支持格式,显示视频格式不支持怎么处理,需要什么软件
  18. 【LOJ6198】谢特(后缀自动机)(01Trie)(dsu on tree)
  19. 你不知道的3D电影7大危害
  20. 使用 Apple Watch S6 测量血氧教程

热门文章

  1. 新浪微博授权认证过程
  2. Elasticsearch学习笔记-04.3批处理
  3. Linux命令-网络命令:wall
  4. C++中事件机制的简洁实现
  5. PDC Party 即将在东莞登场
  6. 做个中国清官网,有人感兴趣吗
  7. python numpy矩阵索引_Numpy中的矩阵索引
  8. 单例模式--工厂模式
  9. Visual Studio 2019 preview中体验C# 8.0新语法
  10. yyblog2.0 数据库开发规范