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