7微服务治理

7.1微服务治理介绍

7.1.1什么是微服务治理
微服务开发上线后由于数量众多,并且微服务之间调用关系复杂,需要对微服务进行统一治理,微服务治理提供了 熔断、容错、限流、降级等高级服务治理能力,最大限度保障服务的可用性。
7.1.2云平台如何微服务治理
在学习ServiceComb时采用微服务治理都需要我们在配置文件中配置治理策略,而采用云平台的方式进行微服务治理只需要在微服务中配置少量的必要配置,具体的治理参数通过云平台配置,微服务也会把自已的信息上报给云 平台,并且微服务通过配置中心获取治理参数,从而实现通过云平台对微服务进行治理。
如何学习微服务治理:
1、测试阶段 可以在本地开发环境运行微服务,接入CSE平台,在云平台配置微服务治理的参数,观察微服务治理的效果。
2、生产阶段将微服务部署到云平台,并接入CSE平台。

7.2准备工作

7.2.1连接配置中心
微服务要通过云平台治理需要连接服务注册中心和配置中心,在云平台设置微服务治理参数,通过配置中心将配置 信息下发到微服务。
在微服务中配置服务注册中心和配置中心: 在microservice.yaml中配置:


cse:
service:
registry:
address: https://cse.cn‐north‐1.myhuaweicloud.com instance:
watch: false config:
client:
serverUri: https://cse.cn‐north‐1.myhuaweicloud.com refreshMode: 1 #默认为定时拉取
refresh_interval: 30 #客户端主动从配置中心拉取配置的周期 单位秒

7.2.2配置Handler
服务治理主要涉及熔断、容错、限流、负载均衡等。需要增加下面治理相关的handler。

cse:
handler:
chain:
Provider:
default: bizkeeper‐provider,qps‐flowcontrol‐provider Consumer:
default: bizkeeper‐consumer,loadbalance,qps‐flowcontrol‐consumer

每个Handler就是独立的处理模块,CSE提供如下的Handler:

handler-loadbalance	负载均衡模块。提供各种路由策略和配置方法。一般客户端使用。
handler-bizkeeper	和服务治理相关的功能,比如隔离、熔断、容错。
handler-tracing	调用链跟踪模块,对接监控系统,吐出打点数据。
handler-tcc	提供TCC事务开发管理能力。

7.3负载均衡策略

7.3.1策略介绍
当出现访问量和流量较大,一台服务器无法负载的情况下,我们可以通过设置负载均衡的方式将流量分发到多个服 务器均衡处理,从而优化响应时长,防止服务器过载。
可以通过新增规则配置负载均衡策略,设置参数支持轮询、随机、响应时间权值、会话保持等多种负载均衡策略。
7.3.2策略实现
设置负载均衡:
1、进入服务目录
在这里插入图片描述
2、单击需要治理的微服务,进入微服务治理配置页面。
在这里插入图片描述
在这里插入图片描述
3、在微服务治理配置页面,单击“负载均衡”,展开负载均衡详情页。
在这里插入图片描述
4、单击“新增”,进入负载均衡策略配置。先选择需要治理的微服务,再选择合理的负载均衡策略,请参见下表。

策略名	策略说明
轮询	支持按照服务实例的位置信息顺序路由。
随机	提供服务实例随机路由。
响应时间权值	提供最小活跃数(时延)的权重路由,支持业务处理慢的服务实例接收较少的请求,防止系统停止响  应。这种负载均衡策略适合请求量少且稳定的应用。
会话粘滞	会话粘滞是负载均衡器上的一种机制,在设定的会话保持时间内,会保证同一用户相关联的访问请求  会被分配到同一实例上。会话保持时间:会话保持的限制时间,0-86400,单位为秒。失败次数阈    值:访问失败次数,0-10。当微服务访问下属实例的失败次数和会话保持时间超过设定的值时,微服务不再访问该实例。

7.4限流策略

7.4.1策略介绍
限流主要解决微服务之间的流量分配问题,保证微服务在自己的资源池运行,互不影响。当限流对象对当前服务实 例的每秒请求数量超过设定的值,当前服务实例不再接受该对象的请求。
常用的检测方法是请求超时、流量过大等,设置参数包括限流对象、QPS阈值等。

7.4.2策略实现
使用云平台服务治理功能,通过图形界面完成限流设置,如下:
在这里插入图片描述

7.5容错策略

7.5.1策略介绍
容错是服务调用者访问服务实例,服务实例出现异常时的一种处理策略,出现异常后按照定义的策略进行重试或访 问新的服务实例。一旦发生异常,服务会根据容错机制来进行尝试重新访问或直接返回失败。
7.5.2策略实现
设置容错:
1.单击需要治理的微服务,进入微服务治理配置页面。
2.服务治理配置页面,单击“容错”,展开容错详情页。
3.单击“新增”,进入容错策略配置页面。
4.在容错策略配置页面选择合理的策略,容错策略配置项如下表所示。

配置项	配置项说明
容错对象	该应用依赖的应用或方法,下拉菜单可直接选择。

是否开启容错	开启:向容错对象发起请求时发生错误的处理策略,开启后,会根据选择的处理策略处理请求。关闭:关闭容错策略,即使请求失败也会等到超时后,再返回失败结果。
容错策略说明:当“是否开启容错”配置项设置 为“开启”时配置	Failover:在不同服务器上重新尝试建立连接。
同上	Failfast:不再重新尝试建立连接,即请求失败时会立即返回失败结果。
同上	Failback:在同一个服务器上重新尝试建立连接。
同上	custom:同一个服务器上尝试重新建立连接的次数,取值范围0-9的整数。在不同服务器上尝试建立连接的次数,取值范围0-9的整数。

测试:
1、先设置负载均衡
2、断掉一个服务,测试发现远程连接3、容错设置为Failback或Failover

7.6降级策略

7.6.1策略介绍
降级是容错的一种特殊形式,当出现服务吞吐量巨大,资源不够用等情况,我们可使用降级机制关掉部分不重要、 性能较差的服务,避免占用资源,以保证主体业务功能可正常使用。
7.6.2策略实现
设置降级:
1.单击需要治理的微服务,进入微服务治理配置页面。
2.在服务治理配置页面,单击“降级”,展开降级详情页。
3.单击“新增”,进入降级策略配置页面。
4.在降级策略配置页面选择合理的策略,降级策略配置项如下表所示。


配置项	配置项说明
降级对象	选择需要降级的服务。
降级策略	开启:开启降级关闭:关闭降级

7.7熔断策略

7.7.1策略介绍
当我们发现由于某些原因导致服务出现了过载现象,为避免造成整个系统故障,可采用熔断来进行保护。熔断在服 务请求处理出现异常时产生作用。进入熔断状态后,hystrix会认为被请求的服务已经无法处理请求,在第一时间截断请求直接返回错误给调用者。hystrix每隔一段时间会尝试访问后端服务,如果服务恢复正常,会退出熔断状态, 恢复正常的请求访问。
7.7.2策略实现
设置熔断:
1.单击需要治理的微服务,进入微服务治理配置页面。
2.在服务治理配置页面,单击“熔断”,展开熔断详情页。
3.单击“新增”,进入熔断策略配置页面。
4.在熔断策略配置页面选择合理的策略,熔断策略配置项如下表所示。
在这里插入图片描述
1、手动熔断
设置手动相当于实现降级功能。
2、取消熔断相关于删除熔断
3、自动熔断
测试流程为:设置失败率10、窗口请求数为10,熔断时间窗为2分钟,断掉服务,触发熔断,此时再启动服务也需要等待2分钟才可恢复

7.8错误注入策略

7.8.1策略介绍
错误注入策略用于测试微服务的容错能力,可以让用户知道,当出现延时或错误时,系统是否能够正常运行。 错误注入通过延时、错误等方式,供用户测试微服务的容错能力。
7.8.2策略实现
需要在消费微服务中配置hander: fault-injection-consumer
例如:


handler:
chain:
Provider:
default: bizkeeper‐provider,qps‐flowcontrol‐provider Consumer:
default: bizkeeper‐consumer,loadbalance,qps‐flowcontrol‐consumer,fault‐injection‐consumer

测试:
通过错误注入来测试熔断功能,思路如下:
1、通过注入触发消费方请求延时。
向网关设置错误注入,如下图,表示网关请求portalview出现3600ms延时。
在这里插入图片描述
2、向网关设置消费超时时间,当错误注入触发延迟,由于网关消费超时时间小于上图设置的3600ms,则请求失败。


cse:
isolation:
Consumer:
timeout:
enabled: true
timeoutInMilliseconds: 2000 #消费者超时时间

3、设置网关熔断策略,如下图,表示熔断后将停止90s时间。
在这里插入图片描述
4、熔断触发后将错误注入取消,并观察90s后恢复正常。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐