Welcome to FlowZap, the App to diagram with Speed, Clarity and Control.

Flux de travail de limiteur de débit

patterns

Ce flux de travail modélise la prévention du traitement de trop nombreuses requêtes.

Code FlowZap complet

Client { # Client
n1: circle label:"Start"
n2: rectangle label:"Send API request"
n3: rectangle label:"Receive response"
n4: circle label:"End"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> RateLimiter.n5.handle(top) [label="Request"]
n3.handle(right) -> n4.handle(left)
}
RateLimiter { # Rate Limiter
n5: rectangle label:"Extract client identifier"
n6: rectangle label:"Get current window count"
n7: diamond label:"Within rate limit?"
n8: rectangle label:"Increment request count"
n9: rectangle label:"Return 429 Too Many Requests"
n10: diamond label:"Algorithm type?"
n11: rectangle label:"Token bucket check"
n12: rectangle label:"Sliding window check"
n5.handle(right) -> n6.handle(left)
n6.handle(right) -> n10.handle(left)
n10.handle(right) -> n11.handle(left) [label="Token bucket"]
n10.handle(bottom) -> n12.handle(top) [label="Sliding window"]
n11.handle(right) -> n7.handle(left)
n12.handle(right) -> n7.handle(top)
n7.handle(right) -> n8.handle(left) [label="Yes"]
n7.handle(bottom) -> n9.handle(top) [label="No"]
n8.handle(bottom) -> Backend.n13.handle(top) [label="Allow"]
n9.handle(top) -> Client.n3.handle(bottom) [label="Rejected"]
}
Backend { # Backend Service
n13: rectangle label:"Process request"
n14: rectangle label:"Execute business logic"
n15: diamond label:"Request successful?"
n16: rectangle label:"Return 200 OK"
n17: rectangle label:"Return error response"
n18: rectangle label:"Add rate limit headers"
n13.handle(right) -> n14.handle(left)
n14.handle(right) -> n15.handle(left)
n15.handle(right) -> n16.handle(left) [label="Yes"]
n15.handle(bottom) -> n17.handle(top) [label="No"]
n16.handle(right) -> n18.handle(left)
n17.handle(right) -> n18.handle(top)
n18.handle(top) -> Client.n3.handle(bottom) [label="Response"]
}

Modèles associés