对NetApp StorageGRID对象存储中的Bucket发起S3请求时的一致性等级

Posted on

NetApp StorageGRID对象存储集群针对每个租户使用的Bucket,在应用端发起S3请求(GET或PUT)时,可以设置一致性等级。通过配合StorageGRID的多副本机制,来确保数据的安全性及高可用性。针对不同的应用场景及副本保存需求,可以在Bucket上灵活调整这一参数。

要声明对象的一致性等级,需要在发起S3请求时添加x-ntap-sg-consistency标签。

S3请求示例

PUT /bucket?x-ntap-sg-consistency=default HTTP/1.1
Date: Wed, 13 Feb 2019 16:39:17 GMT
Authorization: AWS 9MOYPG9ACWPAJA1SXXXX:jUGbYkLdBApjCWBgK4TxvOjxxxx=
Host: imno.one

S3应答示例

HTTP/1.1 200 OK
Date: Wed, 13 Feb 2019 16:44:00 GMT
Connection: CLOSE
Server: StorageGRID/10.3.0
x-amz-request-id: 12345
Content-Length: 127
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
    <Consistency xmlns="http://s3.imno.one/demo/">default</Consistency>

可选的一致性参数

1. All提供最高的一致性保证。所有节点都会立即接收数据,否则请求失败

2. Strong-global对于整个集群,所有的操作都保证一致的写后读

3. Strong-site对于单个站点,所有操作都保证一致的写后读

4. Default在保证数据保护的前提下,确保最终的一致性及高可用。

Default是Bucket默认的一致性等级。请求在不带额外标签时默认选择此参数。

5. Weak确保最高的高可用,但是不提供一致性保证,并且减弱了数据保护效果(仅对GET方式有效)

参考文档

《NetApp StorageGRID – Simple Storage Service Implementation Guide》:https://library.netapp.com/ecm/ecm_download_file/ECMLP2412007

END