Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Object Storage Service/ Referência de API/ Apêndices/ Consistência de operações simultâneas
Atualizado em 2022-11-07 GMT+08:00

Consistência de operações simultâneas

Depois que uma mensagem de sucesso é retornada em resposta à solicitação de gravação ou exclusão de um cliente, o cliente pode obter os dados mais recentes. Se um cliente que inicia uma solicitação de gravação expira em espera por uma resposta ou o servidor retorna o código de status de resposta HTTP 500 ou 503, as operações de leitura subsequentes podem falhar. Se tal erro ocorrer, consulte se os dados foram carregados com êxito para o servidor. Caso contrário, faça o carregamento dos dados novamente.

Se um cliente carregar, consultar ou excluir simultaneamente o mesmo objeto ou bucket, essas operações poderão chegar ao sistema em momentos diferentes e ter períodos de latência diferentes, de modo que resultados diferentes possam retornar. Por exemplo, se vários clientes carregarem simultaneamente o mesmo objeto, a última solicitação de carregamento recebida pelo sistema substituirá a anterior. Se quiser evitar que um objeto seja acessado simultaneamente, é necessário adicionar um mecanismo de bloqueio para o objeto em aplicativos de camada superior.

Exemplo de operações simultâneas

1. Quando client1 está carregando um objeto V1, client2 está carregando um objeto V2 com o mesmo nome. Após os carregamentos bem-sucedidos, o client1 e o client2 podem acessar os dados de objeto mais recentes V2, conforme mostrado em Figura 1.

Figura 1 Carregamento simultâneo do mesmo objeto

2. Quando o client2 está carregando um objeto V1 e os metadados do objeto ainda não estão escritos, client1 exclui um objeto com o mesmo nome. Nesse cenário, a operação de carregamento do client2 ainda é bem-sucedida e o client1 e o client2 podem acessar o objeto de dados V1, conforme mostrado em Figura 2.

Figura 2 Upload e exclusão simultâneos do mesmo objeto (1)

3. Quando o client2 carregou com sucesso um objeto V1 e os metadados do objeto ainda estão sendo gravados, client1 exclui um objeto com o mesmo nome. Neste cenário, a operação de carregamento de client2 ainda é bem sucedida. No entanto, quando client1 e client2 tentam baixar o objeto, eles podem acessar o objeto de dados V1, ou um erro pode ser retornado indicando que o objeto não existe, como mostrado em Figura 3.

Figura 3 Upload e exclusão simultâneos do mesmo objeto (2)

4. Quando o client1 está baixando um objeto, client2 exclui um objeto com o mesmo nome. Nesse cenário, client1 pode ter baixado uma cópia completa ou apenas parte dos dados do objeto. Depois que uma mensagem de sucesso de exclusão for retornada ao client2, uma tentativa de baixar o objeto falhará e um erro será retornado indicando que o objeto não existe, como mostrado em Figura 4.

Figura 4 Download simultâneo e exclusão do mesmo objeto

5. Quando client1 está baixando um objeto, client2 está atualizando um objeto com o mesmo nome. Nesse cenário, client1 pode ter baixado uma cópia completa ou apenas parte dos dados do objeto. Depois que uma mensagem de sucesso de atualização for retornada ao cliente 2, uma tentativa de baixar o objeto será sucedida e os dados mais recentes serão retornados, conforme mostrado em Figura 5.

Figura 5 Download e atualização simultâneos do mesmo objeto

6. Quando client2 está carregando parte V1 de um objeto, client1 está carregando parte V2 do mesmo objeto. Depois que a parte V2 é carregada com sucesso, client1 e client2 podem alistar a informação sobre o multipart cuja etiqueta da entidade (ETag) é parte V2, como mostrado em Figura 6.

Figura 6 Carregamento simultâneo a mesma parte do mesmo objeto