在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. ArcGIS温泉数据聚类分析、核密度分析

    这期博主给大家介绍下ArcGIS中的Riple's K 函数.与Kernel核密度分析. 首先从百度获取了湖南省的温泉数据.如图: 湖南省温泉数据 1.数据处理 (1)复制粘贴x.y坐标. (2)用快 ...

  2. 基于python 实现KNN 算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/11/7 14:50 # @Author : gylhaut # @Site ...

  3. ## [湖南省赛2019]Findme ###

    [湖南省赛2019]Findme 1.题目概述 2.解题过程 010打开这几张图片 先简单分析一下这几张图片 简单分析 1.png 从外观上,1.png明显高度太低,需要更改 2.png 2.png末 ...

  4. JAVA 线上问题排查方法

    CPU 磁盘 内存 GC问题 网络 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍. 同时例如jstack.jma ...

  5. Java案例——学生管理系统

    简单完整的学生管理系统 学生类 public class Student { private String id; private String age; private String name; p ...

  6. 第3 章 802.11 MAC

    一 前言 802.11 规格的关键在于MAC(介质访问控制层),属于数据链路层,它定义了数据帧怎样在介质上进行传输.MAC 位于各种物理层之上,控制数据的传输.不同的物理层可以提供不同的传输速度,不过 ...

  7. Mysql学习笔记-临键锁实验

    前言 昨天同事跟我聊到一个问题:InnoDB里面间隙锁锁住的数据可以update么?我们经常都说间隙锁是InnoDB在RR隔离级别下防止幻读的一种处理手段.它可以防止数据在间隙范围中insert数据, ...

  8. 数据库中间件ShardingSphere-Proxy(一)

    1.现实中的问题 我们知道数据库的数据,基本80%的业务是查询,20%的业务涵盖了增删改,经过长期的业务变更和积累数据库的数据到达了一定的数量之后,直接影响的是用户与系统的交互,查询时的速度,插入数据 ...

  9. Java注释相关以及IDEA配置相关的注释

    本文章主要包括以下6个内容: 一.注释分类以及javadoc的使用 二.使用Alibaba Java Coding Guidelines规范编码. 三.IDEA配置类注释 四.IDEA配置方法注释 = ...

  10. 是否可以从一个static方法内部调用非static方法?

    不可以.静态成员不能调用非静态成员. 非static方法属于对象,必须创建一个对象后,才可以在通过该对象来调用static方法.而static方法调用时不需要创建对象,通过类就可以调用该方法.也就是说 ...