Folks,

I've made some edits in IEP-61 [1] regarding the group membership service
and transaction protocol interaction with the replication infrastructure,
please take a look before our Friday call.

[1]
https://cwiki.apache.org/confluence/display/IGNITE/IEP-61%3A+Common+Replication+Infrastructure

пн, 23 нояб. 2020 г. в 13:28, Alexey Goncharuk <alexey.goncha...@gmail.com>:

> Thanks, Ivan,
>
> Another protocol for group membership worth checking out is RAPID [1] (a
> recent one). Not sure though if there are any available implementations for
> it already.
>
> [1] https://www.usenix.org/system/files/conference/atc18/atc18-suresh.pdf
>
> пн, 23 нояб. 2020 г. в 10:46, Ivan Daschinsky <ivanda...@gmail.com>:
>
>> Also, here is some interesting reading about gossip, SWIM etc.
>>
>> 1 --
>> http://www.cs.cornell.edu/Info/Projects/Spinglass/public_pdfs/SWIM.pdf
>> 2 --
>>
>> http://www.antonkharenko.com/2015/09/swim-distributed-group-membership.html
>> 3 -- https://github.com/hashicorp/memberlist (Foundation library of
>> hashicorp serf)
>> 4 -- https://github.com/scalecube/scalecube-cluster -- (Java
>> implementation
>> of SWIM)
>>
>> чт, 19 нояб. 2020 г. в 16:35, Ivan Daschinsky <ivanda...@gmail.com>:
>>
>> > >> Friday, Nov 27th work for you? If ok, let's have an open call then.
>> > Yes, great
>> > >> As for the protocol port - we will not be dealing with the
>> > concurrency...
>> > >>Judging by the Rust port, it seems fairly straightforward.
>> > Yes, they chose split transport and logic. But original Go package from
>> > etcd (see raft/node.go) contains some  heartbeats mechanism etc.
>> > I agree with you, this seems not to be a huge deal to port.
>> >
>> > чт, 19 нояб. 2020 г. в 16:13, Alexey Goncharuk <
>> alexey.goncha...@gmail.com
>> > >:
>> >
>> >> Ivan,
>> >>
>> >> Agree, let's have a call to discuss the IEP. I have some more thoughts
>> >> regarding how the replication infrastructure works with
>> >> atomic/transactional caches, will put this info to the IEP. Does next
>> >> Friday, Nov 27th work for you? If ok, let's have an open call then.
>> >>
>> >> As for the protocol port - we will not be dealing with the concurrency
>> >> model if we choose this way, this is what I like about their code
>> >> structure. Essentially, the raft module is a single-threaded automata
>> >> which
>> >> has a callback to process a message, process a tick (timeout) and
>> produces
>> >> messages that should be sent and log entries that should be persisted.
>> >> Judging by the Rust port, it seems fairly straightforward. Will be
>> happy
>> >> to
>> >> discuss this and other alternatives on the call as well.
>> >>
>> >> чт, 19 нояб. 2020 г. в 14:41, Ivan Daschinsky <ivanda...@gmail.com>:
>> >>
>> >> > > Any existing library that can be used to avoid re-implementing the
>> >> > protocol ourselves? Perhaps, porting the existing implementation to
>> Java
>> >> > Personally, I like this idea. Go libraries (either raft module of
>> etcd
>> >> or
>> >> > serf by Hashicorp) are famous for clean code, good design, stability,
>> >> not
>> >> > enormous size.
>> >> > But, on other side, Go has different model for concurrency and
>> porting
>> >> > probably will not be so straightforward.
>> >> >
>> >> >
>> >> >
>> >> > чт, 19 нояб. 2020 г. в 13:48, Ivan Daschinsky <ivanda...@gmail.com>:
>> >> >
>> >> > > I'd suggest to discuss this IEP and technical details in open ZOOM
>> >> > > meeting.
>> >> > >
>> >> > > чт, 19 нояб. 2020 г. в 13:47, Ivan Daschinsky <ivanda...@gmail.com
>> >:
>> >> > >
>> >> > >>
>> >> > >>
>> >> > >> ---------- Forwarded message ---------
>> >> > >> От: Ivan Daschinsky <ivanda...@gmail.com>
>> >> > >> Date: чт, 19 нояб. 2020 г. в 13:02
>> >> > >> Subject: Re: IEP-61 Technical discussion
>> >> > >> To: Alexey Goncharuk <alexey.goncha...@gmail.com>
>> >> > >>
>> >> > >>
>> >> > >> Alexey, let's arise another question. Specifically, how nodes
>> >> initially
>> >> > >> find each other (discovery) and how they detect failures.
>> >> > >>
>> >> > >> I suppose, that gossip protocol is an ideal candidate. For
>> example,
>> >> > >> consul [1] uses this approach, using serf [2] library to discover
>> >> > members
>> >> > >> of cluster.
>> >> > >> Then consul forms raft ensemble (server nodes) and client use raft
>> >> > >> ensemble only as lock service.
>> >> > >>
>> >> > >> PacificA suggests internal heartbeats mechanism for failure
>> >> detection of
>> >> > >> replicated group, but it says nothing about initial discovery of
>> >> nodes.
>> >> > >>
>> >> > >> WDYT?
>> >> > >>
>> >> > >> [1] -- https://www.consul.io/docs/architecture/gossip
>> >> > >> [2] -- https://www.serf.io/
>> >> > >>
>> >> > >> чт, 19 нояб. 2020 г. в 12:46, Alexey Goncharuk <
>> >> > >> alexey.goncha...@gmail.com>:
>> >> > >>
>> >> > >>> Following up the Ignite 3.0 scope/development approach threads,
>> >> this is
>> >> > >>> a separate thread to discuss technical aspects of the IEP.
>> >> > >>>
>> >> > >>> Let's reiterate one more time on the questions raised by Ivan and
>> >> also
>> >> > >>> see if there are any other thoughts on the IEP:
>> >> > >>>
>> >> > >>>    - *Whether to deploy metastorage on a separate subset of the
>> >> nodes
>> >> > >>>    or allow Ignite to choose these nodes automatically.* I think
>> it
>> >> is
>> >> > >>>    feasible to maintain both modes: by default, Ignite will
>> choose
>> >> > >>>    metastorage nodes automatically which essentially will provide
>> >> the
>> >> > same
>> >> > >>>    seamless user experience as TCP discovery SPI - no separate
>> >> roles,
>> >> > >>>    simplistic deployment. For deployments where people want to
>> have
>> >> > more
>> >> > >>>    fine-grained control over the nodes' assignments, we will
>> >> provide a
>> >> > runtime
>> >> > >>>    configuration which will allow pinning metastorage group to
>> >> certain
>> >> > nodes,
>> >> > >>>    thus eliminating the latency concerns.
>> >> > >>>    - *Whether there are any TLA+ specs for the PacificA
>> protocol.*
>> >> Not
>> >> > >>>    to my knowledge, but it is known to be used in production by
>> >> > Microsoft and
>> >> > >>>    other projects, e.g. [1]
>> >> > >>>
>> >> > >>> I would like to collect general feedback on the IEP, as well as
>> >> > feedback
>> >> > >>> on specific parts of it, such as:
>> >> > >>>
>> >> > >>>    - Metastorage API
>> >> > >>>    - Any existing library that can be used to avoid
>> re-implementing
>> >> the
>> >> > >>>    protocol ourselves? Perhaps, porting the existing
>> implementation
>> >> to
>> >> > Java
>> >> > >>>    (the way TiKV did with etcd-raft [2] [3]? This is a very neat
>> way
>> >> > btw in my
>> >> > >>>    opinion because I like the finite automata-like approach of
>> the
>> >> > replication
>> >> > >>>    module, and, additionally, we could sync bug fixes and
>> >> improvements
>> >> > from
>> >> > >>>    the upstream project)
>> >> > >>>
>> >> > >>>
>> >> > >>> Thanks,
>> >> > >>> --AG
>> >> > >>>
>> >> > >>> [1]
>> >> > >>>
>> >> https://cwiki.apache.org/confluence/display/INCUBATOR/PegasusProposal
>> >> > >>> [2] https://github.com/etcd-io/etcd/tree/master/raft
>> >> > >>> [3] https://github.com/tikv/raft-rs
>> >> > >>>
>> >> > >>
>> >> > >>
>> >> > >> --
>> >> > >> Sincerely yours, Ivan Daschinskiy
>> >> > >>
>> >> > >>
>> >> > >> --
>> >> > >> Sincerely yours, Ivan Daschinskiy
>> >> > >>
>> >> > >
>> >> > >
>> >> > > --
>> >> > > Sincerely yours, Ivan Daschinskiy
>> >> > >
>> >> >
>> >> >
>> >> > --
>> >> > Sincerely yours, Ivan Daschinskiy
>> >> >
>> >>
>> >
>> >
>> > --
>> > Sincerely yours, Ivan Daschinskiy
>> >
>>
>>
>> --
>> Sincerely yours, Ivan Daschinskiy
>>
>

Reply via email to