我有在多個區域運行的微服務(Kubernetes pod)。我有一個受監控的集合。(所有區域都將監控同一個集合;每個區域都有多個 pod)
我希望每個區域的部署單元獨立處理每個檔案(已更新)。以下是我計劃如何完成這項作業:
- 每個區域的部署單元將使用不同的處理器名稱(例如 CFP-US、CFP-Europe、CFP-Australia)
- 在一個區域中運行的所有 pod,將使用該區域的處理器名稱、相同的租用容器和不同的實體名稱(例如 pod 的唯一 ID)。(租賃容器實際上對于所有區域都是相同的)。
問題:
- 上面的設定是否實作了我想要的(即每個區域獨立處理每個更新的檔案?)
- 我的收藏只有一個物理磁區。我的理解是,在這種情況下,一個區域中的所有 Pod/實體只存在一個租約(因為租約是針對物理磁區的);并且每個區域都有自己的租約(因為每個區域的處理器名稱不同)。我的理解正確嗎?
- 假設我在一個區域中有 3 個 pod/實體。由于只存在租約,因此一次只有 pod 接收 CFP 更新,而其他 2 個則處于空閑狀態。如何配置租約/間隔,以便所有 3 個 pod (幾乎)均等地獲得更新?即 pod-A 獲得更新(而 pod-B、pod-C 閑置),然后一段時間后,pod-B 獲得更新(而 pod-A、pod-C 閑置);然后 pod-C 獲取更新(而 pod-B、pod-A 閑置);等等。
- 醫生說:
實體數不應大于租約數。
除了一些 pod 可能處于空閑狀態之外,實體多于租約是否會導致任何其他問題?(尤其是租賃狀態下的問題,或獲取/續訂租賃等問題)
uj5u.com熱心網友回復:
- 是的。只要它們是不同的部署單元(https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/change-feed-processor?tabs=dotnet#deployment-unit)沒關系在它們實際所在的位置,每個部署單元都將收到更改。
- 正確的。每個部署單元都將創建自己獨立的 leaes 集。
- 你不能。每臺機器的租約分配是設計使然,沒有強制它的配置。
- 這是理想的場景,原因是所有機器(使用 LeaseAcquireInterval)經常檢查它們是否可以獲得新的租約。如果當前擁有它的機器釋放它(例如對于未處理的錯誤),則租約可以跳轉到任何其他機器。根據您的遙測,這可能是不可取的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/521776.html
標籤:天蓝色天蓝色宇宙数据库天蓝色 cosmosdb-sqlapiazure-cosmosdb-changefeed
