2
0

ResourceGroupExample.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package io.milvus;
  2. import com.google.gson.Gson;
  3. import io.milvus.client.MilvusServiceClient;
  4. import io.milvus.resourcegroup.ResourceGroupManagement;
  5. import io.milvus.param.ConnectParam;
  6. public class ResourceGroupExample {
  7. private static final ResourceGroupManagement manager;
  8. private static final String rgName1 = "rg1";
  9. private static final String rgName2 = "rg2";
  10. private static Gson gson = new Gson();
  11. static {
  12. ConnectParam connectParam = ConnectParam.newBuilder()
  13. .withHost("localhost")
  14. .withPort(19530)
  15. .withAuthorization("root", "Milvus")
  16. .build();
  17. manager = new ResourceGroupManagement(new MilvusServiceClient(connectParam));
  18. }
  19. private static void printResourceGroupInfo() throws Exception {
  20. manager.listResourceGroups().forEach((name, rg) -> {
  21. System.out.println(name);
  22. System.out.println(gson.toJson(rg));
  23. });
  24. }
  25. public static void main(String[] args) throws Exception {
  26. // It's a demo to show how to use resource group management.
  27. // It create a database-level-resource-group-control (single replica)
  28. // management.
  29. // Declarative resource group API can also achieve
  30. // replica-level-resource-group-control (multi-replica) management.
  31. printResourceGroupInfo();
  32. // Initialize the cluster with 1 resource group
  33. // default_rg: 1
  34. manager.initializeCluster(1);
  35. printResourceGroupInfo();
  36. // Add one more node to default rg.
  37. manager.scaleResourceGroupTo(ResourceGroupManagement.DEFAULT_RG, 2);
  38. // add new query node.
  39. // default_rg: 2
  40. printResourceGroupInfo();
  41. // Add a new resource group.
  42. manager.createResourceGroup(rgName1, 1);
  43. // default_rg: 2, rg1: 0
  44. // add new query node.
  45. // default_rg: 2, rg1: 1
  46. printResourceGroupInfo();
  47. // Add a new resource group.
  48. manager.createResourceGroup(rgName2, 2);
  49. // default_rg: 2, rg1: 1, rg2: 0
  50. // add new query node.
  51. // default_rg: 2, rg1: 1, rg2: 1
  52. // add new query node.
  53. // default_rg: 2, rg1: 1, rg2: 2
  54. printResourceGroupInfo();
  55. // downscale default_rg to 1
  56. manager.scaleResourceGroupTo(ResourceGroupManagement.DEFAULT_RG, 1);
  57. // default_rg: 1, rg1: 1, rg2: 2, recycle_rg: 1
  58. printResourceGroupInfo();
  59. manager.scaleResourceGroupTo(ResourceGroupManagement.DEFAULT_RG, 5);
  60. manager.scaleResourceGroupTo(rgName1, 1);
  61. manager.scaleResourceGroupTo(rgName2, 3);
  62. // keep 8 query node in cluster.
  63. printResourceGroupInfo();
  64. // if there are replicas in other rg, transfer them to default together.
  65. manager.transferDataBaseToResourceGroup("default", ResourceGroupManagement.DEFAULT_RG);
  66. printResourceGroupInfo();
  67. }
  68. }