状态管理高级特性之事务性
Dapr状态管理高级特性之事务性
设计分析
如果 state store 要支持事务,则要求实现 TransactionalStore 接口:
type TransactionalStore interface {
// Init方法是和普通store接口一致的
Init(metadata Metadata) error
// 增加的是 Multi 方法
Multi(request *TransactionalStateRequest) error
}
Runtime ExecuteStateTransaction 方法会调用 state store 的 multi 方法。
实现分析
Redis实现
dapr redis state store的事务实现,是通过 redis-go 封装的 TxPipeline 实现的。
TODO:
- redis-go 如何实现的
- redis如何实现事务?multi?