2017-02-23 25 views
1

我想重命名一個actor服務並重新部署並將數據遷移到「新」(已重命名)actor。在服務結構中重構服務而不丟失數據的正確方法

當我只重命名演員和部署,它會導致這個錯誤:

Services must be explicitly deleted before removing their Service Types

,因爲清單中的名稱更改這是合理的。

但是,重命名演員並保存數據的推薦/最簡單的方法是什麼?

我可以嘗試備份和恢復新角色中的數據。但這不符合CICD的工作方式。

找到一個相關的問題:Service Fabric: removed actors and now upgrade fails但似乎有很多涉及手動操作。

回答

1

我會嘗試部署版本,其中:

  • 有能力擴大現有的演員來閱讀他們的狀態
  • 創建新的角色 - 在需要的時候 - 通過讀取現有的參與者的狀態,然後刪除讀取現有的演員(你真的不需要它的權利?)

如果你不deleteOnConverted,你加倍所需的存儲空間,進行轉換。

最後部署一個版本,其中:

  • 刪除未轉換現有的參與者或剩餘現有的參與者轉換成新類型的新演員
  • - 現有/老演員狀態的禁用查找(這很容易忘記)

也許你總是可以扔掉CI設置狀態,而CD設置需要狀態轉換?

順便說一句 - 你應該避免重命名狀態,因爲這是一個突破性的改變。

+0

謝謝,我很害怕這個。我也可以構建自定義的導出和導入。無論如何,這沒有自動化的過程,我需要編程。在實體框架中,我使用了代碼優先方法和遷移腳本。所以我可以輕鬆地上傳或下載版本。 現在很高興知道這一點,因爲那樣我將來會避免這種情況。 – Thieme