Monday, November 19, 2018

Today we continue enumerating the best practice from storage engineering:

70) Topology: Most storage products are deployed as single instances and usually comprising of a cluster or software defined stacks. However, the layout that the user might choose to have should remain as flexible as possible so that it can scale to their requirements. In this regard, each storage product/server/appliance must behave well with other instances in arrangements such chaining or federation.

71) Virtual time: As the storage server virtualizes storage over heterogeneous media and expands elastically for demand, there is a need to co-ordinate activities across participating agents. In such cases, the only event sequence that can be established correctly is the one based on virtual time.

72) Gossip protocol: In a distributed environment, the best way to detect failures and determine memberships is with the help of gossip protocol. When an existing node leaves the network, it may not respond to the gossip protocol so the neighbors become aware.  The neighbors update the membership changes and copy data asynchronously.

73) Paxos Algorithm: Some systems utilize a state machine replication such as Paxos that combines transaction kogging for consensus with write-ahead logging for data recovery. If the state machines are replicated, they are fully Byzantine tolerant.

74) Consistent hashing – Data is partitioned and replicated using consistent hashing to achieve scale and availability. Consistency is facilitated by object versioning. Replicas are maintained during updates based on a quorum like technique.

75) Cachepoints – Cachepoints are used with consistent hashing. Cachepoints are arranged along the circle depicting the key range and cache objects corresponding to the range. Virtual nodes can join and leave the network without impacting the operation of the ring.

No comments:

Post a Comment