I just did a quick search about the Akka persistent[1], it looks like
we could leverage it to implement the event source  without WAL.

I agree we could use Akka cluster to provide the HA solution for the
Alpha, but we need to do some POC for it.

[1]https://doc.akka.io/docs/akka/current/persistence.html


Willem Jiang

Twitter: willemjiang
Weibo: 姜宁willem

On Fri, Jun 28, 2019 at 7:49 PM Zheng Feng <zh.f...@gmail.com> wrote:
>
> Thanks Zhang Lei,
>
> Zhang Lei <zhang_...@boco.com.cn> 于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 <willem.ji...@gmail.com> 写道:
> > >
> > > 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 <zhang_...@boco.com.cn> 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,赵俊 <zhaoju...@jd.com> 写道:
> > >>>
> > >>> 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 <zhang_...@boco.com.cn> 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 <zhaoju...@126.com> 写道:
> > >>>>>
> > >>>>> 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 <zhang_...@boco.com.cn>
> > 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 <zh.f...@gmail.com> 写道:
> > >>>>>>>
> > >>>>>>> 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 <zhang_...@boco.com.cn> 于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 <zh.f...@gmail.com> 写道:
> > >>>>>>>>>
> > >>>>>>>>> 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 <cool...@qq.com> 于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 <zhaoju...@126.com> 写道:
> > >>>>>>>>>>>
> > >>>>>>>>>>> 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