Dapr牵手.NET学习笔记:状态管理进阶(一)

在上一篇文章中说到,dapr默认的状态是不可能跨appid的,也就是只能在相同的应用内访问自己设置的状态数据,dapr支持三种状态的共享配置:appid,nam,none,是通过修改components下的statestore.yaml文件中的keyPrefix配置项来实现的。

说明:本篇所有demo都是接上一篇的代码和配置,不同部分会罗列出来。

appid模式

这种配置是默认的,在上篇中有涉及到,这里为了明确比对,所以列举了出来。

1、statestore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"- name: keyPrefixvalue: "appid"

2、通过order访问pay设置的key,访问不到数据

83cff11bdf107b896cc99d1b6331f81a.png

3、查看redis中的keys,以各服务的appid作为前缀

156468def65c5f43f89310199b332ad8.png

name模式

1、statestore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"- name: keyPrefixvalue: "name"

2、通过order访问pay设置的key,能访问到数据

924a245fb8d4761a46ee9b17ec1cb493.png

3、查看redis中的keys,有状态存储的名称作为前缀

835cec593c88028f35958975b41a2ff4.png

多个name的情况该如何实现呢?下面是order服务和pay服务分别有自己的组件配置文件,文件夹分别是components_order,components_pay,状态组件的名称分别是statestore_order和statestore_pay,参见下面的配置文件。

1、docker-compose.yml

version: '3.4'services:#┌────────────────────────────────┐#│ ordersystem app + Dapr sidecar │#└────────────────────────────────┘ordersystem:image: ${DOCKER_REGISTRY-}ordersystemdepends_on:- redis- placementbuild:context: ../dockerfile: /OrderSystem/Dockerfileports:- "3500:3500"volumes:   - ../OrderSystem:/OrderSystem  networks:- b2c-daprordersystem-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "order", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components"]build:context: ../depends_on:- ordersystemnetwork_mode: "service:ordersystem"volumes:   - ../components_order:/components  #┌─────────────────────────┐#│ Dapr placement1 service │#└─────────────────────────┘  placement:image: "daprio/dapr"command: ["./placement", "-port", "50006"]ports:- "50006:50006"networks:- b2c-dapr#┌────────────────────┐#│ Redis1 state store │#└────────────────────┘  redis:image: "redis:latest"ports:- "6380:6379"networks:- b2c-dapr###################################################################################################################      #┌───────────────────────────────────┐#│ paymentsystem1 app + Dapr sidecar │#└───────────────────────────────────┘  paymentsystem1:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placementbuild:context: ../dockerfile: /PaymentSystem/Dockerfileports:- "3601:3500"volumes:   - ../PaymentSystem:/PaymentSystem      networks:- b2c-dapr      paymentsystem1-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components" ]build:context: ../depends_on:- paymentsystem1network_mode: "service:paymentsystem1"volumes:   - ../components_pay:/components #┌───────────────────────────────────┐#│ paymentsystem2 app + Dapr sidecar │#└───────────────────────────────────┘   paymentsystem2:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placement    build:context: ../dockerfile: /PaymentSystem/Dockerfilevolumes:   - ../PaymentSystem:/PaymentSystem            ports:- "3602:3500"networks:- b2c-dapr      paymentsystem2-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80" ,"-placement-host-address", "placement:50006","-components-path","/components"]build:context: ../depends_on:- paymentsystem2network_mode: "service:paymentsystem2"volumes:   - ../components_pay:/components      networks:b2c-dapr:

2、components_order文件夹下的statstore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore_order
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"- name: keyPrefixvalue: "name"

3、components_pay文件夹下的statstore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore_pay
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"- name: keyPrefixvalue: "name"

4、通过order访问pay设置的key,能访问到数据

ed9ed639648bad5aa94010a6644981f5.png

5、查看redis中的keys,有状态存储的名称作为前缀

005cd7eb2869b4f885d597f05d18846c.png

none模式

1、statestore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: redis:6379- name: redisPasswordvalue: ""- name: actorStateStorevalue: "true"- name: keyPrefixvalue: "none"

2、通过order访问pay设置的key,能访问到数据

e099395fc527a453ef616b78f4471063.png

3、查看redis中的keys,没有任何前缀

4c4260fd97b0a95b5210b6f1899c1f46.png

dapr通过简单的配置实现了三种状态数据的共享机制,方便,简捷。所以在使用dapr前,就要把各服务的数据共用规划好,方便配置使用。

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

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

相关文章

[WP] 关于页面切换动画 记录

1 app.xmal.cs 部分修改如下 private void InitializePhoneApplication() {if (phoneApplicationInitialized)return;// Create the frame but dont set it as RootVisual yet; this allows the splash// screen to remain active until the application is ready to r…

ext 浅谈类的实例

打开ext的API,如下找到Class这个选项将鼠标移到config那里可以看到有以下属性:好了,让我们开始进入主题:首先,来讲讲如何自定义一个类,在ext中,创建一个类其实与其他语言差不多,只是…

GAE 随机获取实体

有时我们需要随机地获取数据记录(实体),比如博客程序中的“随机文章”的实现。 目前 GAE 并没有 API 可以直接获取随机实体,要实现这样的需求我们只能自己想办法了 :-) 在 stackoverflow 上也有人提过该问题,总结如下&…

构造函数怎么在主函数调用_C++ 虚基类及其派生类构造函数(学习笔记:第7章 12)...

虚基类及其派生类构造函数[1]建立对象时所指定的类称为最远派生类。虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中为虚基类的构造函…

打得了橄榄球大联盟,进得了麻省理工,无论是四肢还是头脑都同样发达,这才叫猛男!...

全世界只有3.14 % 的人关注了爆炸吧知识今天小天就介绍一位同样在学术界、体坛都很生猛的猛男吧约翰尤索 (John Urschel) 关于约翰尤索一直有“学霸”“学神”这些词伴随着他然而尤索却说他从来都没认真听过老师讲课尤索出生在加拿大温尼伯父亲是医生,母亲是律师很小…

如何使用 EF Core 按周 对数据分组?

咨询区 Aza:在 Entity Framework 6 中,我可以用 SqlFunctions.DatePart() 函数来实现,参考如下代码:var byWeek data.GroupBy(x > SqlFunctions.DatePart("week", x.Date));现在的问题是, Entity Framework Core 中…

忍着疼痛奔跑,带着泪光微笑!

忍着疼痛奔跑,带着泪光微笑转瞬,毕业已近四年,回顾,还在路上。头几年,有着一颗爱玩的心,秉着“人这一辈子不能对不起自己”的谬论,一直随着自己的性子,想做什么就做什么,…

加菲猫语录,只准笑不准学

-今天我要做俯卧撑今天先俯卧,明天再撑。 --真不愿意起来,尤其我还病了,可我还得带病坚持吃饭。 --肚子大不可怕,可怕的是肚子里没有好东西。或者说,没有好…

python 什么是原类_Python 什么是元类(metaclasses)?

1.什么是类 在理解元类之前,我们必须先掌握Python中的类(class)。 和大多数语言一样,Python中的类知识用来描述如何“生成一个对象”:但是,在Python中,类不仅能用来描述如何生成一个对象,类本身也是对象。 …

mysql连接指定时区_MySQL创建JDBC连接时区问题

报错内容:ErrorCode0SQLState01S00The server time zone value is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zon…

听说这是和女朋友住一起后的现象之一

1 被人叫醒时的你!2 分享一只软糯香甜的香蕉。。3 到底选哪根好呢?4 大叔你的手机壳怎么肥四??5 听说这是和女朋友住一起后的现象之一6 爱国主义教育培养了一群吃货!7 今天做做题吧!(本视频来源…

PDF 补丁丁 (修改PDF书签;拆分、合并、制作PDF;提取图片) 0.3.0.8 正式版

PDF 补丁丁 0.3.0.8 正式版 新版本已经发布,请到博客首页下载。 软件简介 PDF补丁丁是一个用于修改PDF文件信息的工具。它具有以下功能:■ 修改文档(带“*”号部分功能需通过高级补丁修改功能实现): ● 修改文档属性…

Dapr + .NET 实战(八)服务监测

服务监测分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高。Dapr 可观测性模块将服务监测与应用程序分离。它自动捕获由 Dapr sidec…

世界上第一位程序员是位美女——AdaLovelace【有图为证】

AdaLovelace画像 仙女一般吧....简介: 阿达奥古斯塔,19世纪诗人拜伦的女儿,数学家。穿孔机程序创始人,建立了循环和子程序概念。为计算程序拟定“算法”,写作的第一份“程序设计流程图”,被珍视为“第一个…

php mysql管理_MySQL 连接与管理

让 PHP 支持 MySQLPHP 有专有的 MySQL 函数库以使用操作 MYSQL 数据库。在 PHP 5 及以后版本中不再默认支持 MySQL ,所以在运行这些库之前,请确定 php.ini 加载了 MySQL 数据库支持:extension mysql.dllMySQL 连接mysql_connect() 函数用于开…

python新手入门总结_初学python的操作难点总结(新手必看篇)

如下所示:1 在cmd下 盘与盘之间的切换 直接 D或d: 就好2 查找当前盘或者文件下面的目录 直接 dir3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p4 写文件的第一个字母后 按tab键自动补全 如果有多个p开头的则在按tab 会在所有之间切换5 d:切盘 dir…

android开发我的新浪微博客户端-用户授权页面UI篇(3.1)

上一篇讲了讲OAuth授权认证的事情,大概的介绍了OAuth的原理,并且完成了一个OAuth.java的类库,提供了几个OAuth认证必要的方法,本篇开始具体讲本项目的用户授权功能,用户授权页面是当用户第一次使用本软件的时候自动从载入页面跳转…

基于SharePoint革命性的大型企业协同门户产品

OpenShare——基于SharePoint革命性的大型企业协同门户产品,由光合信息技术(上海)有限公司研发,针对企业用户,目前可以通过其官网下载使用。OpenShare:打开SharePoint的全部潜能SharePoint是个非凡的产品&a…

SharePoint Foundation和SharePoint Server的区别

SharePoint Server 2010用来取代MOSS 2007,它有标准版和企业版两个版本,使用SQL Server数据库; 早期版本中的STS或WSS在2010中更名为SharePoint Foundation; 而SPS 2010包含了SharePoint Foundation和SharePoint Server。 SharePo…

还缺30万人!程序员2020年要过好日子了……

全世界只有3.14 % 的人关注了爆炸吧知识最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经…