Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
45 lines (29 sloc) 1.85 KB
layout title key tags category date modify_date
article
201 微服务-服务治理
A20190409029
编程 JAVA基础
blog
2019-04-09 22:19:29 +0800
2019-04-09 22:19:29 +0800

服务治理的目的是解决客户端与服务端之间调用时经常出现的问题或者常见的解决方案,服务治理主要包含以下四类。

节点管理

服务端提供的节点,可能由于宕机或者网络不通导致可用节点变少,也能由于扩容导致可用节点变多,那么当可用节点数量变化时,应该如何将这些信息通知给客户端?

  1. 通过注册中心。服务端的节点定期发送心跳给注册中心,注册时中心发现变化时,通知客户端。
  2. 客户端主动处理。客户端如果发现服务端某些节点不可用,主动去掉该节点信息不再调用。

负载均衡

服务端提供了多个节点,客户端应该调用哪一个?负载均衡涉及两大类问题。

  1. 负载均衡提供方式。有独立LB、进程内LB、进程外LB三种。
  2. 复杂均衡算法。有随机算法、轮询算法、Hash算法等等。

服务路由

有时我们需要将符合特定条件的请求发送到特定的服务端节点,例如灰度发布,多机房就近访问等等。

这时就需要客户端在调用前根据路由规则调用不同的服务端。

路由规则可以是静态配置到客户端中,也可以采用动态配置。

服务容错

当服务端出现调用异常时,客户端可以采取一些容错机制,减少错误对客户端的影响,这些机制包括。

  • 出现错误之后重试。可以根据实际情况确定重试机制,例如立即重试、等待重试等等。
  • 限流。限制流入服务端的请求数量。
  • 熔断。直接切断请求。
  • 降级。对部分请求进行降级(延迟响应甚至不响应)处理。
You can’t perform that action at this time.