Yes, it looks good to me.
------------------
Zhao Jun
Apache Sharding-Sphere & ServiceComb

> On Jun 27, 2019, at 9:50 AM, Willem Jiang <[email protected]> wrote:
> 
> We just leverage the message broker to make sure Alpha get the
> transaction event from Omega.
> In most cases Alpha don't need to talk back  to Omega, we just need to
> make sure all the transaction message are stored (Alpha can process it
> later).
> 
> If Omega cannot talk the message broker, Omega should abort the
> transaction processing with transport exception.
> 
> Willem Jiang
> 
> Twitter: willemjiang
> Weibo: 姜宁willem
> 
> On Tue, Jun 25, 2019 at 8:42 AM Zhang Lei <[email protected]> wrote:
>> 
>> Hi, Zhang jun
>> 
>>> I just cared about the recovery scan thread design.
>>> Kafka can ensure event message can be consumed by alpha exactly, but 
>>> recovery need know all the participated transaction response to decide 
>>> rollback or commit, so I think scan thread is also necessary.
>> 
>> I am not sure, but I think Akka's persistence can solve this problem you 
>> care about.
>> Of course, this ability needs to be verified
>> 
>> Thanks,
>> Zhang Lei
>> 
>>> 在 2019年6月24日,上午10:46,赵俊 <[email protected]> 写道:
>>> 
>>> Hi, Zhang Lei
>>> 
>>>> A2 : I think we only need to ensure that the message can be reliably 
>>>> delivered to the state machine, The state machine is only a synchronous 
>>>> record state transition when the transaction is executed normally. At 
>>>> present, the compensation method based on table scan is also asynchronous. 
>>>> I am not sure if I have answered your question, or you can give me more 
>>>> information.
>>> 
>>> If we have a mechanism that ensure main service can collect all the 
>>> participated transaction response from alpha correctly before 
>>> commit/rollback, it is OK.
>>> 
>>>> Q2 : Also we should consider about recovery, it seems that recovery is as 
>>>> same as before based on database.
>>>> A2 : I think the question you care about is how to recover when the alpha 
>>>> is down, this is a little different from the current version.
>>>> 1. We can base on Kafka's reliability and control the offset of the topic, 
>>>> one message at a time
>>>> 2. Of course, we can also do some extra design for it, such as logging the 
>>>> data log file locally after receiving the Kafka message. Resume the 
>>>> message by reading the data log file when the alpha machine restarts
>>> 
>>> I just cared about the recovery scan thread design.
>>> Kafka can ensure event message can be consumed by alpha exactly, but 
>>> recovery need know all the participated transaction response to decide 
>>> rollback or commit, so I think scan thread is also necessary.
>>> 
>>> 
>>> 
>>>> On Jun 23, 2019, at 1:04 PM, Zhang Lei <[email protected]> wrote:
>>>> 
>>>> Hi, Zhao Jun
>>>> 
>>>> Thank you for your reply!
>>>> 
>>>> This design document does not elaborate on reliability aspects.
>>>> 
>>>> My initial thought is this
>>>> 
>>>> Q1 : It seems that omega should hold on after consuming the event message 
>>>> from Kafka instead of completing pushing message
>>>> A2 : I think we only need to ensure that the message can be reliably 
>>>> delivered to the state machine, The state machine is only a synchronous 
>>>> record state transition when the transaction is executed normally. At 
>>>> present, the compensation method based on table scan is also asynchronous. 
>>>> I am not sure if I have answered your question, or you can give me more 
>>>> information.
>>>> 
>>>> Q2 : Also we should consider about recovery, it seems that recovery is as 
>>>> same as before based on database.
>>>> A2 : I think the question you care about is how to recover when the alpha 
>>>> is down, this is a little different from the current version.
>>>> 1. We can base on Kafka's reliability and control the offset of the topic, 
>>>> one message at a time
>>>> 2. Of course, we can also do some extra design for it, such as logging the 
>>>> data log file locally after receiving the Kafka message. Resume the 
>>>> message by reading the data log file when the alpha machine restarts
>>>> 
>>>> 
>>>> Thanks,
>>>> Lei Zhang
>>>> 
>>>>> 在 2019年6月23日,上午7:08,zhaojun <[email protected]> 写道:
>>>>> 
>>>>> I have some questions about the design.
>>>>> 1. It seems that omega should hold on after consuming the event message 
>>>>> from Kafka instead of completing pushing message.
>>>>> 2. Also we should consider about recovery, it seems that recovery is as 
>>>>> same as before based on database.
>>>>> 
>>>>> ------------------
>>>>> Zhao Jun
>>>>> Apache Sharding-Sphere & ServiceComb
>>>>> 
>>>>>> On Jun 21, 2019, at 6:41 PM, Zhang Lei <[email protected]> wrote:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I have created the alpha-fsm module on branch SCB-1321 and submitted the 
>>>>>> design documentation, state machine prototype and test cases.
>>>>>> If there is any problem, please let me know.
>>>>>> 
>>>>>> Thanks,
>>>>>> Lei Zhang
>>>>>> 
>>>>>> [1] 
>>>>>> https://github.com/apache/servicecomb-pack/tree/SCB-1321/alpha/alpha-fsm 
>>>>>> <https://github.com/apache/servicecomb-pack/tree/SCB-1321/alpha/alpha-fsm>
>>>>>> 
>>>>>>> 在 2019年6月20日,下午3:25,Zheng Feng <[email protected]> 写道:
>>>>>>> 
>>>>>>> Yeah, I think Willem has create one [1] before and do you mind I assign
>>>>>>> this issue to you ?
>>>>>>> 
>>>>>>> [1] https://issues.apache.org/jira/browse/SCB-1258
>>>>>>> 
>>>>>>> Zhang Lei <[email protected]> 于2019年6月20日周四 下午2:34写道:
>>>>>>> 
>>>>>>>> Hi, Zheng Feng
>>>>>>>> 
>>>>>>>> Thanks for your advice, I will create a JIRA first and start with the
>>>>>>>> design documentation.
>>>>>>>> 
>>>>>>>> Lei Zhang
>>>>>>>> 
>>>>>>>>> 在 2019年6月19日,下午8:09,Zheng Feng <[email protected]> 写道:
>>>>>>>>> 
>>>>>>>>> Thanks a lot for sharing these information ! I think this state 
>>>>>>>>> machine
>>>>>>>>> could be very experimental so it would helpful to create an 
>>>>>>>>> experimental
>>>>>>>>> branch to add this module but not in the master branch.
>>>>>>>>> 
>>>>>>>>> Zhang Lei <[email protected]> 于2019年6月19日周三 下午5:42写道:
>>>>>>>>> 
>>>>>>>>>> I have completed some of the design and prototype in my github.
>>>>>>>>>> 
>>>>>>>>>> In the design document [1]  my original idea was that a transaction
>>>>>>>>>> consisted of a SagaActor and several TxActors, and later TxAcotr was
>>>>>>>>>> removed to reduce implementation complexity.
>>>>>>>>>> I haven't had time to modify the documentation yet, but the SagaActor
>>>>>>>>>> state machine [2] is up to date.
>>>>>>>>>> Here you can see the test cases of SagaActor [3]
>>>>>>>>>> 
>>>>>>>>>> [1]
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/tree/master/state_machine_demo/saga-akkafsm
>>>>>>>>>> <
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/tree/master/state_machine_demo/saga-akkafsm
>>>>>>>>>>> 
>>>>>>>>>> [2]
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/blob/master/state_machine_demo/saga-akkafsm/assets/saga_state_diagram.png
>>>>>>>>>> <
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/blob/master/state_machine_demo/saga-akkafsm/assets/saga_state_diagram.png
>>>>>>>>>>> 
>>>>>>>>>> [3]
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/blob/master/state_machine_demo/saga-akkafsm/src/test/java/coolbeevip/playgroud/statemachine/saga/SagaActorTest.java
>>>>>>>>>> <
>>>>>>>>>> 
>>>>>>>> https://github.com/coolbeevip/playground/blob/master/state_machine_demo/saga-akkafsm/src/test/java/coolbeevip/playgroud/statemachine/saga/SagaActorTest.java
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Lei Zhang
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> 在 2019年6月19日,下午2:34,zhaojun <[email protected]> 写道:
>>>>>>>>>>> 
>>>>>>>>>>> If we use AKKA, how can we design the actors, and how can we 
>>>>>>>>>>> guarantee
>>>>>>>>>> omega will receive the message synchronize.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> 

Reply via email to