RestTemplate负载均衡

2020-06-28  本文已影响0人  任嘉平生愿

RestTemplate的逆袭之路,从发送请求到负载均衡_江南一点雨的专栏-CSDN博客_@bean public resttemplate resttemplate()

RestTemplate发起一个请求,这个请求被LoadBalancerInterceptor给拦截了,拦截后将请求的地址中的服务逻辑名转为具体的服务地址.而逻辑地址是通过ribbon将serverid对应的元数据信息通过对应的负载测策略拿到server instance的ip和port.

public interface ILoadBalancer {

    public void addServers(List<Server> newServers);

    public Server chooseServer(Object key);

    public void markServerDown(Server server);

    public List<Server> getReachableServers();

    public List<Server> getAllServers();

}

系统默认采用了ZoneAwareLoadBalancer负载均衡器

Ribbon的ZoneAwareLoadBalancer_实践求真知-CSDN博客

DynamicServerListLoadBalancer,采用的是线性轮询的方式来选择调用服务实例,该算法实现简单并没有区域Zone的概念,所以它会把所有实例视为一个Zone下的节点来看待,这样就会周期性地产生跨区域访问的情况,由于跨区域会产生更高的延迟,这些实例主要以防止区域故障实现高可用的目的而不能作为常规访问的实例。所以在多区域部署的情况下会有一定的性能问题。ZoneAwareLoadBalancer可用避免这样的问题。

上一篇下一篇

猜你喜欢

热点阅读