在k8s 环境下,通过Operator 可以管理Dapr sidecar, 在虚拟机环境下,我们也是非常需要这样的一个管理组件,类似下图:

在这张图片中,在上图左面,我们看到了“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. 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...

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

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

  3. MyBatis在非Spring环境下第三方DataSource设置-Druid篇

    首先在ITEye上面看到一个同标题文章,在此说明,此文并非转载自 http://iintothewind.iteye.com/blog/2069522 ,因为这篇文章根本就是错误的,照着上面做,工程可 ...

  4. 非域环境下SQL Server搭建Mirror(镜像)的详细步骤

    1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83.XXX.XXX SQL Server 2012 - 11.0.5058.0 ...

  5. spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用

    通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...

  6. 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

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

  7. 【原创】K8S环境下研发如何本地调试?kt-connect使用详解

    K8S环境下研发如何本地调试?kt-connect使用详解 背景 注:背景有点啰嗦,讲讲一路走来研发本地调试的变化,嫌烦的可以直接跳过,不影响阅读. 2019年 我在的公司当时是个什么情况,只有两个J ...

  8. 非node环境下的vue.js 实现简单的购物车计算功能 样式请无视

    都说vue的双向数据绑定好用,自己用了下,感觉做购物车没想象中好用.自己的实现如下: <!DOCTYPE html> <html lang="en"> &l ...

  9. SQL非域环境下带自动故障转移数据库镜像的实现方法(包括镜像服务器)

    使用数据库镜像来提高数据库的高可用性,在镜像服务器创建镜像数据库的快照以卸载报表查询对生产数据库的负载.TechNet有讲座对此技术进行介绍,但看到大家在讲座的讨论区中遇到了很多问题,下面我把在非域环 ...

随机推荐

  1. 2.9 C++STL map/multimap容器详解

    文章目录 2.9.1 引入 2.9.2 代码示例 map案列 multimap案列 2.9.3 代码运行结果 总结 2.9.1 引入 map相对于set区别,map具有键值和实值,所有元素根据键值自动 ...

  2. Android 12(S) 图形显示系统 - BufferQueue的工作流程(十)

    题外话 疫情隔离在家,周末还在努力学习的我  ..... 一.前言 上一篇文章中,有基本讲清楚Producer一端的处理逻辑,最后也留下了一个疑问: Consumer是什么时候来消费数据的?他是自己主 ...

  3. 从SpringBoot到SpringCloudAlibaba简明教程(一):初识SpringBoot及其基础项目构建

    前言 Spring框架的大名想必大家早已如雷贯耳,我们来看一下springboot诞生的初衷,以及它在springframe的基础上解决了哪些痛点. 很久以前,J2EE还是java企业级应用的标准规范 ...

  4. Linux指令入门-系统管理(云小宝码上送祝福,免费抽iphone13任务)

    码上送祝福,带云小宝回家 做任务免费抽iphone13,还可得阿里云新春限量手办 日期:2021.12.27-2022.1.16 云小宝地址:https://developer.aliyun.com/ ...

  5. 7月2日 Django 生成验证码、

    html页面里 {# 验证码 #} <div class="form-group " id="v-code-wrapper"> <label ...

  6. sharding-jdbc教程 看这一篇就够了

    ​ Sharding-JDBC是ShardingSphere的第一个产品,也是ShardingSphere的前身. 它定位为轻量级Java框架,在Java的JDBC层提供的额外服务.它使用客户端直连数 ...

  7. struts2学习一:hello struts2及struts2环境配置中遇到的问题

    17年下半年的时候简单学了下strus2,好吧,现在已经全忘了,idea也是刚开始用,本来想按教程写个hello struts2,结果,出了以下系列问题. pre:step1-5是我按照百度的教程搭的 ...

  8. List、Map、Set 三个接口存取元素时,各有什么特点?

    List 以特定索引来存取元素,可以有重复元素.Set 不能存放重复元素(用对象的 equals()方法来区分元素是否重复).Map 保存键值对(key-value pair)映射, 映射关系可以是一 ...

  9. 运筹学之"连通图"和"最小枝杈树"和"最短路线问题"

    一.连通图 必须每个点都有关系 图1 不算连通图 图2含有圈v1,v2,v5,可优化 图3就是所需的连通图 注意:图>连通图>树 二.最小枝杈树 获取是所有节点的最小值,只要是连通图就好, ...

  10. servlet中的HttpServletResponse对象

    当有多个客户端浏览器去请求Tomcat时,Tomcat会为每一个客户端浏览器创建一对独立的HttpServletRequest与HttpServletResponse对象 HttpServletRes ...