簡體   English   中英

在Erlang中創建Riak兄弟姐妹

[英]Riak sibling creation in erlang

假設兩個進程同時使用相同的存儲桶和相同的密鑰(可能要尋址兩個不同的RIAK節點)同時對RIAK執行相同的寫命令,並且allow_mult true,並且該密鑰肯定是存儲桶中的新密鑰:{ok,WrittenObject} = riakc_pb_socket: put(Pid,Obj,[return_body])

是否可能發生兩個進程都將WrittenObject返回到riakc_obj:value_count(WrittenObject)大於1的情況,還是肯定一個進程將其設為1,而另一個進程將其值設為2?

根據密鑰中已存儲的內容以及每個put請求中包含的vclock,值計數可以為1,2或3。假設沒有分區事件(即,非故障情況),則每個put將協調一個密鑰的首選項中的主要vnode的數量,如果存儲對象中包含的vclock不主導已經存在的vnode,則將存儲這兩個值。 即使兩個請求幾乎是同時發出的,也要先處理,如果兩個請求都看不到同級,那將是一場比賽。

編輯:如果存儲桶上的allow_mult屬性設置為false,則Riak將基於元數據中的X-Riak-Last-ModifiedX-Riak-Deleted條目選擇一個值返回。 這意味着您輸入的值可能不是返回的值。

僅當allow_mult為true時,您才會看到多個返回的值。

暫無
暫無

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

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