2424import org .astraea .common .balancer .algorithms .GreedyBalancer ;
2525import org .astraea .common .balancer .algorithms .SingleStepBalancer ;
2626import org .astraea .common .cost .ClusterCost ;
27+ import org .astraea .common .metrics .ClusterBean ;
2728
2829public interface Balancer {
2930
@@ -32,41 +33,24 @@ public interface Balancer {
3233 */
3334 Optional <Plan > offer (AlgorithmConfig config );
3435
35- class Plan {
36- private final ClusterInfo initialClusterInfo ;
37- private final ClusterCost initialClusterCost ;
38-
39- private final ClusterInfo proposal ;
40- private final ClusterCost proposalClusterCost ;
41-
42- public Plan (
43- ClusterInfo initialClusterInfo ,
44- ClusterCost initialClusterCost ,
45- ClusterInfo proposal ,
46- ClusterCost proposalClusterCost ) {
47- this .initialClusterInfo = initialClusterInfo ;
48- this .initialClusterCost = initialClusterCost ;
49- this .proposal = proposal ;
50- this .proposalClusterCost = proposalClusterCost ;
51- }
52-
53- public ClusterInfo initialClusterInfo () {
54- return initialClusterInfo ;
55- }
36+ record Plan (
37+ ClusterBean clusterBean ,
38+ ClusterInfo initialClusterInfo ,
39+ ClusterCost initialClusterCost ,
40+ ClusterInfo proposal ,
41+ ClusterCost proposalClusterCost ) {
5642
5743 /**
5844 * The {@link ClusterCost} score of the original {@link ClusterInfo} when this plan is start
5945 * generating.
6046 */
47+ @ Override
6148 public ClusterCost initialClusterCost () {
6249 return initialClusterCost ;
6350 }
6451
65- public ClusterInfo proposal () {
66- return proposal ;
67- }
68-
6952 /** The {@link ClusterCost} score of the proposed new allocation. */
53+ @ Override
7054 public ClusterCost proposalClusterCost () {
7155 return proposalClusterCost ;
7256 }
0 commit comments