Uploaded image for project: 'Ratis'
  1. Ratis
  2. RATIS-1864

Support leader lease

    XMLWordPrintableJSON

Details

    Description

      Proposal: Introducing Leader Lease Read into Ratis

      Objective:

      The primary objective of this proposal is to introduce the Leader Lease Read feature into Ratis, enhancing the read capabilities and addressing the existing limitations in the current implementation.

      Current Implementation:

      At present, Ratis supports two read operations:

      1. Leader Bypass Read: This type of read operation offers improved latency and throughput. However, it is constrained to the leader and may produce inconsistent results.
      2. Server Linearizable Read (ReadIndex): This type allows clients to read from any server, ensuring linearizability but suffers from suboptimal latency. Experiments from Alluxio liuyaolong  shows a 20-30% dropdown in throughput when switch to ReadIndex from bypass read. 

      Reasons for the Proposed Feature:

      To address the limitations, I propose to incorporate the Leader Lease Read type into Ratis.

      This feature has already been validated by other communities, such as Sofa-Jraft, where it resulted in a remarkable 15% improvement in throughput performance.

      Additionally, some of our downstream dependents, like IoTDB, demand low-latency read capabilities to efficiently serve time-series queries.

      References:

      1. Previous community discussions on Leader Lease in RATIS-1273 and relevant contributions on https://github.com/apache/ratis/pull/383
      2. Quantitative results showcasing the benefits of Leader Lease Read can be found at https://www.sofastack.tech/en/projects/sofa-jraft/jraft-user-guide/ in Section 5. Linearizable read.

      Attachments

        Issue Links

          Activity

            People

              William Song Song Ziyang
              William Song Song Ziyang
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 7h 40m
                  7h 40m