简单带你了解下常见的服务治理手段

324 阅读4分钟

随着互联网的不断发展,越来越多的程序员都在学习微服务架构开发等技术知识,而本文我们就通过案例分析来简单了解一下,微服务服务治理常用方法分享。

常见的服务治理手段有如下几种:

节点管理

服务调用失败时可能是服务提供者自身出现,也可能是网络发生故障,我们一般有两种处理手段。

注册中心主动摘除机制

这种机制要求服务提供者定时向注册中心汇报心跳,如果超时,就认为服务提供者出现问题,并将节点从服务列表中摘除。

服务消费者摘除机制

当服务提供者网络出现异常,服务消费者调用就会失败,如果持续错误就可以将它从服务提供者节点列表中移除。

负载均衡

服务消费者在从服务列表中选取可用节点时,如果能让性能较好的服务机多承担一些流量的话,就能充分利用机器的性能。这就需要对负载均衡算法做一些调整。

常用的负载均衡算法主要包括以下几种:

  • Random随机算法

    从可用的服务节点中随机选取一个节点。一般情况下,随机算法是均匀的,也就是说后端服务节点无论配置好坏,终得到的调用量都差不多。

  • RoundRobin轮询算法(加权重)

    就是按照固定的权重,对可用服务节点进行轮询。如果所有服务节点的权重都是相同的,则每个节点的调用量也是差不多的。但可以给性能较好的节点的权重调大些,充分发挥其性能优势,提高整体调用的平均性能。

  • LeastConn少活跃调用算法

    这种算法是在服务消费者这一端的内存里动态维护着同每一个服务节点之间的连接数,选择连接数小的节点发起调用,也就是选择了调用量小的服务节点,性能理论上也是优的。

  • 一致性Hash算法

    指相同参数的请求总是发到同一服务节点。当某一个服务节点出现故障时,原本发往该节点的请求,基于虚拟节点机制,平摊到其他节点上,不会引起剧烈变动。

服务路由

所谓的路由规则,就是通过一定的规则如条件表达式或者正则表达式来限定服务节点的选择范围。

制定路由规则主要有两个原因:

  • 业务存在灰度发布、多版本ABTesting的需求,功能逐步开放发布或者灰度测试的场景。
  • 多机房就近访问的需求

一般可以通过IP段规则来控制访问,在选择服务节点时,优先选择同一IP段的节点。这个也是算力靠近的优先原则。

服务容错

在分布式系统中,分区容错性是很重要的一个话题,要知道,服务间的调用调用并不总是成功,服务提供者程序bug、异常退出或者消费者与提供者之间的网络故障。而服务调用失败之后,我们需要一些方法来保证调用的正常。

常用的方式有以下几种:

  • FailOver失败自动切换。就是服务消费者发现调用失败或者超时后,自动从可用的服务节点列表中选择下一个节点重新发起调用,也可以设置重试的次数。
  • FailBack失败通知。就是服务消费者调用失败或者超时后,不再重试,而是根据失败的详细信息,来决定后续的执行策略。
  • FailCache失败缓存。就是服务消费者调用失败或者超时后,不立即发起重试,而是隔一段时间后再次尝试发起调用。
  • FailFast快速失败。就是服务消费者调用一次失败后,不再重试。

服务治理的手段是从不同角度来确保服务调用的成功率。节点管理是从服务节点健康状态角度来考虑,负载均衡和服务路由是从服务节点访问优先级角度来考虑,而服务容错是从调用的健康状态角度来考虑。