Clarifying docs for The Ring, and add link to more detailed ring docs.

This commit is contained in:
Brian K. Jones 2010-07-22 08:33:58 -04:00
parent 2ba58ed933
commit e0c666df62

View File

@ -6,22 +6,30 @@ Swift Architectural Overview
The Ring The Ring
-------- --------
The Ring is a mapping of a requested account, container, or object to the The available storage in a Swift deployment is organized into separate rings
server, device, and partition that it should reside in. The partitions for accounts, containers, and objects. When other components need to handle
of the ring are equally divided among all the devices in the cluster. requests to find, create, destroy, or perform any operation on any object,
When an event occurs that requires partitions to be moved around (for container, or account, they interact with the appropriate ring to accomplish
example if a device is added to the cluster), it ensures that a minimum that.
number of partitions are moved at a time, and only one replica of a
partition is moved at a time. The Ring manages the available storage using zones, devices, partitions, and
replicas.
Each partition in the ring is replicated, by default, 3 times accross the Each partition in the ring is replicated, by default, 3 times accross the
cluster, and thus stored in the mapping. The ring is also responsible cluster, and the locations for a partition are stored in the mapping
for determining which devices are used for handoff in failure scenarios. maintained by the ring. The ring is also responsible for determining which
devices are used for handoff in failure scenarios.
Data can be isolated with the concept of zones in the ring. Each replica Data can be isolated with the concept of zones in the ring. Each replica
of a partition is guaranteed to reside in a different zone, A zone could of a partition is guaranteed to reside in a different zone. A zone could
represent a drive, a server, a cabinet, a switch, or even a datacenter. represent a drive, a server, a cabinet, a switch, or even a datacenter.
The partitions of the ring are equally divided among all the devices in the
Swift installation. When an event occurs that requires partitions to be
moved around (for example if a device is added to the cluster), the ring
ensures that a minimum number of partitions are moved at a time, and only
one replica of a partition is moved at a time.
Weights can be used to balance the distribution of partitions on drives Weights can be used to balance the distribution of partitions on drives
across the cluster. This can be useful, for example, if different sized across the cluster. This can be useful, for example, if different sized
drives are used in a cluster. drives are used in a cluster.
@ -29,6 +37,8 @@ drives are used in a cluster.
The ring is used by the Proxy server and several background processes The ring is used by the Proxy server and several background processes
(like replication). (like replication).
For more detailed information about the ring, see :doc:`overview_ring`
------------- -------------
Object Server Object Server
------------- -------------
@ -79,7 +89,7 @@ example, if a server is unavailable for an object PUT, it will ask the
ring for a handoff server, and route there instead. ring for a handoff server, and route there instead.
When objects are streamed to or from an object server, they are streamed When objects are streamed to or from an object server, they are streamed
directly through the proxy server to or from the user -- the proxy server directly through the proxy server to of from the user -- the proxy server
does not spool them. does not spool them.
----------- -----------
@ -134,3 +144,4 @@ for example), the file is quarantined, and replication will replace the bad
file from another replica. If other errors are found they are logged (for file from another replica. If other errors are found they are logged (for
example, an object's listing can't be found on any container server it example, an object's listing can't be found on any container server it
should be). should be).