美文网首页
SpringCloud(三)负载均衡

SpringCloud(三)负载均衡

作者: 冰三尺 | 来源:发表于2019-04-21 15:00 被阅读0次

    客户端负载均衡器

    在SpringCloud中, 无论是使用eureka作为注册中心, 还是使用zookeeper作为注册中心, 其负载均衡的实现都是基于本地来实现的.

    在SpringCloud中使用Ribbon来实现负载均衡,其本质是会从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地。接下来拦截请求, 再去根据负载均衡策略去实现调用具体的哪个服务. 策略, 可以是轮训, 可以是权重等等.

    核心代码

    private DiscoveryClient discoveryClient;
    List<ServiceInstance> instances = discoveryClient.getInstances("服务名称");
    

    DiscoveryClient会获取所有注册在eureka上的所有服务, 当获取到所有被注册的服务, 客户端便可以决定去访问哪一个服务.
    假如有两台服务, 第一次请求到来我们访问第一个服务, 第二个请求到来, 访问第二个服务, 第三个请求服务到来, 再请求第一台服务, 取模运算, 以此类推


    Ribbon与Nginx区别
    服务器端负载均衡Nginx
    nginx是客户端所有请求统一交给nginx,由nginx进行实现负载均衡请求转发,属于服务器端负载均衡。
    既请求有nginx服务器端进行转发。
    客户端负载均衡Ribbon
    Ribbon是从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地,让后在本地实现轮训负载均衡策略。
    既在客户端实现负载均衡。

    应用场景的区别:
    Nginx适合于服务器端实现负载均衡 比如Tomcat ,Ribbon适合与在微服务中RPC远程调用实现本地服务负载均衡,比如Dubbo、SpringCloud中都是采用本地负载均衡。

    相关文章

      网友评论

          本文标题:SpringCloud(三)负载均衡

          本文链接:https://www.haomeiwen.com/subject/nbodgqtx.html