All Products
Search
Document Center

Alibaba Cloud Service Mesh:Control distributed system traffic with the ASM traffic scheduling suite

Last Updated:Jun 04, 2026

The ASM traffic scheduling suite provides a non-intrusive, scalable architecture for centralized traffic management in distributed systems, enhancing the reliability of cloud-native applications while reducing costs and improving resource utilization.

What is the ASM traffic scheduling suite?

The ASM traffic scheduling suite is a centralized traffic scheduling architecture built on ASM. It manages and schedules requests across cloud-native distributed applications.

The suite consists of an Agent and a controller. The controller publishes preset traffic scheduling policies to the Agent. When a sidecar proxy forwards inbound or outbound requests of a pod, the Agent applies scheduling decisions to throttle or queue the requests.

image

Enable the ASM traffic scheduling suite

Note

ACK Serverless and Container Compute Service (ACS) do not support the ASM traffic scheduling suite.

To use the ASM traffic scheduling suite, make sure that the version of your ASM instance is 1.21.6.82 or later and that a Kubernetes cluster is added to your ASM instance. For more information, see Add a cluster to an ASM instance.

To enable the ASM traffic scheduling suite:

ASM console

  1. Log on to the ASM console. In the left-side navigation pane, choose Service Mesh > Mesh Management.

  2. Click the name of the ASM instance. In the left-side navigation pane, choose Traffic Management Center > Traffic Protection and Scheduling.

  3. Select the Advanced Traffic Scheduling tab and click Enable Traffic Scheduling.

  4. Configure the following parameters, then click OK.

    Configuration item

    Description

    Storage Class

    Valid storage classes for data exchange between scheduling agents and metadata.

    Configure Resource

    Resource configuration for Agent pods.

    Limit: 2 CPUs, 1024 MiB by default.

    Request: 0.5 CPUs, 512 MiB by default.

    Timeout Period

    When the system is overloaded, requests are queued. Requests queued beyond the specified period are discarded.

    Effective Scope

    Defaults to global scope. Supported scopes:

    • Gateway scope: Applies to resources associated with a specific gateway.

    • Workload scope: Applies to a specific workload.

    • Namespace scope: Applies to a specific namespace.

kubectl

  1. Use kubectl to connect to the ASM instance. For more information, see Access Istio resources with kubectl.

  2. Run the following command:

    kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'

Supported traffic scheduling policies

The ASM traffic scheduling suite supports the following policies.

Policy

Description

References

Traffic rate limiting

Uses the RateLimitingPolicy CRD to provide global throttling for specified services. Compared with open-source Istio throttling, this CRD supports user-specific throttling, burst traffic windows, and custom token consumption rates.

Use RateLimitingPolicy to implement user-specific throttling

Priority-based request scheduling based on the average latency

Compares real-time latency against historical averages to detect overload. When overloaded, uses token-bucket and priority-based mechanisms to process high-priority requests first.

Use AverageLatencySchedulingPolicy to implement priority-based request scheduling

Concurrency control

Tracks in-flight requests (sent but not yet responded to). When the count exceeds the specified limit, subsequent requests are rejected.

Use ConcurrencyLimitingPolicy to implement request concurrency limiting

Priority-based request scheduling under controlled concurrency

Detects overload based on concurrent request limits. When exceeded, subsequent requests are queued and scheduled by priority.

Use ConcurrencySchedulingPolicy to implement priority-based request scheduling under controlled concurrency

Progressive service release policy

Configures a progressive release policy that gradually increases traffic to a newly released service, ensuring smooth rollouts.

Use LoadRampingPolicy to implement progressive service release

Priority-based request scheduling with a specified request quota

When requests per unit time exceed the specified quota, subsequent requests are queued, with high-priority requests processed first.

Use QuotaSchedulingPolicy to implement request call quota management

Collect monitoring metrics

If your Kubernetes clusters use Managed Service for Prometheus or self-built Prometheus, configure the following to collect ASM traffic scheduling agent metrics. This helps you to verify whether a specific policy in ASM traffic scheduling suite takes effect.

Managed service for Prometheus

Run the following code to add a custom collection rule. For more information, see Custom Prometheus scrape configurations.

scrape_configs:
- job_name: asm-adaptive-scheduler-stats
  scrape_interval: 30s
  scrape_timeout: 30s
  metrics_path: /metrics
  scheme: http
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels:
    - __meta_kubernetes_namespace
    action: keep
    regex: istio-system
  - source_labels:
    - __meta_kubernetes_pod_container_port_name
    action: keep
    regex: server
  - source_labels:
    - __meta_kubernetes_pod_container_name
    action: keep
    regex: aperture-agent

Self-built Prometheus instances

Add the JSON file of Managed service for Prometheus to the scrape_configs node of your Prometheus instance, as described in the Prometheus configuration.