Q1: Is Saga executed synchronously or asynchronously?Will Saga not be finished until all sub-transaction finished?
Currently Saga is executed synchronously. Asynchronous mode will be implemented in future.
Q2: How are sub-transactions executed by Saga, in parallel or in sequence?
How Saga pack executes sub-transaction depends on your code. If you call @Compensable
method in parallel, then Saga Alpha will process in parallel.
Q3: Any requirements on @Compensable
method and compenstation method?
Here are the requirements:
- Both methods should be idempotent.
- Both methods have exactly same parameter list.
- Both methods are in same class.
- Parameter should be serializable.
- They should be commutative. For example, if given same parameters, the result should be same regardless the order of execution.
Q4: Does Saga guarantee ACID?
Saga guarantees Atomicity, Consistency, Durability, but not guarantee Isolation。
Q5: Can Saga be nested?
Yes, Saga can be nested.
Q6: How to scale Saga Alpha horizontally?
Saga Alpha is stateless, all data is persisted in database, so it supports horizontal scale.
Q7: Will Saga continue if some services crashed in execution?
Saga Alpha will try to continue Saga execution after service restart.
Q8: How to use MySQL as alpha's backend database?
Check this doc