dapr学习

本文介绍了Dapr的基本概念,包括其作为云原生框架的功能,以及如何配置Redis中间件组件。详细讲解了daprd和daprrun的区别,以及Dapr与protobuf和gRPC的关系,强调了在分布式应用中的集成和使用方式。
摘要由CSDN通过智能技术生成

dapr学习

5.1、概念知识

官方文档:

Dapr 配置选项概述 | Dapr 文档库

run CLI 命令参考 | Dapr 文档库

该部分持续更新中…

dapr云原生框架,服务于开发人员的,是一个cs服务框架

5.2、dapr配置redis中间件组件

1、首先下载redis进行并启动容器

2、dapr中$HOME/.dapr/components目录(没有则自己创建)中创建yaml文件绑定redis,yaml这些文件就是对应的订阅主题、状态部分所需要的。

root@ubuntu:~/.dapr/components# ls
pubsub.yaml  statestore.yaml  subscription.yaml
root@ubuntu:~/.dapr/components# cat pubsub.yaml 
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
spec:
  type: pubsub.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""
root@ubuntu:~/.dapr/components# cat statestore.yaml 
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""
  - name: actorStateStore
    value: "true"
root@ubuntu:~/.dapr/components# cat subscription.yaml 
apiVersion: dapr.io/v1alpha1
kind: Subscription
metadata:
  name: myevent-subscription
spec:
  topic: deathStarStatus
  route: /dsstatus
  pubsubname: pubsub
scopes:
- app1
- app2

再启动daprd如果加载组件仍然找不到则需要dapr run来运行了。

这个错误就是加载组件失败
WARN[0000] failed to load components: open : no such file or directory  app_id=sbtframework_server_test instance=ubuntu scope=dapr.runtime type=log ver=1.6.1

5.3、daprd和dapr run区别

在工程中会有两种启动方式:

方式1,使用daprd来启动dapr服务,然后再起应用程序的服务端去指定端口

#起dapr服务
daprd --app-id sbtframework_server_test --dapr-http-max-request-size 104857600 --app-protocol grpc --app-port 50051 --dapr-grpc-port 64011 --dapr-http-port 64012 --metrics-port 64013 &
#起应用程序服务端
./sbtframework_server 50051
#起应用程序客户端
./sbtframework_client sbtframework_server_test 64011

方式2、dapr run来直接起服务并且把应用程序服务也带起来。

#起dapr服务并将应用程序一起启动
dapr run --app-id sbtframework_server_test --dapr-http-max-request-size 104857600 --app-protocol grpc --app-port 60051 --dapr-grpc-port 54011 --dapr-http-port 54012 --metrics-port 54013 ./catch2test_server
#再起客户端
./sbtframework_client sbtframework_server_test 54011

那么两者的区别其实就是dapr服务是否跟我们应用程序的服务是不是一个进程。

daprd就是两个进程,使用它需要注意的是当第二次启动应用程序服务的时候可以连接不到dapr服务了,因为dapr它存在一个扫描周期,当第一次启动的应用程序服务断开之后就会扫描,如果第二次应用程序服务启动在扫描周期内就可以连接上,否则不能连接上,如连接失败那么需要去kill掉dapr进程再重新起daprd服务,重新操作一次。涉及到的linux命令ps -aux | grep “daprd”,再kill -9 具体ID,也可以直接pkill -9 daprd 。

dapr run 方法启动就是与应用程序的服务端一个进程,结束应用程序的服务端的时候也会把dapr服务结束掉的。

5.4、dapr和protobuf及grpc的关系

Dapr 是一个开源的、跨平台的分布式应用程序运行时,旨在简化构建微服务应用程序的过程。它提供了一组可插拔的构建块,用于处理常见的分布式系统功能,如服务调用、状态管理、事件发布-订阅等。Dapr 可以与各种编程语言和框架一起使用,并且与基础设施无关,可以在本地、云或边缘环境中运行。

ProtoBuf 是一种用于序列化结构化数据的语言无关、平台无关的机制。它使用简洁的二进制格式来表示数据,并提供了代码生成工具,可以根据定义的消息格式自动生成各种编程语言的代码。ProtoBuf 通常用于定义数据模型和消息格式,并用于在不同的系统之间进行数据交换。

gRPC 是一种高性能、开源的远程过程调用框架,可以在客户端和服务器之间进行双向通信。它使用 ProtoBuf 来定义消息格式和数据模型,并使用 HTTP/2 协议进行通信。gRPC 提供了多种语言的支持,并且可以在云和边缘环境中使用。

在分布式系统中,你可以使用 ProtoBuf 和 gRPC 来定义消息格式和数据模型,并使用 Dapr 进行服务调用和处理。Dapr 提供了与 ProtoBuf 和 gRPC 集成的支持,可以使用 ProtoBuf 格式的消息进行服务调用,并使用 gRPC 进行通信。你可以在 Dapr 中使用 ProtoBuf 序列化和反序列化消息,并使用 gRPC 进行远程过程调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值