In-process rate limiter
Rate limiterin-process-limiter
Library rate limiter holding state inside the application process.
- Provider
- default
- Kind
- Rate limiter
- Category
- Edge
- Official docs
- https://en.wikipedia.org/wiki/Token_bucket
| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| algorithm | enum | token-bucket | leaky-bucket | sliding-window | fixed-window | adaptive | no | token-bucket | inherited |
| atomicOps | boolean | — | no | true | ▸ true |
| distributed | boolean | — | no | false | ▸ false |
| failMode | enum | open | closed | no | open | inherited |
| managed | boolean | — | no | false | inherited |
| perReplicaQuotaDivision | boolean | — | no | false | inherited |
| placement | enum | edge | gateway | sidecar | in-process | no | gateway | ▸ in-process |
| scope | enum | global | user | ip | api-key | concurrency | no | user | inherited |
Every rule whose selector covers this component's kind or its category. Whether a rule fires depends on the design: its properties, its edges and its groups.
No rule reads this kind yet. That is a gap, not a guarantee.
nodes:
- { id: "in-process-limiter", component: "in-process-limiter" }# yaml-language-server: $schema=../../schema/component.schema.json # In-process rate limiter (library): per-replica state, so quotas are not shared across instances. schemaVersion: "1" type: "component" id: "in-process-limiter" kind: "rate-limiter" provider: "default" docs: "https://en.wikipedia.org/wiki/Token_bucket" defaults: placement: "in-process" distributed: false atomicOps: true properties: perReplicaQuotaDivision: type: "boolean" default: false