簡體   English   中英

了解默認的 Microsoft Orleans Grain 目錄

[英]Understanding the default Microsoft Orleans Grain Directory

我試圖了解默認的 Orleans Grain 目錄。

https://learn.microsoft.com/en-us/do.net/orleans/host/grain-directory

本文強烈建議您應該使用默認目錄,並且只有在您有特定用例和切換原因時才應切換到其他目錄。

問題:如果默認目錄在 memory 存儲中是最終一致的,那么可以保證隨着時間的推移,grains 將被復制。 這對於應用程序 state 來說可能是災難性的。

顯然,微軟對此有一些緩解措施。 我想知道它是什么?

Orleans 將確保 grain 目錄隨着時間的推移收斂,以便集群中的每個 grain 激活恰好有一個注冊。

由於它最終是一致的,因此可能存在 grain 處於活動狀態但未注冊的時期(例如,因為注冊 grain 的主機剛剛被流星撞擊)並且可能存在多個不同的 grain 激活的時期在不同主機上注冊(例如,新主機剛剛加入集群但並非所有主機都知道的比賽)。

這些情況都很快得到糾正:目錄分區拆分和合並,這樣就沒有重疊(兩個孤島認為它們擁有一定范圍的鍵)或間隙(沒有孤島擁有一定范圍的鍵),這樣做時,重復解決了缺少注冊的停用和激活會在發現差距后立即終止(即,當注冊谷物的筒倉被驅逐時)。

請注意,即使使用高度一致的目錄,也可能會出現重復激活。 考慮這樣一種情況,一個孤島失去網絡連接並隨后被集群中的其他孤島驅逐,或者主機執行很長時間的 GC 暫停,或者虛擬機從一台主機遷移到另一台主機。 在這些情況下,筒倉可能會繼續運行一段時間,然后才知道它應該自行終止(在得知它已被驅逐后)。

Grains 應該將關鍵應用程序 state 放在一致的存儲中。 當 Orleans 保存 grain state 時,它使用樂觀並發控制來確保它不會破壞未觀察到的寫入。 因此,即使您確實有重復激活,也可以保證任何寫入都已經看到所有以前的寫入。 默認情況下,由於不一致而失敗的寫入也會導致 grain 停用,這甚至可以在集群成員檢測到筒倉已被驅逐之前解決重復問題。

暫無
暫無

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

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