簡體   English   中英

Openstack Swift中的對象是否立即可用?

[英]Are objects in Openstack Swift immediately available?

OpenStack Swift允許在集群中的多個位置復制和分發對象。

是否可以保證在成功進行PUT操作之后,我可以立即GET對象,還是必須等待對象在群集中傳播?

當Swift返回成功執行PUT操作時,可以確保它已寫入仲裁(即(numReplicas / 2)+1)。 例如,使用3x副本策略,將在確認寫入請求之前寫入兩個副本。 由於只需要一個副本即可讀取對象 ,因此該對象立即可用 其余副本在正常對象復制器服務周期內寫入,並根據環配置放置。

至於它是否存在於容器清單中,則可能要復雜一些。 在Liberty發行版中,有一個名為container_update_timeout的配置設置,其默認值為1。這表示,如果對象服務器在不到1秒的時間內從容器服務獲得確認,則更新將同步發生,並在成功返回時確保得到更新。客戶端。 但是,如果容器服務花費的時間更長,或者如果該值設置得很低(例如0),那么容器更新將被捆綁在一起並異步提交給容器服務。

這樣做是為了提高多區域部署中的性能,在這種多區域部署中,要更新的容器元數據可能與請求更新的對象服務不存在於同一數據中心甚至同一國家中。

根據文檔

假設容器服務器處於負載狀態,並且將新對象放入系統中。 代理服務器成功響應客戶端后,該對象將立即可供讀取 但是,容器服務器沒有更新對象列表,因此該更新將排隊等待稍后的更新。 因此,容器列表可能不會立即包含該對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM