更新时间:2023-06-25 GMT+08:00

治理微服务

微服务部署完后,您可以根据微服务的运行情况进行微服务的治理。

前提条件

  • 您可以先在“服务目录 > 微服务列表”中创建微服务,启动微服务后,根据yaml文件的配置,会在对应的服务下注册服务实例。
  • 如果没有事先创建微服务或者微服务已删除,在注册服务实例时会自动创建微服务。
  • 微服务在创建以后,需要注册服务实例后才能进行对应操作。

治理策略说明

支持负载均衡、限流、容错、降级、熔断和错误注入等策略的配置,具体说明见下表。

名称

说明

负载均衡

当出现访问量和流量较大,一台服务器无法负载的情况下,可以通过设置负载均衡的方式将流量分发到多个服务器均衡处理,从而优化响应时长,防止服务器过载。

可以通过新增规则配置负载均衡策略,设置参数支持轮询、随机、响应时间权值、会话粘滞等多种负载均衡策略。

限流

限流主要解决微服务之间的流量分配问题,保证微服务在自己的资源池运行,互不影响。

  • 当限流对象对当前服务实例的每秒请求数量超过设定的值,当前服务实例不再接受该对象的请求。
  • 常用的检测方法是请求超时、流量过大等。
  • 设置参数包括限流对象、QPS阈值等。

降级

降级是容错的一种特殊形式,当出现服务吞吐量巨大,资源不够用等情况,可使用降级机制关掉部分不重要、性能较差的服务,避免占用资源,以保证主体业务功能可正常使用。

容错

容错是服务调用者访问服务实例,服务实例出现异常时的一种处理策略,出现异常后按照定义的策略进行重试或访问新的服务实例。

熔断

当发现由于某些原因导致服务出现了过载现象,为避免造成整个系统故障,可采用熔断来进行保护。

熔断在服务请求处理出现异常时产生作用。进入熔断状态后,hystrix会认为被请求的服务已经无法处理请求,在第一时间截断请求直接返回错误给调用者。

hystrix每隔一段时间会尝试访问后端服务,如果服务恢复正常,会退出熔断状态,恢复正常的请求访问。

错误注入

错误注入策略用于测试微服务的容错能力,可以让用户知道,当出现延迟或错误时,系统是否能够正常运行。

错误注入通过延迟、错误等方式,供用户测试微服务的容错能力。

黑白名单

基于公钥认证机制,微服务引擎提供了黑白名单功能,通过黑白名单,可以控制微服务允许其他哪些服务访问。

只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证

设置负载均衡

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“负载均衡”。
  6. 单击“新增”。先选择需要治理的微服务,再选择合理的负载均衡策略,请参考下表。

    策略名

    策略说明

    轮询

    支持按照服务实例的位置信息顺序路由。

    随机

    提供服务实例随机路由。

    响应时间权值

    提供最小活跃数(时延)的权重路由,支持业务处理慢的服务实例接收较少的请求,防止系统停止响应。这种负载均衡策略适合请求量少且稳定的应用。

    会话粘滞

    会话粘滞是负载均衡器上的一种机制,在设定的会话保持时间内,会保证同一用户相关联的访问请求会被分配到同一实例上。

    • 会话保持时间:会话保持的限制时间,0-86400,单位为秒。
    • 失败次数阈值:访问失败次数,0-10。当微服务访问下属实例的失败次数或会话保持时间超过设定的值时,微服务不再访问该实例。

  7. 单击“确定”保存配置。

设置限流

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“限流”。
  6. 单击“新增”,限流配置项下表所示。

    配置项

    说明

    范围

    限流对象

    访问该微服务的其他微服务。

    “限流对象”后的下拉列表可直接选择。

    QPS

    每秒的请求数。当限流对象对当前服务实例的每秒请求数量超过设定的值,当前服务实例不再接受该对象的请求。

    0-99999的整数。

    对于微服务拥有多个实例的情况,如果设置单个实例的流控是2700QPS,该微服务有3个实例,总的QPS就是最大8100,QPS超过8100才会触发限流。

  7. 单击“确定”保存配置。

设置降级

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“降级”。
  6. 单击“新增”。选择合理的策略,降级策略配置项如下表所示。

    配置项

    配置项说明

    降级对象

    选择需要降级的微服务与降级方法。

    降级策略

    • 开启:开启降级。
    • 关闭:关闭降级。

  7. 单击“确定”,保存配置。

设置容错

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“容错”。
  6. 单击“新增”。选择合理的策略,容错策略配置项如下表所示。

    配置项

    配置项说明

    容错对象

    该应用依赖的应用或方法,下拉菜单可直接选择。

    是否开启容错

    开启:向容错对象发起请求时发生错误的处理策略,开启后,会根据选择的处理策略处理请求。

    关闭:关闭容错策略,即使请求失败也会等到超时后,再返回失败结果。

    容错策略

    说明:

    当“是否开启容错”配置项设置为“开启”时配置。

    • Failover

      在不同服务器上重新尝试建立连接。

    • Failfast

      不再重新尝试建立连接,即请求失败时会立即返回失败结果。

    • Failback

      在同一个服务器上重新尝试建立连接。

    • custom
      • 尝试同一个服务器次数:尝试与同一个服务器重新建立连接的次数。
      • 尝试新的服务器次数:尝试与新的服务器建立连接的次数。

  7. 单击“确定”,保存配置。

设置熔断

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“熔断”。
  6. 单击“新增”。选择合理的策略,熔断策略配置项如下表所示。

    配置项

    配置项说明

    熔断对象

    该应用调用的服务或方法,下拉菜单可直接选择。

    触发条件

    • 手动熔断

      即刻触发熔断,且不再调用。

    • 取消熔断

      将已经熔断的微服务实例取消熔断,继续调用。

    • 自动熔断
      • 熔断时间窗:熔断的持续时间,该时间窗内不再响应请求。
      • 失败率:触发条件,窗口请求的失败率。
      • 窗口请求数:触发条件,窗口收到的请求数。“失败率”和“窗口请求数”的条件需同时满足才会触发熔断。

  7. 单击“确定”,保存配置。

设置错误注入

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“错误注入”。
  6. 单击“新增”。选择合理的策略,错误注入策略配置项如下表所示。

    配置项

    配置项说明

    注入对象

    需要测试容错能力的微服务,可以具体到微服务的方法。

    类型

    测试微服务的容错能力类型:

    • 延迟
    • 错误

    协议

    访问微服务出现延时或错误的协议:

    • Rest
    • Highway

    延迟时间

    访问微服务出现延时的时长,“类型”选择为“延迟”时才需要配置。

    http错误码

    访问微服务出现错误的HTTP错误码,“类型”选择为“错误”时才需要配置。该错误码为HTTP标准的错误码。

    触发概率

    访问微服务出现延时或错误的概率。

  7. 单击“确定”,保存配置。

设置黑白名单

基于公钥认证机制,微服务引擎提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。

只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证

  1. 登录ServiceStage控制台,选择“基础设施 > 微服务引擎(CSE)”。
  2. 单击微服务引擎的“查看控制台”。
  3. 选择“服务治理”。
  4. 单击需要治理的微服务。
  5. 单击“黑白名单”。
  6. 单击“新增”,为应用添加黑白名单,黑白名单配置项如下表所示。

    配置项

    配置项说明

    类型

    • 黑名单:表示根据匹配规则匹配到的微服务都不允许访问当前服务。
    • 白名单:表示根据匹配规则匹配到的微服务允许访问当前服务。

    匹配规则

    使用正则表达式表示。

    例如“匹配规则”设置为data*,指在黑名单下匹配到的名称以data开头的服务不允许访问当前服务,或者在白名单下匹配到的名称以data开头的服务允许访问当前服务。

  7. 单击“确定”,保存配置。

公钥认证

公钥认证是微服务引擎提供的一种简单高效的微服务之间认证机制,它的安全性建立在微服务与服务中心之间的交互是可信的基础之上,即微服务和服务中心之间必须先启用认证机制。它的基本流程如下:

  1. 微服务启动的时候,生成密钥对,并将公钥注册到服务中心。
  2. 消费者访问提供者之前,使用自己的私钥对消息进行签名。
  3. 提供者从服务中心获取消费者公钥,对签名的消息进行校验。

启用公钥认证步骤如下:

  1. 公钥认证需要在消费者、提供者都启用。
    servicecomb:
      handler:
        chain:
          Consumer:
            default: auth-consumer
          Provider:
            default: auth-provider
  2. 在pom.xml中增加依赖:
    <dependency> 
        <groupId>org.apache.servicecomb</groupId> 
        <artifactId>handler-publickey-auth</artifactId> 
      </dependency>