Distribution

A space may be either distributed or non-distributed.

Distributed Spaces
 With distributed spaces, management of the space data is shared among the seeders that have joined the space. Responsibility for storing the tuples is distributed evenly among all the seeders joined to the space.
Non-Distributed Spaces
 With non-distributed spaces, a single seeder is responsible for all the tuples in the space (the responsibility for storing tuples in the space is assigned to one of the seeders joined to the space). However, other seeders may still store the tuples in the space, depending on the replication degree specified for the space. degree). (other seeders joined to the space may also replicate these tuples if a degree of replication is specified)

Distributed Space

By default, spaces are distributed. In a distributed space, management of the space’s entries is distributed among the seeders that are members of the space, and the ActiveSpaces distribution algorithm ensures that entries are distributed evenly in the space.

Figure 2, Distribution of Entries in a Space shows how the entries for a space are distributed between seeders in the space. Each seeder has approximately the same number of entries.

Distribution of Entries in a Space

To ensure the best possible (most even) distribution of entries in a space regardless of the number of entries, the granularity of the ActiveSpaces distribution algorithm is a single key field’s value. This means that an individual distribution decision is made for every entry stored in the space.

In a distributed space, management of the space’s entries is distributed among the seeders that are members of the space:

  • An efficient distributed hashing algorithm is used to ensure an even distribution of the entries among the seeders.
  • The scalability of the space is limited to the number of entries that all the seeder nodes can manage.
  • The ActiveSpaces coherence protocol ensures global ordering of the operations performed on values associated with a single key in a distributed space, and ensures that those changes are propagated as they happen. ActiveSpaces guarantees that every member of the space sees changes to the values associated with a particular key in the exact same order, regardless of the member’s physical location or level of participation in the space.

Non-Distributed Space

A non-distributed space is entirely managed by a single member. The main reason for using non-distributed spaces is to get absolute view synchrony, so that changes are seen in the same order (as opposed to seeing changes in the same key in the same order).

At any time, one member of the space—the seeder, is in charge of managing the entries for the space. The scalability of the space is limited to the number of entries that the single seeder can manage.

Minimum Number of Seeders
 It is possible to define a minimum number of seeders for a space. If this attribute is defined, the space is not usable until the required number of seeders have joined it. Since it is not possible to service any operation on a space until there is at least one seeder for it, there is always an implied default value of 1 for this setting.
Related reference