Here is a simple illustration of the concept of rate-determining step using a familiar example from reaction kinetics:  two 1st order reactions in series. As we saw in our discussion of heterogeneous reactions, where mass transfer and reaction occur in series, the RDS is the one that consumes the largest portion of the total concentration gradient, or the step that has the smallest rate constant. (At steady state, all steps in the sequence have the same rate, so there is a compensation between the rate coefficient and the driving force term.) Here the gradient is that of the reactant A (thick curve below), cA-0. Note how small it is at any given time (i.e., how quickly cA decays with time) when k1>>k2, and how large it is (i.e., how slowly cA decays with time) when k1<<k2.

k1 = 10;
k2 = 1;
cAoverCA0 = Exp[-k1 t];
cRoverCA0 = (k1/(k2 - k1))*(Exp[-k1 t] - 
              Exp[-k2 t]);
cSoverCA0 = 1 - cAoverCA0 - cRoverCA0;
Plot[{cAoverCA0, cRoverCA0, cSoverCA0}, {t, 0, 0.5}, 
        PlotStyle -> {Thickness[0.0150], Thickness[0.010], 
            Thickness[0.007]}, PlotRange -> {0, 1}];

Clear[k1, k2];
k1 = 1;
k2 = 10;
cAoverCA0 = Exp[-k1 t];
cRoverCA0 = (k1/(k2 - k1))*(Exp[-k1 t] - 
              Exp[-k2 t]);
cSoverCA0 = 1 - cAoverCA0 - cRoverCA0;
Plot[{cAoverCA0, cRoverCA0, cSoverCA0}, {t, 0, 0.5}, 
        PlotStyle -> {Thickness[0.0150], Thickness[0.010], 
            Thickness[0.007]}, PlotRange -> {0, 1}];

Using the concept of RDS makes reactor analysis (or design) much simpler than it otherwise would be, especially for complex heterogeneous reactions. Let's illustrate this using Langmuir-Hinshelwood kinetics. We shall determine the volume of a PFR first using the complete kinetic equation and then using its two limiting cases (first order and zero order).

Clear[k1C, k2C, k1Z, k2Z, k1F, k2F]
k1C = 5;   
k2C = 1;   
vZero = 1;   
cA0 = 100;   
rateC = k1C*cA/(1 + k2C*cA);
volumeC = vZero*
          Integrate[
            1/rateC, {cA, 10, 
              100}]//N

k1Z = 5;
k2Z = 1;
rateZ = k1Z/k2Z;
volumeZ = vZero*Integrate[1/rateZ, {cA, 10, 100}] // N

k1F = 5;
k2F = 1;
rateF = k1F*cA;
volumeF = vZero*Integrate[1/rateF, {cA, 10, 100}] // N

So when k2*cA>>1, as in this case, we can use the zero-order rate expression (product desorption being the RDS) instead of the complete L-H expression; the error in volume determination is less than 5%. Below is the illustration of the analogous situation: when k2*cA<<1 (reactant adsorption being the RDS), we can use the first-order expression instead of the complete L-H expression.

Clear[k1C, k2C, k1Z, k2Z, k1F, k2F]
k1C = 0.005;   
k2C = 0.001;   
vZero = 0.1;   
cA0 = 10;   
rateC = k1C*cA/(1 + k2C*cA);
volumeC = vZero*Integrate[1/rateC, {cA, 10, 100}] // N

k1Z = 0.005;
k2Z = 0.001;
rateZ = k1Z/k2Z;
volumeZ = vZero*Integrate[1/rateZ, {cA, 10, 100}] // N

k1F = 0.005;
k2F = 0.001;
rateF = k1F*cA;
volumeF = vZero*Integrate[1/rateF, {cA, 10, 100}] // N