Todos los productos
Search
Centro de documentos

Alibaba Cloud SDK:Mecanismo de retroceso avanzado basado en la política de limitación

Última actualización: Sep 19, 2026

El mecanismo de retroceso avanzado utiliza la información de limitación del servidor para calcular los intervalos de reintento. También gestiona las tasas de solicitudes de API durante los ciclos de limitación.

Nota

Se agregaron el mecanismo de reintento y la política de limitación. Para obtener más información, consulte Retry mechanism.

La biblioteca principal aliyun-java-sdk-core V4.6.0 y versiones posteriores admite el mecanismo de reintento. Además, proporciona un mecanismo de retroceso avanzado basado en la política de limitación. Para obtener más información, consulte Retry mechanism. Agregue a continuación la dependencia de Maven:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.6.0</version>
</dependency>
Importante
  1. No todas las operaciones de API admiten el mecanismo de retroceso avanzado. Para comprobar si una operación de API es compatible con este mecanismo, consulte la sección Quotas Info en la documentación de API del servicio correspondiente. Por ejemplo, consulte la sección Quotas Info en el tema DescribeHpcClusters de Elastic Compute Service (ECS).

  2. Este mecanismo se puede habilitar en el SDK sin importar si las operaciones de API lo admiten o no. Si las operaciones de API no son compatibles, la política de retroceso y la política de desactivación de solicitudes no surten efecto. Sin embargo, si las operaciones de API comienzan a admitirlo más adelante, la política de limitación y la política de desactivación de solicitudes podrían activarse de forma inesperada. Esto dificulta la resolución de problemas.

  3. Después de habilitar este mecanismo, se recomienda seguir supervisando las llamadas de API con errores. Depender únicamente del mecanismo de retroceso puede complicar la resolución de problemas.

  4. The prerequisite of the following examples is that the API operations support the backoff mechanism based on the throttling policy.

Descripción general

El mecanismo de retroceso avanzado incluye dos políticas:

  • Política de retroceso

  • Política de desactivación de solicitudes de API durante la limitación

Los intervalos de reintento se calculan mediante el algoritmo de retroceso exponencial EqualJitter. Para obtener más información, consulte Retry mechanism. El mecanismo de retroceso avanzado ajusta aún más estos intervalos con base en la información de limitación del servidor.

Habilitar la política de retroceso basada en la política de limitación

De forma predeterminada, la política de retroceso basada en la limitación está deshabilitada. Puede habilitarla con uno de los métodos a continuación:

  1. Configure una política de reintento.

RetryPolicy retryPolicy = RetryPolicy.builder()
                .maxNumberOfRetries(3) // The maximum number of retries.
                .maxDelayTimeMillis(20 * 1000) // The maximum retry interval. Unit: milliseconds. If the interval is exceeded, no retries are performed.
                //.retryConditions(retryConditions) // The policy that is used to trigger retries.
                .enableAliyunThrottlingControl(true) // Enable the backoff policy based on the throttling policy. 
                //.throttlingConditions(throttlingConditions) // The policy that is used to restrict retries.
                .build();

request.setSysRetryPolicy(retryPolicy);
  1. Utilice la política de reintento predeterminada.

// The default policy. The request parameter is enableAliyunThrottlingControl. The value true specifies that the backoff policy based on the throttling policy is enabled. The value false specifies that the backoff policy based on the throttling policy is disabled.
RetryPolicy retryPolicy = RetryPolicy.defaultRetryPolicy( 
true 
);

request.setSysRetryPolicy(retryPolicy);

Beneficios de habilitar la política de retroceso basada en la política de limitación

  1. Reduce los reintentos innecesarios y disminuye el consumo de recursos del sistema.

  2. Calcula intervalos de retroceso más precisos, lo que mejora las tasas de éxito de los reintentos.

Configuración avanzada

Política de retroceso: cálculo del tiempo de retroceso según la política de limitación

Cuando se habilita la política de retroceso basada en la limitación, el tiempo de retroceso se calcula de la siguiente manera:

  1. Si no se activa ninguna limitación, se usa EqualJitter para calcular un intervalo de reintento.

  2. Si se activa una limitación, el intervalo de reintento corresponde al valor mayor entre el tiempo restante del ciclo de limitación actual y el resultado de EqualJitter. Si este intervalo supera el intervalo máximo de reintento, se genera una excepción. Además, el tiempo restante del ciclo de limitación se almacena en caché para que lo utilice la política de desactivación de solicitudes.

Política de desactivación de solicitudes de API durante la limitación

Cuando la política de retroceso basada en la limitación está habilitada y se activa una limitación, el servidor devuelve información sobre la cuota restante en el encabezado de respuesta. Esta información incluye el número de llamadas de API restantes y el tiempo restante del ciclo de limitación actual, reportados en las dimensiones "User" y "API + User". Si las llamadas de API están limitadas, el recuento de llamadas restantes es 0.

Nota

Claves que corresponden a las dos dimensiones en el encabezado:

  • Dimensión "API + User": X-RateLimit-User-API

  • Dimensión "User": X-RateLimit-User

Ejemplo de la dimensión "API + User":

"X-RateLimit-User-API" : "Remain:1,Limit:2,Time:1000,TimeLeft:122,Reset:1637835220000"

Remain: el número de llamadas de API restantes. El valor del parámetro Remain es de tipo INT. Si el valor es -1, el número de llamadas de API restantes es suficiente. Si las llamadas de API están limitadas, se devuelve el valor 0.

Limit: the maximum throttling threshold. The value is of the INT type.
Time: the time span of throttling. The value is of the LONG type. Unit: milliseconds.
TimeLeft: the remaining time of the current throttling cycle. The value is of the LONG type. Unit: milliseconds.
Reset: the start time of the next throttling cycle. The value is of the LONG type and is a timestamp in milliseconds

.

El SDK rastrea el tiempo restante del ciclo de limitación actual y bloquea las nuevas llamadas o los reintentos durante ese periodo. Si el tiempo restante supera el intervalo máximo de reintento, se genera un error. De lo contrario, el sistema espera hasta que termine el ciclo de limitación antes de iniciar o reintentar la llamada.

Habilitar la depuración de limitaciones

Para recuperar la información de cuota de limitación sin esperar a que esta se active, establezca X-RateLimit-Mode como debug en el encabezado de la solicitud.

request.putHeadParameter("X-RateLimit-Mode", "debug");

Luego, la información de cuota restante se incluye en el encabezado de respuesta de cada llamada de API.