OpenIO SDS is composed of multiple services, running on commodity hardware,
from power-efficient systems to high-performance servers. Services are designed
to run across multiple nodes and do not require any specific collocation.

User authentication and service discovery is done through Openstack Keystone which is accessed directly by the client when using the Swift API, whereas when using S3, Keystone does not need to be publicly exposed.

Conscience services are composed of a conscience service and conscience-agent services.

Conscience

The conscience service has two main functions:

Service Discovery: A service uses Conscience to discover what kind of services are available in the namespace and how to contact them.

Load Balancing: Conscience performs load balancing using real time metrics that are collected from the storage nodes. A score between 0 and 100 is computed using a configurable formula and then used to make a weighted random selection.

Key characteristics:

Stateless

CPU and network intensive

Must be deployed on at least 3 different servers

Conscience-agent

This service monitors local services on the machine and also manage service registration in Conscience.

The account service stores account related information such as the container list,
the number of objects, and the number of bytes occupied by all objects in the cluster.
Following an operation on a container (PUT, DELETE), events are created and consume
by the account service in order to update account information asynchronously.

Key characteristics:

Stateful

CPU intensive

REDIS

Redis is used by the account service to store account information.

Key characteristics:

Stateful

I/O intensive

Recommended to be deployed on high performance storage like SSD or NVMe