服务治理 服务治理概述 如果使用微服务框架开发应用,在应用托管后启动应用,微服务会自动注册到对应的微服务引擎,您可以到微服务引擎控制台,参考治理微服务进行服务治理的相关操作。本章节描述的服务治理只适用于Java Chassis开发框架。 治理微服务 微服务部署完后,您可以根据微服务的运行情况进行微服务的治理。 前提条件 您可以先在“服务目录 > 微服务列表”中创建微服务,启动微服务后,根据yaml文件的配置,会在对应的服务下注册服务实例。 如果没有事先创建微服务或者微服务已删除,在注册服务实例时会自动创建微服务。 微服务在创建以后,需要注册服务实例后才能进行对应操作。 治理策略说明 支持负载均衡、限流、容错、降级、熔断和错误注入等策略的配置,具体说明见下表。 名称 说明 负载均衡 l应用场景 微服务一般会部署多个实例,负载均衡控制微服务消费者访问提供者多个实例的策略,以达到流量均衡的目的。策略包括轮询、随机、响应时间权值、会话粘滞等。 l前提条件 作用于微服务消费者,需要微服务应用集成负载均衡模块,启用loadbalance处理链。 配置示例如下: servicecomb: handler: chain: Consumer: default: loadbalance 在POM中添加如下依赖: org.apache.servicecomb handlerloadbalance ${project.version} 限流 l应用场景 用于控制访问微服务的请求量大小,避免由于流量冲击对系统造成破坏。 l前提条件 作用于微服务提供者,需要微服务应用集成流量控制模块,启用qpsflowcontrolprovider处理链。 配置示例如下: servicecomb: handler: chain: Provider: default: qpsflowcontrolprovider 在POM中添加如下依赖: org.apache.servicecomb handlerflowcontrolqps ${project.version} 降级 l应用场景 用于控制微服务调用其他微服务的时候,强制返回缺省值或者抛出异常,而不将请求发送到目标微服务,以达到屏蔽对目标微服务的访问和降低其压力的目的。 l前提条件 作用于微服务消费者,需要微服务应用集成降级模块,启用bizkeeperconsumer处理链。 配置示例如下: servicecomb: handler: chain: Consumer: default: bizkeeperconsumer 在POM中添加如下依赖: org.apache.servicecomb handlerbizkeeper ${project.version} 容错 l应用场景 当微服务消费者访问提供者出现异常,比如实例网络不通等,需要将请求转发到其他可用的实例。这里的容错,常被称为重试。 l前提条件 作用于微服务消费者,需要微服务应用集成容错模块,启用loadbalance处理链。 配置示例如下: servicecomb: handler: chain: Consumer: default: loadbalance 在POM中添加如下依赖: org.apache.servicecomb handlerloadbalance ${project.version} 熔断 l应用场景 当微服务消费者访问提供者出现异常,比如实例网络不通、请求超时等,并且异常积累到一定的程度,需要停止访问提供者,返回一个异常或者缺省值,防止雪崩效应。 熔断提供了手工熔断和自动熔断两种策略。手工熔断会设置熔断状态,强制返回;自动熔断需要结合错误率等判断是否熔断。 l前提条件 作用于微服务消费者,需要微服务应用集成熔断模块,启用bizkeeperconsumer处理链。 配置示例如下: servicecomb: handler: chain: Consumer: default: bizkeeperconsumer 在POM中添加如下依赖: org.apache.servicecomb handlerbizkeeper ${project.version} 错误注入 l应用场景 错误注入可以模拟一个调用失败,主要用于功能验证、故障场景演示等场景。 l前提条件 作用于微服务消费者,需要微服务应用集成错误注入模块,启用faultinjectionconsumer处理链。 配置示例如下: servicecomb: handler: chain: Consumer: default: faultinjectionconsumer 在POM中添加如下依赖: org.apache.servicecomb handlerfaultinjection ${project.version} 黑白名单 l应用场景 基于公钥认证机制,微服务引擎提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。 l前提条件 只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证。