Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-12993

Split the state.json into 2. a small frequently modified data + a large unmodified data

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      This a just a proposal to minimize the ZK load and improve scalability of very large clusters.

      Every time a small state change occurs for a collection/replica the following file needs to be updated + read * n times (where n = no of replicas for this collection ). The proposal is to split the main file into 2.

      {"gettingstarted":{
          "pullReplicas":"0",
          "replicationFactor":"2",
          "router":{"name":"compositeId"},
          "maxShardsPerNode":"-1",
          "autoAddReplicas":"false",
          "nrtReplicas":"2",
          "tlogReplicas":"0",
          "shards":{
            "shard1":{
              "range":"80000000-ffffffff",
            
              "replicas":{
                "core_node3":{
                  "core":"gettingstarted_shard1_replica_n1",
                  "base_url":"http://10.0.0.80:8983/solr",
                  "node_name":"10.0.0.80:8983_solr",
                  "state":"active",
                  "type":"NRT",
                  "force_set_state":"false",
                  "leader":"true"},
                "core_node5":{
                  "core":"gettingstarted_shard1_replica_n2",
                  "base_url":"http://10.0.0.80:7574/solr",
                  "node_name":"10.0.0.80:7574_solr",
               
                  "type":"NRT",
                  "force_set_state":"false"}}},
            "shard2":{
              "range":"0-7fffffff",
              "state":"active",
              "replicas":{
                "core_node7":{
                  "core":"gettingstarted_shard2_replica_n4",
                  "base_url":"http://10.0.0.80:7574/solr",
                  "node_name":"10.0.0.80:7574_solr",
                 
                  "type":"NRT",
                  "force_set_state":"false"},
                "core_node8":{
                  "core":"gettingstarted_shard2_replica_n6",
                  "base_url":"http://10.0.0.80:8983/solr",
                  "node_name":"10.0.0.80:8983_solr",
               
                  "type":"NRT",
                  "force_set_state":"false",
                  "leader":"true"}}}}}}
      

      another file status.json which is frequently updated and small.

      {
          "shard1": {
            "state": "ACTIVE",
            "core_node3": {"state": "active", "leader" : true},
            "core_node5": {"state": "active"}
          },
          "shard2": {
            "state": "active",
            "core_node7": {"state": "active"},
            "core_node8": {"state": "active", "leader" : true}}
        }
      

      Here the size of the file is roughly one tenth of the other file. This leads to a dramatic reduction in the amount of data written/read to/from ZK.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              noble.paul Noble Paul
            • Votes:
              1 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated: