dapr学习

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.redisversion: v1metadata:- name: redisHostvalue: localhost:6379- name: redisPasswordvalue: ""
root@ubuntu:~/.dapr/components# cat statestore.yaml 
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: localhost:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"
root@ubuntu:~/.dapr/components# cat subscription.yaml 
apiVersion: dapr.io/v1alpha1
kind: Subscription
metadata:name: myevent-subscription
spec:topic: deathStarStatusroute: /dsstatuspubsubname: 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 进行远程过程调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产算力芯片排行榜前十名

算力芯片是指用于进行大规模计算的集成电路芯片,它的性能和效率将直接影响到人工智能、大数据分析、密码学和区块链等领域的发展。近年来,随着国内算力芯片制造企业的迅速崛起,国产算力芯片在技术研发和市场表现上都取得了显著的进步。下面就…

CBO VS ABO,哪种策略才更能优化FB广告?

海外创业时,FB广告无疑是吸引目标受众、推动业务增长的重要渠道之一!然而令大家头疼的却是在CBO与ABO的选择上,今天就带大家一起解读这两种常见的广告策略。了解两者之间的区别、优缺点及适用场景。 CBO 和 ABO 分别是什么? CBO&a…

从数据治理到数据资产管理,释放新质生产力

在当前的数字化浪潮中,数据作为第五大生产要素,正日益成为企业激活新质生产力的关键引擎。数据治理和数据资产管理作为数据管理的重要环节,对企业提升竞争力、实现数字化转型具有重大意义。本文将对数据治理和数据资产管理进行深入探讨&#…

vue3封装Element动态表单组件

1. 封装组件DymanicForm.vue 使用component实现动态组件组件不能直接使用字符串传入,所以根据传入的组件名称找到对应的组件校验规则,可使用rule传入自定义规则,也可以使用封装好的基本规则 示例中使用了checkRequired暴露重置方法和校验方法…

python_1

要求: 代码: # 先将分钟数转化成年数,再将余数做为天数 minute float(input("请输入分钟数:")) year_1 (minute / 60 / 24) // 365 day_1 (minute / 60 / 24) % 365 now f"{minute}分钟{year_1}年{day_1}天&q…

Cocos2dx-lua ScrollView[三]高级篇

一.概述 本文缩写说明:sv = ScrollView, cell代表ScrollView的一个子节点 本文介绍sv的一种封装类库,来实现快速创建sv,有如下几个优点: 1.item的位置通过参数控制,提高开发效率 2.免去了调用sv的API,提高开发效率 3.分帧创建,提高性能 4.可通过参数控制,复用ite…

250.voc,vok 声音,叫喊

250.voc,vok 声音,叫喊 vocal  【vəukəl】 adj. 【voc 声,-al …的】 有声的;用语言表达的,口述的;歌唱的 vocalism  【vəukəlizəm】 n. 【见上,-ism 表行为】 发声;歌唱 vocalist  【vəukəlist】 n. 【见上,-ist 者】 歌唱者;声乐家 vocalize  【vəukə…

《Python编程快速上手——让繁琐工作自动化》实践项目——物品清单

题目: 整个题目篇幅比较大。简化一下就是编写addToInventory函数并且返回一个字典。 思路:函数displayInventory用于物品清单的最后输出,而addToInventory是用于处理战利品的,在原来的装备上添加,已有的装备直接数量加…

Nginx超详细讲解+实操

前言 nginx作为当今火爆的、高性能的http及反向代理服务,不管前端还是后端,都需要全面去了解,学习,实操。 nginx 介绍 为了有一个全面的认知,接下来我们先来看看nginx的架构以及一些特点。 nginx 特点 处理响应请…

安卓系统与iOS对比:两大移动操作系统各有千秋

原文地址:dlshuhua.com/post/79134.html 在当前的移动设备市场中,安卓系统和iOS系统无疑是两大主导力量。它们各自具有独特的优点和特点,吸引了不同需求的用户群体。本文将详细对比这两个系统,分析它们各自的优劣,以帮…

QT(C++)-error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

1、项目场景: 在VS中采用QT(C)调试时,出现error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”错误 2、解决方案: 在“解决方案资源管理器”中选中出现此类BUG的项目,右键-…

静态路由表学习实验

实验要求:各个pc设备可以通信,并且可以访问外网,假设R1已连接外网 拓扑结构 思路:配置pc机ip地址,子网掩码,和网关(网关地址是上层路由接口的地址),配置路由各个接口地址…

什么是LLM Agent?

引言: LLM Agent 已经成为大语言模型中最有价值的探索方向,也更趋于最前沿的通用人工智能。构建企业自己的 LLM Agent 有助于企业在最前沿的人工智能领域探索具有完全自主性的智能化能力,包括基于企业知识库、企业工具 API(如&am…

element-plus中的日期时间选择器el-date-picker;日期选择面板中选定起始与结束的日期只能改具体的时刻,日期默认是一个月没法动态修改问题

目前遇到一个问题,在使用element-plus中的日期时间选择器el-date-picker,type为datetimerange时,展示的日期选择面板有两个输入框,开始时间和结束时间,element-plus只提供了default-time 使用datetimerange进行范围选择…

Visio中存在问题的解决方法

公式缩放 mathtype公式在visio缩放之后,出现了变形。 解决方法:每次输入公式都通过 插入->对象->mathType Equation 新建一个公式。可以避免 注:网上有的说在word中使用mathtype编写公式,之后复制到visio中。 插入波形 选择…

超算数据中心是什么?

小万今天主要是带大家一起来了解什么是超算数据中心,相信大家都听过计算机和数据中心,但是超算数据中心又是什么呢? 随着互联网的快速发展,人工智能、云技术和大数据等诸多新兴产业逐渐步入人们的生活当中。这些新兴技术的发展离不…

LinkedIn 互联网架构扩展简史

LinkedIn成立于 2003 年,其目标是连接到您的网络以获得更好的工作机会。第一周只有 2,700 名会员。时间快进了很多年,LinkedIn 的产品组合、会员基础和服务器负载都取得了巨大的增长。 如今,LinkedIn 在全球运营,拥有超过 3.5 亿会…

fuzzywuzzy,一个好用的 Python 库!

目录 前言 安装 基本功能 1. 字符串相似度比较 2. 模糊匹配与排序 实际应用场景 1. 数据清洗 2. 文本匹配与搜索 3. 搜索引擎优化 总结 前言 大家好,今天为大家分享一个好用的 Python 库 - fuzzywuzzy Github地址:https://github.com/seatgeek/fu…

企业如何乘上跨境电商的风口?

近年来,国内跨境电商成为内贸外贸发展的一个亮点,国家工作会议也提出:“要加快培育外贸新动能,巩固外贸外资基本盘,拓展中间品贸易、服务贸易、数字贸易、跨境电商出口”。多因素推动下,使得跨境电商成为我…

星光/宝骏/缤果/长安 车机CarPlay盒子权限破解原理普及----码农版本

从 app 申请 usbdevice 权限说起,通用 app 申请 usbdevice 权限代码如下 一般通过监听 ACTION_USB_DEVICE_ATTACHED usb 设备插入广播获取 UsbDevice 设备,或者通过 UsbManager 枚举出我们感兴趣的 UsbDevice 设备 然后调用 requestPermission(UsbDevi…