Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-18398

Use ReplicaService instead of Raft for serving Meta Storage reads

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Meta Storage currently uses Raft to perform read operations. This brings us the ability to read the latest data from the leader (a good thing) but on the other hand Raft reads are single-threaded and linearizable (which Meta Storage reads do not require). In order to make reads concurrent, it is proposed to switch to the Replica approach (currently used to serve partition data reads).

      TBD: Design of this ticket is blocked by the Placement Driver work being done in IGNITE-18524. Here's the vague description of how reads can be done (which should probably change after the Driver is implemented):

      1. A node issues a read request to the Meta Storage;
      2. Meta Storage Manager goes to the Placement Driver to obtain the Primary Replica Consistent ID;
      3. Meta Storage Manager issues a network request to the obtained ID;
      4. If the receiver node is still the Primary Replica - the request is served using the local storage;
      5. If the Primary Replica has changed - the receiver node re-routes the request to it.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              apolovtcev Aleksandr Polovtsev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: