一致性值
一致性可在不同存储节点和站点之间的对象可用性与这些对象的一致性之间实现平衡。您可以根据应用程序的要求更改一致性。
默认情况下, StorageGRID 保证新创建的对象的写入后读一致性。成功完成 PUT 后的任何 GET 都将能够读取新写入的数据。对现有对象的覆盖,元数据更新和删除最终保持一致。覆盖通常需要几秒钟或几分钟才能传播,但可能需要长达 15 天的时间。
如果要以不同的一致性执行对象操作、您可以:
一致性值
一致性会影响StorageGRID用于跟踪对象的元数据在节点之间的分布方式、从而影响对象对客户端请求的可用性。
您可以将存储分段或API操作的一致性设置为以下值之一:
-
all:所有节点都会立即接收数据,否则请求将失败。
-
强-全局:保证所有站点中所有客户端请求的写入后读一致性。
-
强站点:保证站点内所有客户端请求的写入后读一致性。
-
read-after-new-write:(默认)为新对象提供写后读一致性、并最终为对象更新提供一致性。提供高可用性和数据保护保证。建议用于大多数情况。
-
可用:为新对象和对象更新提供最终一致性。对于S3存储分段、请仅在需要时使用(例如、对于包含很少读取的日志值的存储分段、或者对于不存在的密钥执行HEAD或GET操作)。S3 FabricPool 存储分段不支持。
使用"新写后读取"和"可用"一致性
如果head或get操作使用"新写入后读取"一致性、则StorageGRID会通过多个步骤执行查找、如下所示:
-
它首先使用低一致性查找对象。
-
如果此查找失败、它将在下一个一致性值处重复此查找、直到达到与强全局行为等效的一致性为止。
如果head或get操作使用"新写入后读取"一致性、但对象不存在、则对象查找将始终达到与强全局行为等效的一致性。由于这种一致性要求每个站点上都有多个对象元数据副本、因此、如果同一站点上的两个或更多存储节点不可用、您可能会收到大量500个内部服务器错误。
除非您需要与Amazon S3类似的一致性保证、否则可以通过将一致性设置为"available "来防止HEAD和GET操作出现这些错误。如果head或get操作使用"可用"一致性、则StorageGRID仅提供最终的一致性。它不会在一致性提高时重试失败的操作、因此不需要提供对象元数据的多个副本。
[[API-operation]指定API操作的一致性
要为单个API操作设置一致性、此操作必须支持一致性值、并且必须在请求标头中指定一致性。此示例将GetObject操作的一致性设置为"strong-site"。
GET /bucket/object HTTP/1.1 Date: date Authorization: authorization name Host: host Consistency-Control: strong-site
对于PutObject和GetObject操作、必须使用相同的一致性。 |
指定存储分段的一致性
要设置存储分段的一致性、可以使用StorageGRID"PUT 存储分段一致性"请求。或者、也可以"更改存储分段的一致性"从租户管理器中执行此操作。
设置存储分段的一致性时、请注意以下事项:
-
设置存储分段的一致性可确定对存储分段或存储分段配置中的对象执行的S3操作所使用的一致性。它不会影响存储分段本身的操作。
-
单个API操作的一致性会覆盖存储分段的一致性。
-
通常、分段应使用默认一致性"read-after-new-write"。如果请求无法正常工作、请尽可能更改应用程序客户端的行为。或者、将客户端配置为为为每个API请求指定一致性。只能在最后一种方法下、在存储分段级别设置一致性。
[[how-sistic-controls-and-ilm-맦 퓲-interact ]]如何通过一致性和ILM规则交互来影响数据保护
您选择的一致性和ILM规则都会影响对象的保护方式。这些设置可以进行交互。
例如、存储对象时使用的一致性会影响对象元数据的初始放置、而为ILM规则选择的加载行为会影响对象副本的初始放置。由于StorageGRID需要同时访问对象的元数据及其数据才能满足客户端请求、因此为一致性和载入行为选择匹配的保护级别可以提供更好的初始数据保护、并提高系统响应的可预测性。
以下内容"加热选项"适用于ILM规则:
- 双提交
-
StorageGRID会立即创建对象的临时副本、并将成功结果返回给客户端。如果可能,将创建 ILM 规则中指定的副本。
- 严格
-
必须先创建ILM规则中指定的所有副本、然后才能将成功返回到客户端。
- 平衡
-
StorageGRID会在加载时尝试创建ILM规则中指定的所有副本;如果无法创建、则会创建临时副本、并将成功结果返回给客户端。在可能的情况下,将创建 ILM 规则中指定的副本。
一致性规则和ILM规则如何交互的示例
假设您有一个双站点网格、该网格具有以下ILM规则、并且具有以下一致性:
-
* ILM 规则 * :创建两个对象副本,一个在本地站点,一个在远程站点。使用严格的加热行为。
-
一致性:强全局(对象元数据立即分发到所有站点)。
当客户端将对象存储到网格时, StorageGRID 会创建两个对象副本并将元数据分发到两个站点,然后再向客户端返回成功。
在载入成功消息时,此对象将受到完全保护,不会丢失。例如,如果本地站点在载入后不久丢失,则远程站点上仍存在对象数据和对象元数据的副本。此对象完全可检索。
如果您改用相同的ILM规则和强站点一致性、则在将对象数据复制到远程站点之后、在远程站点分发对象元数据之前、客户端可能会收到一条成功消息。在这种情况下,对象元数据的保护级别与对象数据的保护级别不匹配。如果本地站点在载入后不久丢失,则对象元数据将丢失。无法检索此对象。
一致性和ILM规则之间的相互关系可能很复杂。如果需要帮助、请联系NetApp。