当前位置: 首页 > news >正文

专业做网站路桥html源码之家

专业做网站路桥,html源码之家,亚马逊公司网站建设的目的,成都本地做网站的介绍使用状态管理#xff0c;您的应用程序可以将数据作为键/值对存储在支持的状态存储中。您的应用程序可以使用 Dapr 的状态管理 API 使用状态存储组件来保存和读取键/值对#xff0c;如下图所示。例如#xff0c;通过使用 HTTP POST#xff0c;您可以保存键/值对#xf… 介绍使用状态管理您的应用程序可以将数据作为键/值对存储在支持的状态存储中。您的应用程序可以使用 Dapr 的状态管理 API 使用状态存储组件来保存和读取键/值对如下图所示。例如通过使用 HTTP POST您可以保存键/值对通过使用 HTTP GET您可以读取键并返回其值。特性可插拔状态存储Dapr 数据存储被建模为组件可以在不更改代码的情况下更换它。例如MySQL、Redis、Azure CosmosDB等。可配置的状态存储行为Dapr 允许开发人员将额外的元数据附加到状态操作请求中用以描述请求的处理方式。如并发要求一致性要求默认情况下您的应用程序应假定数据存储最终一致并使用最后写入获胜的并发模式并发Dapr 支持使用 ETags 的乐观并发控制 (OCC)。当请求状态时Dapr 总是将 ETag 属性附加到返回的状态。当用户代码尝试更新或删除状态时应该通过请求正文附加 ETag 以进行更新或通过 If-Match 标头进行删除。只有当提供的 ETag 与状态存储中的 ETag 匹配时写操作才能成功。建议您在使用 ETag 时使用重试策略来补偿此类冲突。如果您的应用程序在写入请求时省略 ETag则 Dapr 在处理请求时会跳过 ETag 检查。与使用 ETag 的先写赢模式相比这实质上启用了最后写赢模式。自动加密Dapr 支持应用程序状态的自动客户端加密并支持密钥轮换。这是一项预览功能所有 Dapr 状态存储都支持。一致性Dapr 支持强一致性和最终一致性最终一致性作为默认行为。当使用强一致性时Dapr 在确认写入请求之前等待所有副本或指定的仲裁确认。当使用最终一致性时一旦底层数据存储接受写入请求Dapr 就会立即返回即使这是单个副本。批量操作Dapr 支持两种类型的批量操作 - 批量bulk或多multi。注bulk与multi的区别在于bulk不是事务性的multi是事务处理。Actor状态事务状态存储可用于存储Actor状态。要指定用于Actor的状态存储请在状态存储组件的元数据部分中将属性 actorStateStore的值指定为 true。注Actors 状态以特定方案存储在事务状态存储中允许一致的查询。所以只能有一个状态存储组件被用于所有的Actor。直接查询状态存储Dapr 无需任何转换即可保存和检索状态值。您可以直接从底层状态存储查询和聚合状态。例如要在 Redis 中获取与应用程序 ID “myApp” 关联的所有状态键请使用KEYS myApp*查询Actor状态如果数据存储支持 SQL 查询您可以使用 SQL 查询查询参与者的状态。例如使用SELECT * FROM StateTable WHERE Idapp-id||actor-type||actor-id||key您还可以跨Actor实例执行聚合查询避免Actor 框架常见的基于回合的并发限制。例如要计算所有温度计Actor的平均温度请使用保存并获取状态状态管理是任何应用程序最常见的需求之一新的或遗留的、单体或微服务。处理不同的数据库、测试、处理重试和故障可能既费时又费力。先决条件准备好Dapr运行环境可以看之前的文章手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序设置状态存储Windows打开目录%USERPROFILE%\.dapr\components创建文件statestore.yaml使用redis作为状态存储的数据库apiVersion: dapr.io/v1alpha1 kind: Component metadata:name: statestore spec:type: state.redisversion: v1metadata:- name: redisHostvalue: localhost:6379- name: redisPasswordvalue: - name: actorStateStorevalue: true注这个yaml已经通过actorStateStore开启了Actor状态保存和检索单个状态注设置 app-id 很重要因为状态键以该值作为前缀。如果您不设置它则在运行时为您生成一个下次运行该命令时将生成一个新的您将无法再访问以前保存的状态。换句话说如果你要共享状态可以自定义一个保留app-id作为共享状态而不是留空。运行Dapr Sidecar运行一个空的Sidecar因为我们只用它来帮助访问状态存储所以与之前不同的是dapr run后面没有接dotnet run去作为某一个程序的Sidecardapr run --app-id myapp --dapr-http-port 3500 --dapr-grpc-port 50001创建客户端创建控制台程序添加Dapr.Client NuGet包引用。修改Program.csusing Dapr.Client;var storeName statestore; var key myFirstKey; var value myFirstValue;var client new DaprClientBuilder().Build(); await client.SaveStateAsync(storeName, key, value); Console.WriteLine(State has been stored);var data await client.GetStateAsyncstring(storeName, key); Console.WriteLine($Got value: {data});Console.ReadKey();删除单个状态await client.DeleteStateAsync(storeName, key);通过事务保存和检索多个状态Dapr 还允许您在同一个调用中保存和检索多个状态。var lst new ListStateTransactionRequest() {new StateTransactionRequest(test1, System.Text.Encoding.UTF8.GetBytes(value1), StateOperationType.Upsert),new StateTransactionRequest(test2, System.Text.Encoding.UTF8.GetBytes(value2), StateOperationType.Upsert), }; await client.ExecuteStateTransactionAsync(storeName, lst);var datas await client.GetBulkStateAsync(storeName, lst.Select(r r.Key).ToList(), 0); Console.WriteLine($Got items: {string.Join(,, datas.Select(d ${d.Key}{d.Value}))});强一致性使用强一致性时Dapr将确保底层状态存储在写入或删除状态之前一旦数据被写入到所有副本或收到来自quorum的ack就会返回响应。对于GET请求Dapr 将确保存储在副本之间一致地返回最新数据。默认为最终一致性除非在对状态 API 的请求中另有说明。await client.SaveStateAsync(storeName, key, value, new StateOptions() { Consistency ConsistencyMode.Strong });var etagData await client.GetStateAndETagAsyncstring(storeName, key, ConsistencyMode.Strong); Console.WriteLine($ETag:{etagData.etag});await client.DeleteStateAsync(storeName, key, new StateOptions() { Consistency ConsistencyMode.Strong });先写赢和最后写赢Dapr 允许开发人员在使用数据存储时选择两种常见的并发模式首先写入获胜和最后写入获胜。First-Write-Wins 在您有多个应用程序实例的情况下很有用所有实例都同时写入同一个键。Dapr 的默认模式是最后写入获胜。下面的例子展示了如何获取一个 ETag然后使用它来保存状态然后删除状态await client.SaveStateAsync(storeName, key, value, new StateOptions() { Concurrency ConcurrencyMode.FirstWrite }); var firstWriteWinData await client.GetStateAndETagAsyncstring(storeName, key); var etag firstWriteWinData.etag;await client.TrySaveStateAsync(storeName, key, DateTime.Now.Ticks.ToString(), etag, new StateOptions() { Concurrency ConcurrencyMode.FirstWrite }); var firstWriteWinDeleteSucceeded await client.TryDeleteStateAsync(storeName, key, etag); Console.WriteLine($First write wins delete:{firstWriteWinDeleteSucceeded});firstWriteWinData await client.GetStateAndETagAsyncstring(storeName, key); firstWriteWinDeleteSucceeded await client.TryDeleteStateAsync(storeName, key, firstWriteWinData.etag); Console.WriteLine($First write wins delete:{firstWriteWinDeleteSucceeded});注这里演示了ETag在更新后尝试删除失败的例子最后再重新获取新的状态以修正ETag再删除在不同的应用程序之间共享状态为了实现状态共享Dapr 支持以下键前缀策略appid - 这是默认策略。appid 前缀允许状态只能由具有指定 appid 的应用程序管理。所有状态键都将以 appid 为前缀并以应用程序为范围。name - 此设置使用状态存储组件的名称作为前缀。对于给定的状态存储多个应用程序可以共享相同的状态。none - 此设置不使用前缀。多个应用程序在不同的状态存储之间共享状态举个例子要指定前缀策略请在状态组件上添加名为 keyPrefix 的元数据键apiVersion: dapr.io/v1alpha1 kind: Component metadata:name: statestorenamespace: production spec:type: state.redisversion: v1metadata:- name: keyPrefixvalue: key-prefix-strategy注此示例演示相对较复杂思路大概是使用多个statestore.yaml然后根据不同的storename切换不同策略即可。感兴趣的小伙伴可以自行尝试。自动加密状态并管理密钥轮换注截止目前这个功能是个预览版感兴趣的小伙伴可以自行尝试应用程序状态通常需要静态加密以在企业工作负载或受监管环境中提供更强的安全性。Dapr 提供基于 AES256 的自动客户端加密。状态的生存时间TTLDapr 为每个状态在请求时设置生存时间 (TTL)。这意味着应用程序可以为每个存储的状态设置生存时间并且这些状态在到期后无法检索。注只有一部分 Dapr 状态存储组件与状态 TTL 兼容。对于支持的状态存储只需在发布消息时设置 ttlInSeconds 元数据。其他状态存储将忽略此值。await client.SaveStateAsync(storeName, key, value, metadata: new Dictionarystring, string() { { ttlInSeconds, 3 } }); var ttlData await client.GetStateAsyncstring(storeName, key); Console.WriteLine($TTL Data:{ttlData});Thread.Sleep(5000); ttlData await client.GetStateAsyncstring(storeName, key); Console.WriteLine($TTL Data:{ttlData});持久化状态要显式设置持久化状态忽略为键设置的任何 TTL请将 ttlInSeconds 值指定为 -1。本章源码Assignment05https://github.com/doddgu/dapr-study-room我们正在行动新的框架、新的生态我们的目标是自由的、易用的、可塑性强的、功能丰富的、健壮的。所以我们借鉴Building blocks的设计理念正在做一个新的框架MASA Framework它有哪些特点呢原生支持Dapr且允许将Dapr替换成传统通信方式架构不限单体应用、SOA、微服务都支持支持.Net原生框架降低学习负担除特定领域必须引入的概念坚持不造新轮子丰富的生态支持除了框架以外还有组件库、权限中心、配置中心、故障排查中心、报警中心等一系列产品核心代码库的单元测试覆盖率90%开源、免费、社区驱动还有什么我们在等你一起来讨论经过几个月的生产项目实践已完成POC目前正在把之前的积累重构到新的开源项目中目前源码已开始同步到Github文档站点在规划中会慢慢完善起来MASA.BuildingBlocksMASA.ContribMASA.UtilsMASA.EShopBlazorComponentMASA.BlazorQQ群7424099微信群加技术运营微信MasaStackTechOps备注来意邀请进群
http://www.pierceye.com/news/199329/

相关文章:

  • 正规网站模板设计软件工程学科评估
  • 网站集约化建设 要求惠州做棋牌网站建设哪家技术好
  • c#如何做公司网站做网站背景图怎么插
  • 国外做耳机贸易的平台网站定制网站
  • seo做的最好的十个网站加工订单网
  • 网站项目建设主要内容网站导航优化的描述
  • 网站后台修改图片网站制作多少钱公司
  • 做网站后台需要写代码吗益阳seo网站建设
  • 小程序网站做多大尺寸辽阳住房和城乡建设网站
  • 昆山app网站制作网站的管理权限有什么用
  • 购物网站建设开题报告企业宣传方案模板
  • cdr做好排班怎么做网站我的免费网是个什么网站
  • 如何做别人网站镜像地区性中介类网站建设
  • 做的网站怎么查看点击率安装wordpress主题失败
  • 网站历史权重查询免费的黄冈网站有哪些下载软件
  • 宝安三网合一网站建设河北智能网站建设平台
  • 在百度上做网站有用吗wordpress环境虚拟机安装
  • 怎么做网站图片链接中元建设网站
  • 邢台做网站优化价格网站基本维护
  • 网站集群建设价格wordpress 加文章列表
  • 官方网站案例用ps做网站主页
  • 做名片的网站推广型网站建设销售
  • 河南省建设执业资格注册中心网站网站推广公司 sit
  • 来年做那个网站致富网站工作室 需要什么手续
  • 宜兴网站建设哪家好网站建设设计公司排名
  • 婚庆公司网站怎么做wordpress 首页置顶
  • 电商网站开发人员结构江苏住房和城乡建设厅网站首页
  • 快速建站的模板陕西省建设网三类人员继续教育
  • 谷歌浏览器对做网站有什么好处广州最好网站策划
  • 西安北郊做网站重庆手机软件开发