Thanks Zhang Lei,

Zhang Lei <[email protected]> 于2019年6月28日周五 下午5:50写道:

> Hi, All
>
> alpha-fsm has been pushed to the branch SCB-1321
>
> Completed:
> 1. State machine design document[1]
> 2. State machine prototype
> 3. State machine test case
> 4. Receive saga events using the internal message bus
>
> Key emphasis of next stage in work:
> In order to carry out the feasibility verification as soon as possible, I
> will not consider the reliability issue for the time being.
> 1. Refactor Omega components, add SagaAbortedEvent, SagaTimeoutEvent,
> TxComponsitedEvent
> 2. Save compensation method parameters in Actor and trigger compensation
> in Actor
> 3. Do not use Kafka and only verify single node alpha, The Alpha server
> receives the saga event and puts it into the internal message bus.
>
It looks good to me !

>
> Planning:
> 1. Persist actor data to the database when it terminates
>
What are the actor data ? they are all the events ?

> 2. Integration Kafka
>
So we can use the Kafka as a message broker and the invokings between the
Omega and the Alpha will become async ?

> 3. Support WAL[2] recovery mode
>
Well, it looks interesting and does it support by the akka ?

> 4. Verify Akka cluster reliability
>
> [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>
> [2] https://en.wikipedia.org/wiki/Write-ahead_logging <
> https://en.wikipedia.org/wiki/Write-ahead_logging>
>
> if you have other comments, please let us know.
>
Good luck !

>
> Thanks,
> Lei Zhang
>
> > 在 2019年6月27日,上午9:50,Willem Jiang <[email protected]> 写道:
> >
> > 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