赞
踩
每个 Dapr CLI 的发布版本还包括一个适用于 Windows 的安装程序。 您可以手动下载MSI:
dapr.msi
。$Env:SystemDrive\dapr
。Install
开始安装。 安装完成后,您将看到一条最终消息。安装目录“D:\dapr\”,将安装目录添加到用户的PATH环境变量中,PowerShell验证
dapr -h
PS C:\Windows\system32> dapr -h __ ____/ /___ _____ _____ / __ / __ '/ __ \/ ___/ / /_/ / /_/ / /_/ / / \__,_/\__,_/ .___/_/ /_/ =============================== Distributed Application Runtime Usage: dapr [flags] dapr [command] Available Commands: annotate Add dapr annotations to a Kubernetes configuration. Supported platforms: Kubernetes build-info Print build info of Dapr CLI and runtime completion Generates shell completion scripts components List all Dapr components. Supported platforms: Kubernetes configurations List all Dapr configurations. Supported platforms: Kubernetes dashboard Start Dapr dashboard. Supported platforms: Kubernetes and self-hosted help Help about any command init Install Dapr on supported hosting platforms. Supported platforms: Kubernetes and self-hosted invoke Invoke a method on a given Dapr application. Supported platforms: Self-hosted list List all Dapr instances. Supported platforms: Kubernetes and self-hosted logs Get Dapr sidecar logs for an application. Supported platforms: Kubernetes mtls Check if mTLS is enabled. Supported platforms: Kubernetes publish Publish a pub-sub event. Supported platforms: Self-hosted run Run Dapr and (optionally) your application side by side. Supported platforms: Self-hosted status Show the health status of Dapr services. Supported platforms: Kubernetes stop Stop Dapr instances and their associated apps. Supported platforms: Self-hosted uninstall Uninstall Dapr runtime. Supported platforms: Kubernetes and self-hosted upgrade Upgrades or downgrades a Dapr control plane installation in a cluster. Supported platforms: Kubernetes version Print the Dapr runtime and CLI version Flags: -h, --help help for dapr --log-as-json Log output in JSON format --runtime-path string The path to the dapr runtime installation directory -v, --version version for dapr Use "dapr [command] --help" for more information about a command.
init命令会用到特殊网络,如果没有,可以参考安装及初始化Dapr方式(国内)
dapr init
PS C:\Windows\system32> dapr init
Making the jump to hyperspace...
Container images will be pulled from Docker Hub
Installing runtime version 1.13.2
Downloading binaries and setting up components...
Downloaded binaries and completed components set up.
daprd binary has been installed to C:\Users\sywq6\.dapr\bin.
dapr_placement container is running.
dapr_redis container is running.
dapr_zipkin container is running.
Use `docker ps` to check running containers.
Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
init完会生成“.dapr”文件夹,存在的文件如下
│ config.yaml │ ├─bin │ │ daprd.exe │ │ dashboard.exe // dapr看板程序 │ │ │ └─web │ └─dist │ │ favicon.ico │ │ index.html │ │ main.js │ │ main.js.map │ │ polyfills-es5.js │ │ polyfills-es5.js.map │ │ polyfills.js │ │ polyfills.js.map │ │ runtime.js │ │ runtime.js.map │ │ src_app_pages_pages_module_ts.js │ │ src_app_pages_pages_module_ts.js.map │ │ styles.css │ │ styles.css.map │ │ vendor.js │ │ vendor.js.map │ │ │ ├─assets │ │ └─images │ │ dapr.png │ │ logo-white.svg │ │ logo.svg │ │ │ └─lib │ └─vs │ │ loader.js │ │ │ ├─base │ │ ├─browser │ │ │ └─ui │ │ │ └─codicons │ │ │ └─codicon │ │ │ codicon.ttf │ │ │ │ │ └─worker │ │ workerMain.js │ │ │ ├─basic-languages │ │ ├─abap │ │ │ abap.js │ │ │ │ │ ├─apex │ │ │ apex.js │ │ │ │ │ ├─azcli │ │ │ azcli.js │ │ │ │ │ ├─bat │ │ │ bat.js │ │ │ │ │ ├─bicep │ │ │ bicep.js │ │ │ │ │ ├─cameligo │ │ │ cameligo.js │ │ │ │ │ ├─clojure │ │ │ clojure.js │ │ │ │ │ ├─coffee │ │ │ coffee.js │ │ │ │ │ ├─cpp │ │ │ cpp.js │ │ │ │ │ ├─csharp │ │ │ csharp.js │ │ │ │ │ ├─csp │ │ │ csp.js │ │ │ │ │ ├─css │ │ │ css.js │ │ │ │ │ ├─dart │ │ │ dart.js │ │ │ │ │ ├─dockerfile │ │ │ dockerfile.js │ │ │ │ │ ├─ecl │ │ │ ecl.js │ │ │ │ │ ├─elixir │ │ │ elixir.js │ │ │ │ │ ├─fsharp │ │ │ fsharp.js │ │ │ │ │ ├─go │ │ │ go.js │ │ │ │ │ ├─graphql │ │ │ graphql.js │ │ │ │ │ ├─handlebars │ │ │ handlebars.js │ │ │ │ │ ├─hcl │ │ │ hcl.js │ │ │ │ │ ├─html │ │ │ html.js │ │ │ │ │ ├─ini │ │ │ ini.js │ │ │ │ │ ├─java │ │ │ java.js │ │ │ │ │ ├─javascript │ │ │ javascript.js │ │ │ │ │ ├─julia │ │ │ julia.js │ │ │ │ │ ├─kotlin │ │ │ kotlin.js │ │ │ │ │ ├─less │ │ │ less.js │ │ │ │ │ ├─lexon │ │ │ lexon.js │ │ │ │ │ ├─liquid │ │ │ liquid.js │ │ │ │ │ ├─lua │ │ │ lua.js │ │ │ │ │ ├─m3 │ │ │ m3.js │ │ │ │ │ ├─markdown │ │ │ markdown.js │ │ │ │ │ ├─mips │ │ │ mips.js │ │ │ │ │ ├─msdax │ │ │ msdax.js │ │ │ │ │ ├─mysql │ │ │ mysql.js │ │ │ │ │ ├─objective-c │ │ │ objective-c.js │ │ │ │ │ ├─pascal │ │ │ pascal.js │ │ │ │ │ ├─pascaligo │ │ │ pascaligo.js │ │ │ │ │ ├─perl │ │ │ perl.js │ │ │ │ │ ├─pgsql │ │ │ pgsql.js │ │ │ │ │ ├─php │ │ │ php.js │ │ │ │ │ ├─postiats │ │ │ postiats.js │ │ │ │ │ ├─powerquery │ │ │ powerquery.js │ │ │ │ │ ├─powershell │ │ │ powershell.js │ │ │ │ │ ├─pug │ │ │ pug.js │ │ │ │ │ ├─python │ │ │ python.js │ │ │ │ │ ├─qsharp │ │ │ qsharp.js │ │ │ │ │ ├─r │ │ │ r.js │ │ │ │ │ ├─razor │ │ │ razor.js │ │ │ │ │ ├─redis │ │ │ redis.js │ │ │ │ │ ├─redshift │ │ │ redshift.js │ │ │ │ │ ├─restructuredtext │ │ │ restructuredtext.js │ │ │ │ │ ├─ruby │ │ │ ruby.js │ │ │ │ │ ├─rust │ │ │ rust.js │ │ │ │ │ ├─sb │ │ │ sb.js │ │ │ │ │ ├─scala │ │ │ scala.js │ │ │ │ │ ├─scheme │ │ │ scheme.js │ │ │ │ │ ├─scss │ │ │ scss.js │ │ │ │ │ ├─shell │ │ │ shell.js │ │ │ │ │ ├─solidity │ │ │ solidity.js │ │ │ │ │ ├─sophia │ │ │ sophia.js │ │ │ │ │ ├─sparql │ │ │ sparql.js │ │ │ │ │ ├─sql │ │ │ sql.js │ │ │ │ │ ├─st │ │ │ st.js │ │ │ │ │ ├─swift │ │ │ swift.js │ │ │ │ │ ├─systemverilog │ │ │ systemverilog.js │ │ │ │ │ ├─tcl │ │ │ tcl.js │ │ │ │ │ ├─twig │ │ │ twig.js │ │ │ │ │ ├─typescript │ │ │ typescript.js │ │ │ │ │ ├─vb │ │ │ vb.js │ │ │ │ │ ├─xml │ │ │ xml.js │ │ │ │ │ └─yaml │ │ yaml.js │ │ │ ├─editor │ │ editor.main.css │ │ editor.main.js │ │ editor.main.nls.de.js │ │ editor.main.nls.es.js │ │ editor.main.nls.fr.js │ │ editor.main.nls.it.js │ │ editor.main.nls.ja.js │ │ editor.main.nls.js │ │ editor.main.nls.ko.js │ │ editor.main.nls.ru.js │ │ editor.main.nls.zh-cn.js │ │ editor.main.nls.zh-tw.js │ │ │ └─language │ ├─css │ │ cssMode.js │ │ cssWorker.js │ │ │ ├─html │ │ htmlMode.js │ │ htmlWorker.js │ │ │ ├─json │ │ jsonMode.js │ │ jsonWorker.js │ │ │ └─typescript │ tsMode.js │ tsWorker.js │ └─components pubsub.yaml statestore.yaml
正常Init完,会看到启动如下三个服务
如果没有使用特殊网络,大概率会因为网络原因,导致安装失败
dapr uninstall
离线下载文件部分可以参考这篇文章:安装及初始化Dapr方式(国内)
PowderShell执行
docker ps --format "{{.Image}} - {{.Ports}} - {{.Names}}"
PS C:\Windows\system32> docker ps --format "{{.Image}} - {{.Ports}} - {{.Names}}"
daprio/dapr:1.13.2 - 0.0.0.0:58080->8080/tcp, 0.0.0.0:59090->9090/tcp, 0.0.0.0:6050->50005/tcp - dapr_placement
openzipkin/zipkin - 9410/tcp, 0.0.0.0:9411->9411/tcp - dapr_zipkin
redis:6 - 0.0.0.0:6379->6379/tcp - dapr_redis
dapr dashboard Dapr Dashboard running on http://localhost:8080
浏览器打开“http://localhost:8080/”,打开dapr Dashboard
浏览器打开“http://localhost:9411/”,打开Zipkin看板
打开VS Code,打开终端,新建.NET项目
dotnet new webapi -o dapr.microservice.webapi
cd .\dapr.microservice.webapi\
dotnet add package Dapr.AspNetCore
修改文件Program.cs
的内容
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers().AddDapr(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } //app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.MapSubscribeHandler(); app.Run("http://localhost:5000");
新建文件HelloWorldController.cs
using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class HelloController : ControllerBase { private readonly ILogger<HelloController> _logger; public HelloController(ILogger<HelloController> logger) { _logger = logger; } [HttpGet()] public ActionResult<string> Get() { Console.WriteLine("Hello, World."); return "Hello, World"; } }
终端启动项目
dotnet run
使用PowerShell查看结果
PS C:\Users\sywq6> curl http://localhost:5000/hello StatusCode : 200 StatusDescription : OK Content : Hello, World RawContent : HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: text/plain; charset=utf-8 Date: Wed, 15 May 2024 05:31:32 GMT Server: Kestrel Hello, World Forms : {} Headers : {[Transfer-Encoding, chunked], [Content-Type, text/plain; charset=utf-8], [Date, Wed, 15 May 2024 0 5:31:32 GMT], [Server, Kestrel]} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 12
dapr run --app-id hello-world --app-port 5000 --dapr-http-port 5010 dotnet run
说明:
这时,再次浏览器打开“http://localhost:8080/”,打开dapr Dashboard,会看到app-id为“hello-world”程序
传统微服务中,要实现链路追踪,对代码的侵入强
Dapr 在 Sidecar 中添加了一个 http/grpc中间件。拦截所有应用程序流量,并自动注入关联 ID 以跟踪分布式事务
使用 Zipkin 协议进行分布式跟踪,无需代码检测,使用可配置的跟踪级别自动跟踪所有流量
浏览器打开“http://localhost:9411/”,打开Zipkin管理页面,【RUN QUERY】会看到如下结果
PowerShell执行,及其结果如下
curl http://localhost:5010/v1.0/invoke/hello-world/method/hello
PS C:\Windows\system32> curl http://localhost:5010/v1.0/invoke/hello-world/method/hello StatusCode : 200 StatusDescription : OK Content : Hello, World RawContent : HTTP/1.1 200 OK Traceparent: 00-ebd2a75c457c6a6c5fefa8d50be51cfe-ee934c87a7cf2b7b-01 Content-Length: 12 Content-Type: text/plain; charset=utf-8 Date: Wed, 15 May 2024 02:57:08 GMT Server: Kestrel... Forms : {} Headers : {[Traceparent, 00-ebd2a75c457c6a6c5fefa8d50be51cfe-ee934c87a7cf2b7b-01], [Content-Length, 12], [Con tent-Type, text/plain; charset=utf-8], [Date, Wed, 15 May 2024 02:57:08 GMT]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 12
Zipkin管理页面,能够查询到刚才调用Api的记录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。