服务治理概述
如果使用微服务框架开发应用,在应用托管后启动应用,微服务会自动注册到对应的微服务引擎,您可以到微服务引擎控制台,参考治理微服务进行服务治理的相关操作。本章节描述的服务治理只适用于Java Chassis开发框架。
治理微服务
微服务部署完后,您可以根据微服务的运行情况进行微服务的治理。
前提条件
- 您可以先在“服务目录 > 微服务列表”中创建微服务,启动微服务后,根据yaml文件的配置,会在对应的服务下注册服务实例。
- 如果没有事先创建微服务或者微服务已删除,在注册服务实例时会自动创建微服务。
- 微服务在创建以后,需要注册服务实例后才能进行对应操作。
治理策略说明
支持负载均衡、限流、容错、降级、熔断和错误注入等策略的配置,具体说明见下表。
名称
说明
负载均衡
l应用场景
微服务一般会部署多个实例,负载均衡控制微服务消费者访问提供者多个实例的策略,以达到流量均衡的目的。策略包括轮询、随机、响应时间权值、会话粘滞等。
l前提条件
作用于微服务消费者,需要微服务应用集成负载均衡模块,启用loadbalance处理链。
配置示例如下:
servicecomb:
handler:
chain:
Consumer:
default: loadbalance在POM中添加如下依赖:
org.apache.servicecomb
handler-loadbalance
${project.version} 限流
l应用场景
用于控制访问微服务的请求量大小,避免由于流量冲击对系统造成破坏。
l前提条件
作用于微服务提供者,需要微服务应用集成流量控制模块,启用qps-flowcontrol-provider处理链。
配置示例如下:
servicecomb:
handler:
chain:
Provider:
default: qps-flowcontrol-provider在POM中添加如下依赖:
org.apache.servicecomb
handler-flowcontrol-qps
${project.version} 降级
l应用场景
用于控制微服务调用其他微服务的时候,强制返回缺省值或者抛出异常,而不将请求发送到目标微服务,以达到屏蔽对目标微服务的访问和降低其压力的目的。
l前提条件
作用于微服务消费者,需要微服务应用集成降级模块,启用bizkeeper-consumer处理链。
配置示例如下:
servicecomb:
handler:
chain:
Consumer:
default: bizkeeper-consumer在POM中添加如下依赖:
org.apache.servicecomb
handler-bizkeeper
${project.version} 容错
l应用场景
当微服务消费者访问提供者出现异常,比如实例网络不通等,需要将请求转发到其他可用的实例。这里的容错,常被称为重试。
l前提条件
作用于微服务消费者,需要微服务应用集成容错模块,启用loadbalance处理链。
配置示例如下:
servicecomb:
handler:
chain:
Consumer:
default: loadbalance在POM中添加如下依赖:
org.apache.servicecomb
handler-loadbalance
${project.version} 熔断
l应用场景
当微服务消费者访问提供者出现异常,比如实例网络不通、请求超时等,并且异常积累到一定的程度,需要停止访问提供者,返回一个异常或者缺省值,防止雪崩效应。
熔断提供了手工熔断和自动熔断两种策略。手工熔断会设置熔断状态,强制返回;自动熔断需要结合错误率等判断是否熔断。
l前提条件
作用于微服务消费者,需要微服务应用集成熔断模块,启用bizkeeper-consumer处理链。
配置示例如下:
servicecomb:
handler:
chain:
Consumer:
default: bizkeeper-consumer在POM中添加如下依赖:
org.apache.servicecomb
handler-bizkeeper
${project.version} 错误注入
l应用场景
错误注入可以模拟一个调用失败,主要用于功能验证、故障场景演示等场景。
l前提条件
作用于微服务消费者,需要微服务应用集成错误注入模块,启用fault-injection-consumer处理链。
配置示例如下:
servicecomb:
handler:
chain:
Consumer:
default: fault-injection-consumer在POM中添加如下依赖:
org.apache.servicecomb
handler-fault-injection
${project.version} 黑白名单
l应用场景
基于公钥认证机制,微服务引擎提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。
l前提条件
只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证。
设置负载均衡
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“负载均衡”。
步骤 7 单击“新增”。先选择需要治理的微服务,再选择合理的负载均衡策略,请参考下表。
策略名
策略说明
轮询
支持按照服务实例的位置信息顺序路由。
随机
提供服务实例随机路由。
响应时间权值
提供最小活跃数(时延)的权重路由,支持业务处理慢的服务实例接收较少的请求,防止系统停止响应。这种负载均衡策略适合请求量少且稳定的应用。
会话粘滞
会话粘滞是负载均衡器上的一种机制,在设定的会话保持时间内,会保证同一用户相关联的访问请求会被分配到同一实例上。
l会话保持时间:会话保持的限制时间,0-86400,单位为秒。
l失败次数阈值:访问失败次数,0-10。当微服务访问下属实例的失败次数或会话保持时间超过设定的值时,微服务不再访问该实例。
步骤 8 单击“确定”保存配置。
设置限流
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“限流”。
步骤 7 单击“新增”,限流配置项下表所示。
配置项
说明
范围
限流对象
访问该微服务的其他微服务。
在“限流对象”后的下拉列表可直接选择。
QPS
每秒的请求数。当限流对象对当前服务实例的每秒请求数量超过设定的值,当前服务实例不再接受该对象的请求。
0-99999的整数。
说明:
对于微服务拥有多个实例的情况,如果设置单个实例的流控是2700QPS,该微服务有3个实例,总的QPS就是最大8100,QPS超过8100才会触发限流。
步骤 8 单击“确定”保存配置。
设置降级
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“降级”。
步骤 7 单击“新增”。选择合理的策略,降级策略配置项如下表所示。
配置项
配置项说明
降级对象
选择需要降级的微服务与降级方法。
降级策略
l开启:开启降级。
l关闭:关闭降级。
步骤 8 单击“确定”,保存配置。
设置容错
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“容错”。
步骤 7 单击“新增”。选择合理的策略,容错策略配置项如下表所示。
配置项
配置项说明
容错对象
该应用依赖的应用或方法,下拉菜单可直接选择。
是否开启容错
开启:向容错对象发起请求时发生错误的处理策略,开启后,会根据选择的处理策略处理请求。
关闭:关闭容错策略,即使请求失败也会等到超时后,再返回失败结果。
容错策略
说明
当“是否开启容错”配置项设置为“开启”时配置。
lFailover
在不同服务器上重新尝试建立连接。
lFailfast
不再重新尝试建立连接,即请求失败时会立即返回失败结果。
lFailback
在同一个服务器上重新尝试建立连接。
lcustom
− 尝试同一个服务器次数:尝试与同一个服务器重新建立连接的次数。
− 尝试新的服务器次数:尝试与新的服务器建立连接的次数。
步骤 8 单击“确定”,保存配置。
设置熔断
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“熔断”。
步骤 7 单击“新增”。选择合理的策略,熔断策略配置项如下表所示。
配置项
配置项说明
熔断对象
该应用调用的服务或方法,下拉菜单可直接选择。
触发条件
l手动熔断
即刻触发熔断,且不再调用。
l取消熔断
将已经熔断的微服务实例取消熔断,继续调用。
l自动熔断
− 熔断时间窗:熔断的持续时间,该时间窗内不再响应请求。
− 失败率:触发条件,窗口请求的失败率。
− 窗口请求数:触发条件,窗口收到的请求数。“失败率”和“窗口请求数”的条件需同时满足才会触发熔断。
步骤 8 单击“确定”,保存配置。
设置错误注入
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“错误注入”。
步骤 7 单击“新增”。选择合理的策略,错误注入策略配置项如下表所示。
配置项
配置项说明
注入对象
需要测试容错能力的微服务,可以具体到微服务的方法。
类型
测试微服务的容错能力类型:
l延迟
l错误
协议
访问微服务出现延时或错误的协议:
lRest
lHighway
延迟时间
访问微服务出现延时的时长,“类型”选择为“延迟”时才需要配置。
http错误码
访问微服务出现错误的HTTP错误码,“类型”选择为“错误”时才需要配置。该错误码为HTTP标准的错误码。
触发概率
访问微服务出现延时或错误的概率。
步骤 8 单击“确定”,保存配置。
设置黑白名单
基于公钥认证机制,微服务引擎提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。
只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证。
步骤 1 登录ServiceStage控制台,选择“微服务引擎 CSE”。
步骤 2 单击微服务引擎的“查看控制台”。
- 未开启安全认证的微服务引擎专享版或微服务引擎专业版,请执行 步骤4。
- 开启安全认证的微服务引擎专享版,请执行步骤3。
步骤 3 在弹出的“安全认证”对话框输入帐号名及密码,单击“确定”。
说明:
- 首次进入微服务控制台,请输入root帐号名及创建微服务引擎专享版时输入的密码。
- 创建帐号请参考新增帐号。
步骤 4 选择“服务治理”。
步骤 5 单击需要治理的微服务。
步骤 6 单击“黑白名单”。
步骤 7 单击“新增”,为应用添加黑白名单,黑白名单配置项如下表所示。
配置项
配置项说明
类型
l黑名单:表示根据匹配规则匹配到的微服务都不允许访问当前服务。
l白名单:表示根据匹配规则匹配到的微服务允许访问当前服务。
匹配规则
使用正则表达式表示。
例如“匹配规则”设置为data*,指在黑名单下匹配到的名称以data开头的服务不允许访问当前服务,或者在白名单下匹配到的名称以data开头的服务允许访问当前服务。
步骤 8 单击“确定”,保存配置。
公钥认证
公钥认证是微服务引擎提供的一种简单高效的微服务之间认证机制,它的安全性建立在微服务与服务中心之间的交互是可信的基础之上,即微服务和服务中心之间必须先启用认证机制。它的基本流程如下:
- 微服务启动的时候,生成密钥对,并将公钥注册到服务中心。
- 消费者访问提供者之前,使用自己的私钥对消息进行签名。
- 提供者从服务中心获取消费者公钥,对签名的消息进行校验。
启用公钥认证步骤如下:
- 公钥认证需要在消费者、提供者都启用。
servicecomb:
handler:
chain:
Consumer:
default: auth-consumer
Provider:
default: auth-provider
- 在pom.xml中增加依赖:
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>handler-publickey-auth</artifactId>
</dependency>