
# 配置客户端流控策略
客户端流控策略通常是指在客户端应用中实施的流量控制机制，目的是为了管理客户端与服务器之间的数据传输速率，防止过量的请求对服务器造成压力，同时也保证客户端应用的流畅性，提升用户体验。您可以使用系统预置的流控策略，还可以根据自己的需求自定义创建。
本章节为您介绍如何自定义创建及使用客户端流控策略。
#### 约束与限制
客户端流控策略为Astro Pro企业版功能，如果您需要使用此功能，请[升级Astro Pro实例版本](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0167.html)。
#### 创建客户端流控策略
1. 参考[登录AstroPro界面](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0004.html)中操作，登录AstroPro界面。
2. 在左侧导航栏中，选择"后端开发平台 \> 资产库 \> 客户端流控策略"。
3. 在顶部项目下拉框中选择对应项目或工作空间，即设置流控策略的作用范围。 
   - 选择对应项目，则流控策略的作用为指定项目，选择工作空间，则流控策略的作用为工作空间内所有项目。
   
   - 非工作空间管理员仅可创建对应项目的流控策略，具体权限约束可参考[了解AstroPro中角色](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0065.html)。
   
   
   
   
4. 在客户端流控策略页面，单击"新建客户端流控策略"。
5. 参考[表1]配置客户端流控策略的规则。
   
    表1配置流控策略 
   | 参数      | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | 客户端流控策略 | 必选参数，由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。例如，Custom。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 规则名称    | 可选参数，仅当勾选了重试、熔断或超时选项后为必填。 规则名称由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 重试      | 可选参数。 当一个服务调用失败时，重试机制会自动尝试再次调用该服务，以期能够成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 熔断      | 可选参数。 当服务调用连续失败达到一定阈值时，熔断器会"打开"，阻止进一步的调用，从而保护系统不会因为不断尝试调用失败的服务而资源耗尽。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 超时      | 可选参数。 为了防止系统无限期地等待某个操作完成，超时机制会在一定时间后终止等待，返回错误。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 缓存策略    | 可选参数。在拉框中选择缓存策略。 - CACHE_FIRST：当一个请求到来时，系统首先尝试获取缓存。如果缓存存在，判断当前缓存的存在时间是否小于一定时间，小于则直接返回缓存中的数据，否则执行请求下游服务的操作，请求成功，更新缓存，返回结果。请求失败，直接返回获取缓存结果。如果缓存不存在，执行请求下游服务的操作，请求成功，更新缓存，返回结果，请求失败，抛出异常。  - SERVICE_FIRST：当一个请求到来时，系统直接执行请求下游服务的操作，请求成功，更新缓存，返回结果。请求失败，尝试获取缓存，如果缓存存在，则返回缓存结果，如果缓存不存在，抛出异常。                                                        |
   | 缓存管理名称  | 在"缓存策略"选择对应策略后，显示该字段，且为必填项。 输入缓存管理名称。 缓存管理名称由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                               |
   | 缓存组件类型  | 在"缓存策略"选择对应策略后，显示该字段，且为必填项。 下拉框中选择缓存组件类型。 - CAFFEINE：使用CAFFEINE作为缓存的组件（本地缓存）。  - REDIS：使用Redis作为缓存的组件（分布式缓存）。 **注意：选择使用REDIS类型的前提条件是，服务已开启REDIS外部缓存。** 图1开启REDIS外部缓存 ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002160969797.png)    |
   | 描述      | 可选参数，输入流控策略的补充描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
   
6. 单击"确定"，完成客户端缓存策略创建。 
   创建成功后，在[服务依赖](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0019.html)中添加流控策略时，您可选择自定义的客户端流控策略。
   图2选择自定义流控策略   
   ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002065413057.png)
   
   
 
#### 使用客户端流控策略
使用客户端流控策略时，需要满足以下三个前置条件：
- 目录结构必须为DDD。
- 服务要依赖于其他服务。
- 依赖类型为METHOD。
例如： 有两个服务分别为A和B， A服务开启了客户端功能（目录结构不做要求），B服务（目录结构为DDD）依赖了A服务，依赖类型为METHOD，此时可以在该依赖上添加已创建的[客户端流控策略](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0158.html)。
1. 参考[登录AstroPro界面](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0004.html)中操作，登录AstroPro界面。
2. 在左侧导航栏中，选择"后端开发平台 \> 服务管理 \> 服务"。
3. 选择服务B，单击操作列的编辑，进入服务编辑页面。
4. 单击"服务依赖"，添加服务A为服务依赖。
5. 选择"客户端依赖类型"为"METHOD"。
6. 单击已添加服务依赖后的"编辑"。
7. 选择需配置流控策略的对象方法，并为对象方法添加对应的流控策略。例如自定义流控策略Custom。 
   图3配置客户端流控策略   
   ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002033324954.png)
   
   
8. 单击"保存"，完成客户端流控策略配置。
9. 单击"创建"，[生成服务代码](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0020.html)，代码中的配置文件将添加客户端流控策略配置信息。
   
   图4配置文件   
   ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002069507705.png)
   图5流控策略的注解   
   ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002058087268.png)
   
   
 
#### 编辑客户端流控策略
1. 参考[登录AstroPro界面](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0004.html)中操作，登录AstroPro界面。
2. 在左侧导航栏中，选择"后端开发平台 \> 资产库 \> 客户端流控策略"。
3. 在客户端流控策略列表中选中待操作的策略，单击"操作"列的"编辑"。
4. 参考[表1]配置客户端流控策略的规则。
   
   表2配置流控策略 
   | 参数      | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|
   | 客户端流控策略 | 必选参数，由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。例如，Custom。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 规则名称    | 可选参数，仅当勾选了重试、熔断或超时选项后为必填。 规则名称由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 重试      | 可选参数。 当一个服务调用失败时，重试机制会自动尝试再次调用该服务，以期能够成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 熔断      | 可选参数。 当服务调用连续失败达到一定阈值时，熔断器会"打开"，阻止进一步的调用，从而保护系统不会因为不断尝试调用失败的服务而资源耗尽。                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 超时      | 可选参数。 为了防止系统无限期地等待某个操作完成，超时机制会在一定时间后终止等待，返回错误。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 缓存策略    | 可选参数。在拉框中选择缓存策略。 - CACHE_FIRST：当一个请求到来时，系统首先尝试获取缓存。如果缓存存在，判断当前缓存的存在时间是否小于一定时间，小于则直接返回缓存中的数据，否则执行请求下游服务的操作，请求成功，更新缓存，返回结果。请求失败，直接返回获取缓存结果。如果缓存不存在，执行请求下游服务的操作，请求成功，更新缓存，返回结果，请求失败，抛出异常。  - SERVICE_FIRST：当一个请求到来时，系统直接执行请求下游服务的操作，请求成功，更新缓存，返回结果。请求失败，尝试获取缓存，如果缓存存在，则返回缓存结果，如果缓存不存在，抛出异常。                                                       |
   | 缓存管理名称  | 在"缓存策略"选择对应策略后，显示该字段，且为必填项。 输入缓存管理名称。 缓存管理名称由英文字母和数字及连字符（-）组成，且只能以英文字母开头，采用驼峰格式。 长度范围为2\~63位。                                                                                                                                                                                                                                                                                                                                                             |
   | 缓存组件类型  | 在"缓存策略"选择对应策略后，显示该字段，且为必填项。 下拉框中选择缓存组件类型。 - CAFFEINE：使用CAFFEINE作为缓存的组件（本地缓存）。  - REDIS：使用Redis作为缓存的组件（分布式缓存）。 **注意：选择使用REDIS类型的前提条件是，服务已开启REDIS外部缓存。** 图6开启REDIS外部缓存 ![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002125610104.png)    |
   | 描述      | 可选参数，输入流控策略的补充描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
5. 单击"确定"，完成客户端流控策略编辑。
 
#### 单个删除客户端流控策略
1. 参考[登录AstroPro界面](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0004.html)中操作，登录AstroPro界面。
2. 在左侧导航栏中，选择"后端开发平台 \> 资产库 \> 客户端流控策略"。
3. 在客户端流控策略列表中选中待删除的策略，单击"操作"列的"删除"。
4. 在弹框中单击"确认"，完成客户端流控策略单个删除。 
   删除后无法恢复，请谨慎操作。
   
   
 
#### 批量删除客户端流控策略
1. 参考[登录AstroPro界面](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0004.html)中操作，登录AstroPro界面。
2. 在左侧导航栏中，选择"后端开发平台 \> 资产库 \> 客户端流控策略"。
3. 在客户端流控策略列表中勾选待删除的策略，单击"批量删除"。
4. 在弹框中单击"确认"，完成客户端流控策略批量删除。 
   删除后无法恢复，请谨慎操作。
   
   
 
