操作指南:在应用程序之间共享状态
了解在不同应用程序之间共享状态的策略
Dapr 提供了多种在应用程序之间共享状态的方法。
不同的架构在共享状态时可能有不同的需求。在某些情况下,您可能会希望:
- 在特定应用程序中封装所有状态
- 让 Dapr 为您管理状态访问
在其他情况下,您可能需要两个应用程序在同一状态上进行操作,以便获取和保存相同的键。
为了实现状态共享,Dapr 支持以下键前缀策略:
指定状态前缀策略
要指定前缀策略,请在状态组件上添加名为 keyPrefix
的元数据键:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
namespace: production
spec:
type: state.redis
version: v1
metadata:
- name: keyPrefix
value: <key-prefix-strategy>
示例
以下示例演示了使用每种支持的前缀策略进行状态检索的情况。
appid
(默认)
在下面的示例中,具有应用程序 ID myApp
的 Dapr 应用程序正在将状态保存到名为 redis
的状态存储中:
curl -X POST http://localhost:3500/v1.0/state/redis \
-H "Content-Type: application/json"
-d '[
{
"key": "darth",
"value": "nihilus"
}
]'
键将被保存为 myApp||darth
。
namespace
在命名空间 production
中运行的具有应用程序 ID myApp
的 Dapr 应用程序正在将状态保存到名为 redis
的状态存储中:
curl -X POST http://localhost:3500/v1.0/state/redis \
-H "Content-Type: application/json"
-d '[
{
"key": "darth",
"value": "nihilus"
}
]'
键将被保存为 production.myApp||darth
。
name
在下面的示例中,具有应用程序 ID myApp
的 Dapr 应用程序正在将状态保存到名为 redis
的状态存储中:
curl -X POST http://localhost:3500/v1.0/state/redis \
-H "Content-Type: application/json"
-d '[
{
"key": "darth",
"value": "nihilus"
}
]'
键将被保存为 redis||darth
。
none
在下面的示例中,具有应用程序 ID myApp
的 Dapr 应用程序正在将状态保存到名为 redis
的状态存储中:
curl -X POST http://localhost:3500/v1.0/state/redis \
-H "Content-Type: application/json"
-d '[
{
"key": "darth",
"value": "nihilus"
}
]'
键将被保存为 darth
。