Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rate Limit With Istio at iFood

Rate Limit With Istio at iFood

Avatar for Jhonn Frazão

Jhonn Frazão

August 22, 2024

More Decks by Jhonn Frazão

Other Decks in Technology

Transcript

  1. Rate Limit With Istio at The information in this document

    is confidential to the person to whom it is addressed and should not be disclosed to any other person. It may not be reproduced in whole, or in part, nor may any of the information contained therein be disclosed without the prior consent of the directors of iFood. It has been used as support material for an oral presentation and, therefore, it does not represent a complete record of the topics presented in the mentioned presentation.
  2. Introduction I didn't come to talk about: - All mesh

    features on iFood - The iFood's mesh journey - All the problems rate limit solved at iFood But of course we can talk later about it.
  3. iFood numbers 67% Microservices with mesh 73% Traffic on mesh

    • Orders per month: ~100m • Requests per minute: ~28m(only mesh) • Number of microservices: ~4k • Number of k8s clusters: 28 (prod)
  4. Global vs Local Global quota "Pod" quota "Pod" quota "Pod"

    quota 300 RPS 100 RPS 100 RPS 100 RPS
  5. Global vs Local Global quota "Pod" quota "Pod" quota "Pod"

    quota 300 RPS 100 RPS 100 RPS 100 RPS
  6. Global vs Local Global quota "Pod" quota "Pod" quota "Pod"

    quota 300 RPS 100 RPS 100 RPS 100 RPS
  7. APP Redis sidecar/gw EnvoyProxy Ratelimiter EnvoyProxy Ratelimiter Envoy Ratelimit Request

    Ratelimit KV Check for Source limit Limit Response Conditional Response 1 2 3 4 5 HTTP: 429/XXX Istio ratelimiter Config Map
  8. APP Redis sidecar/gw EnvoyProxy Ratelimiter EnvoyProxy Ratelimiter Envoy Ratelimit Request

    Ratelimit KV Check for Source limit Limit Response Conditional Response 1 2 3 4 5 HTTP: 429/XXX Envoy ratelimiter Config Map
  9. One case: Service with SLO of 250ms latency - Has

    a lot of different clients - Must to respond less than 250ms - Receive a lot of requests from clients - There's several dependencies bellow it