Replies: 1 comment 3 replies
-
* Sergey Bronnikov <notifications@github.com> [21/02/05 18:17]:
### Proposal
Create a separate Tarantool module in Lua that will expose API
to work with topology.
This is called Raft. Configuration changes are Raft core.
Vshard topology changes are a custom protocol which is not
reliable, this is why Raft was supposed to be added in the first
place.
Isn't it funny, Raft is declared stable and a core part of Raft is marketed as
a separate feature :)
This gives a wonderful opportunity to invent a new protocol for
configuration changes, qsync 2.0 maybe?
…--
Konstantin Osipov, Moscow, Russia
|
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Introduction
With Tarantool’s
vshard
module [1], the tuples of a dataset are distributed across multiple nodes, with a Tarantool database server instance on each node. Each instance handles only a subset of the total data, so larger loads can be handled by simply adding more servers. All cluster nodes must share a common topology.vshard
static configuration file (see configuration syntax in [2, 3]) describes topology that includes:Topology schema with possible properties looks like:
Example of topology file used by
vshard
:Currently topology for
vshard
[2, 3] can be configured manually in a static configuration file.For Cartridge most of topology can be obtained automatically but vshard roles for instances (router or storage) should be set manually.
Proposal
Create a separate Tarantool module in Lua that will expose API to work with topology. Module should persist topology using Configuration provider (see [9]). Cartridge and vshard should someday switch to start to use Topology provider for work with topology.
Configuration provider API has been proposed in [9]:
read()
,write()
,lock()
There is already a Cartridge and vshard that already use topology using their own API. See [4, 5, 6, 7, 8] for Cartridge and [10] for vshard. It's an open question how Topology provider API should look like. We can create an API that will conform methods that Cartridge and vshard already use to work with topology or we can create API from scratch. For example:
For example adding two instances with same replicaset_id creates replicaset with two nodes.
Allows to update properties like uid, uri, role, name, replicaset id.
There are also wishes that we should take into account in topology provider:
distance
term instead ofweights
for availability zones (see Rename "replica weights" to "distances" vshard#253)References
Beta Was this translation helpful? Give feedback.
All reactions