You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2022/01/14 06:19:35 UTC

[iotdb] 10/13: try support balance multi raft

This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch master_performance
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit f3c2d35c86133cc119b4b9e8b91b35ff7c7e5c76
Author: LebronAl <TX...@gmail.com>
AuthorDate: Wed Dec 15 17:00:12 2021 +0800

    try support balance multi raft
---
 .../src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java |  9 +++++----
 .../org/apache/iotdb/cluster/config/ClusterConstant.java     |  2 +-
 .../src/test/resources/node1conf/iotdb-cluster.properties    |  3 ++-
 openapi/pom.xml                                              | 12 ++++++++++++
 4 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
index b3d1cb5..42bd216 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
@@ -541,12 +541,13 @@ public class ClusterIoTDB implements ClusterIoTDBMBean {
           final SlotStrategy defaultStrategy = new SlotStrategy.DefaultStrategy();
           final int clusterSize =
               ClusterDescriptor.getInstance().getConfig().getSeedNodeUrls().size();
+          final int factor = ClusterDescriptor.getInstance().getConfig().getMultiRaftFactor();
 
           @Override
           public int calculateSlotByTime(String storageGroupName, long timestamp, int maxSlotNum) {
-            int sgSerialNum = extractSerialNumInSGName(storageGroupName) % clusterSize;
+            int sgSerialNum = extractSerialNumInSGName(storageGroupName) % (clusterSize * factor);
             if (sgSerialNum >= 0) {
-              return maxSlotNum / clusterSize * sgSerialNum;
+              return maxSlotNum / (clusterSize * factor) * sgSerialNum;
             } else {
               return defaultStrategy.calculateSlotByTime(storageGroupName, timestamp, maxSlotNum);
             }
@@ -555,9 +556,9 @@ public class ClusterIoTDB implements ClusterIoTDBMBean {
           @Override
           public int calculateSlotByPartitionNum(
               String storageGroupName, long partitionId, int maxSlotNum) {
-            int sgSerialNum = extractSerialNumInSGName(storageGroupName) % clusterSize;
+            int sgSerialNum = extractSerialNumInSGName(storageGroupName) % (clusterSize * factor);
             if (sgSerialNum >= 0) {
-              return maxSlotNum / clusterSize * sgSerialNum;
+              return maxSlotNum / (clusterSize * factor) * sgSerialNum;
             } else {
               return defaultStrategy.calculateSlotByPartitionNum(
                   storageGroupName, partitionId, maxSlotNum);
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/config/ClusterConstant.java b/cluster/src/main/java/org/apache/iotdb/cluster/config/ClusterConstant.java
index cb892ae..7df05a6 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/config/ClusterConstant.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/config/ClusterConstant.java
@@ -39,7 +39,7 @@ public class ClusterConstant {
           (int) ClusterConstant.getHeartbeatIntervalMs(),
           ClusterConstant.getConnectionTimeoutInMS());
 
-  public static final int SLOT_NUM = 10000;
+  public static final int SLOT_NUM = 9999;
   public static final int HASH_SALT = 2333;
   public static final int CHECK_ALIVE_TIME_OUT_MS = 1000;
 
diff --git a/cluster/src/test/resources/node1conf/iotdb-cluster.properties b/cluster/src/test/resources/node1conf/iotdb-cluster.properties
index 050ee8d..9cddb09 100644
--- a/cluster/src/test/resources/node1conf/iotdb-cluster.properties
+++ b/cluster/src/test/resources/node1conf/iotdb-cluster.properties
@@ -21,7 +21,8 @@ internal_meta_port=9003
 internal_data_port=40010
 cluster_info_public_port=6567
 seed_nodes=127.0.0.1:9003,127.0.0.1:9005,127.0.0.1:9007
-default_replica_num=1
+default_replica_num=3
+multi_raft_factor=2
 consistency_level=mid
 connection_timeout_ms=20000
 write_operation_timeout_ms=30000
diff --git a/openapi/pom.xml b/openapi/pom.xml
index 6fd6660..5a79313 100644
--- a/openapi/pom.xml
+++ b/openapi/pom.xml
@@ -73,6 +73,18 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
             <version>${jackson.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.calcite.avatica</groupId>
+            <artifactId>avatica</artifactId>
+            <version>1.8.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.calcite.avatica</groupId>
+            <artifactId>avatica</artifactId>
+            <version>1.8.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>