dapr
Dapr
Deploying Linux server application code was difficult because languages used for writing servers have a lot of dependencies, so Docker was created to simplify things. But getting Docker containers to run reliably across multiple servers was pretty difficult, so Kubernetes was created to simplify things. Deploying multiple services on Kubernetes was kinda complicated though, but now that Dapr has been created to simplify things, deploying our code is easy as pie.
dapr 是一个分布式应用开发框架由微软开源。
Getting Started
vscode 配置 devcontainer 开发环境
1 | "features": { |
配置 desktop-lite 浏览器
1 | apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get install -y firefox-esr |
可将安装移动到 dockerfile 中,dockerfile 配置 dapr cli 运行 path。
1 | # 需要添加预设路径,该路径可通过环境变量配置 |
初始化 dapr,安装 dapr cli 命令行工具。
-
使用 dev container 只需要在 features 中注册
"ghcr.io/dapr/cli/dapr-cli:0": {}
-
使用命令行安装,使用 dapr 官方脚本 `wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
1 | dapr -h |
测试 API
1 | # 使用 app id (my-app) 启动一个 dapr app,并指定 app端口为 3500 |
Quickstarts Demos
Quickstarts 主要列出了官方的示例,及应用,开始之前需要设置好 dapr 环境。
Service Invocation
Service Invocation 实现使用 HTTP 或 gRPC 在两个服务之间进行同步通信。主要专注于解决:
-
服务发现。如何发现不同的服务。
-
标准化服务间调用 API 协议。如何确定服务间调用协议。
-
服务间通信安全。如何在服务间安全设置加密及访问控制。
-
减缓请求超时和失败处理。如何处理重试及临时错误。
-
实现可观测性和跟踪。如何跟踪及统计服务间通信。
调用实现,可以有三种:
-
HTTP and gRPC:不改动原有代码,使用 dapr run 指定运行对应通信协议的服务。
- HTTP: HTTP Configuration
- gRPC: Configure and Invocation。
-
Call to the dapr sidecar url API: 通过直接调用
localhost:<dapr-http-port>/API
调用。
1 | # Invoke a sample method on target app with POST Verb |
State Management
State Management 即,数据持久化管理。
Hosting options
Kubernetes
配置 dapr 到 k8s。
本地部署
安装 minikube,并初始化 dapr,官方示例。
1 | # 开启本地 minikube 集群 |
Zipkin
Dapr 支持使用 Zipkin 进行分布式跟踪,您可以通过以下步骤来实现:
-
安装 Zipkin
您可以通过以下命令安装 Zipkin:
1 | docker run -d -p 9411:9411 openzipkin/zipkin |
-
配置 Dapr
在 Dapr 应用程序中启用 Zipkin 跟踪,需要在 Dapr 配置文件中添加以下内容:
1 | apiVersion: dapr.io/v1alpha1 |
-
启动 Dapr 应用程序
在启动 Dapr 应用程序时,需要指定 Dapr 配置文件的位置。例如,如果您的 Dapr 配置文件名为 config.yaml,则可以使用以下命令启动 Dapr 应用程序:
1 | dapr run --app-id my-app --app-port 3500 --config config.yaml node app.js |
-
查看跟踪数据
在 Zipkin UI 中,您可以查看跟踪数据。您可以通过以下 URL 访问 Zipkin UI (http://localhost:9411/zipkin/)