-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement a CostFunction
that understands the relationship between partition and metrics
#1148
Comments
@chia7712 FYI |
這個 對此我能想到的方法是像 |
請問一下,這個目的是什麼?例如是沿用 cluster cost 的介面,讓“partition彼此的流量差異太高"跟分數綁在一起。還是說是 balancer 要明確拿到各個 |
第一個例子我不太確定意思,但不是第二個例子的意思。
|
就是如果你沒有拿到 |
拿到 |
|
從這點要如何去看 |
這邊在之前討論算是我不小心忽略掉的問題
balancer端主要還是看
|
這邊提到的是 另外同樣老問題:
|
不是,單純指的是某個balancer預計要變成的分佈(
在Balancer這邊,他可以是一個方法就好,不一定要是Interface,用途是算出每個replica的寫入流量,目的就是要能用這個算出
現在的 簡單講一下要如何計算Balancer要用的ClusterCost:
上面如果使用BytesInPerSec/BytesOutPerSec,在計算一個還沒有搬移的計畫的分數時無法使用,因為沒辦法得知每個broker在當下的預計流量會變成多少 |
所以就流量這個議題來看的話,會需要 partition level 的分數是因為 balancer 需要知道新配置的「流量分數」是多少,而目前的流量分數是用 metrics 來算的話,因為我們沒有「新的 metrics」,所以會導致新的配置算出跟舊的一樣的分數? |
這麼說也沒錯,但是 |
我的建議如下:
綜合上述,實作方式應該是 cost function 從 cluster bean 取得 partition level 的數字,然後根據目前的叢集 cluster info 來拼湊出分數 |
抱歉我可能上面沒說清楚,我上面提到的三個步驟是在原本的
原本在 |
應該是說以這個為例子,我們要依序完成下方工作:
|
我們需要一個
CostFunction
,能夠根據叢集目前的分佈,來給出輸入流量和輸出流量的平衡程度。過去有一個
ReplicaDiskInCost
可以做到類似的效果,但是因為 ? 和 #955 (review) 的原因被刪除了。EDIT: #754 (comment) 其他相關的討論
這個東西的替代方案好像是
BrokerInputCost
https://github.com/skiptests/astraea/blob/8104a8298498c4aab4b8eb5a13da3ccf9b3dcde3/common/src/main/java/org/astraea/common/cost/BrokerInputCost.java#L30-L59
這個
BrokerInputCost
的實作沒有根據 ClusterInfo 去生成一個分數,他只是單純把過去看到的輸入負載加起來。這個 CostFunction 在 Balancer 大量生成的虛假分佈中,每個分佈都是一樣的分數。所以
BrokerInputCost
的實作不適合用在 Balancer,我們需要一個像ReplicaDiskInCost
一樣能理解 ClusterInfo 和輸入輸出負載關聯的 Cost Function。The text was updated successfully, but these errors were encountered: