@Override
    public String name() {
        return RANGE_ASSIGNOR_NAME;
    }
A range assignor assigns contiguous partition ranges to members of a consumer group such that:
<ol>
  <li>Each subscribed member receives at least one partition from that topic.</li>
  <li>Each member receives the same partition number from every subscribed topic when co-partitioning is possible.</li>
</ol>

Co-partitioning is possible when the below conditions are satisfied:
<ol>
  <li>All the members are subscribed to the same set of topics.</li>
  <li>All the topics have the same number of partitions.</li>
</ol>

Co-partitioning is useful in performing joins on data streams.

<p>For example, suppose there are two members M0 and M1, two topics T1 and T2, and each topic has 3 partitions.

<p>The co-partitioned assignment will be:
<ul>
<li<code>    M0: [T1P0, T1P1, T2P0, T2P1]    </code></li>
<li><code>   M1: [T1P2, T2P2]                </code></li>
</ul>

Since the introduction of static membership, we could leverage <code>member.instance.id</code> to make the
assignment behavior more sticky.
For the above example, after one rolling bounce, the group coordinator will attempt to assign new member Ids towards
members, for example if <code>M0</code> -&gt; <code>M3</code> <code>M1</code> -&gt; <code>M2</code>.

<p>The assignment could be completely shuffled to:
<ul>
<li><code>   M3 (was M0): [T1P2, T2P2]               (before it was [T1P0, T1P1, T2P0, T2P1])  </code>
<li><code>   M2 (was M1): [T1P0, T1P1, T2P0, T2P1]   (before it was [T1P2, T2P2])  </code>
</ul>

The assignment change was caused by the change of <code>member.id</code> relative order, and
can be avoided by setting the instance.id.
Members will have individual instance Ids <code>I0</code>, <code>I1</code>. As long as
1. Number of members remain the same.
2. Topic metadata doesn't change.
3. Subscription pattern doesn't change for any member.

<p>The assignment will always be:
<ul>
<li><code>   I0: [T1P0, T1P1, T2P0, T2P1]    </code>
<li><code>   I1: [T1P2, T2P2]                </code>
</ul>
<p>
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/RangeAssignor.java