fluxninja / aperture

Rate limiting, caching, and request prioritization for modern workloads
https://docs.fluxninja.com
Apache License 2.0
622 stars 24 forks source link

Concurrency limiter and scheduler #3066

Closed tanveergill closed 8 months ago

tanveergill commented 9 months ago

Description of change

Checklist

Summary by CodeRabbit

coderabbitai[bot] commented 9 months ago

Walkthrough

The updates primarily introduce new features and modifications related to flow control in a distributed system. This includes the implementation of concurrency limiters and schedulers, enhancements to the request handling process, and the introduction of new RPCs. Additionally, there are updates to configuration files, policy definitions, and dashboard components to support these features, as well as changes to token counter and rate limiter functionalities to improve system performance and observability.

Changes

File Path Change Summary
api/aperture/flowcontrol/check/v1/..., api/aperture/flowcontrol/checkhttp/v1/... Added FlowEnd RPC, expect_end fields, ConcurrencyLimiterInfo, ConcurrencySchedulerInfo, and related messages. Included expect_end and check_response fields in CheckHTTPRequest.
api/aperture/policy/language/v1/..., api/aperture/policy/private/v1/..., api/aperture/policy/sync/v1/... Updated and added new concurrency-related messages and structures.
blueprints/concurrency-limiting/base/..., blueprints/concurrency-scheduling/base/... Provided new documentation, configurations, and policy definitions for concurrency limiting and scheduling.
dashboards/grafana/dashboards/summary/... Added new Grafana panels for concurrency limiters and schedulers.
pkg/dmap-funcs/..., pkg/metrics/..., pkg/otelcollector/metricsprocessor/..., pkg/policies/flowcontrol/actuators/... Introduced and updated packages for token counters, metrics, processors, and actuators.
docs/content/reference/blueprints/concurrency-scheduling/... Created documentation for concurrency scheduling policies.

šŸ‡āœØ In the land of code where the data streams flow,
New changes have come, with a bright, shiny glow.
Concurrency's tamed, with limiters so wise,
A rabbit's delight, under digital skies.
šŸŒŸšŸŒ™


Tips ### Chat with CodeRabbit Bot (`@coderabbitai`) - You can directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit ``.` - You can tag CodeRabbit on specific lines of code or entire files in the PR by tagging `@coderabbitai` in a comment. Examples: - `@coderabbitai generate unit tests for this file` - `@coderabbitai modularize this function` - You can tag `@coderabbitai` in a PR comment and ask questions about the PR and the codebase. Use quoted replies to pass the context for follow-up questions. Examples: - `@coderabbitai gather interesting statistics about this repository and render them in a table.` - `@coderabbitai show all the `console.log` statements in this repository.` - `@coderabbitai generate unit tests for the `src/utils.ts` file.` ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - The JSON schema for the configuration file is available [here](https://coderabbit.ai/integrations/coderabbit-overrides.v2.json). - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json` ### CodeRabbit Discord Community Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback.