zoukankan      html  css  js  c++  java
  • 客户端负载均衡介绍

    客户端负载均衡

    客户端负载均衡,就是相对服务端负载均衡而言的。

    服务端负载均衡,就是传统的 Nginx 的方式。用 Nginx 做负载均衡,我们称之为服务端负载均衡。

    如下图所示:

    这种均衡,称为服务端负载均衡。它的一个特点就是,客户端并不知道此时为它提供服务的 server 到底是哪一个,它也不关心。反正请求发给 Nginx,Nginx 再将请求转发给 Tomcat,客户端只需要记住 Nginx 的地址即可。

    客户端负载均衡则是另外一种情形:

    客户端负载均衡,就是调用的客户端本身是知道所有 Server 的详细信息的,当需要调用 Server 上的接口时,客户端就从自身所维护的 Server 列表中,根据提前配置好的负载均衡策略,自己挑选一个 Server 来调用。此时,客户端知道它所调用的 Server 到底是哪一个。

    在 RestTemplate 中,要想使用负载均衡功能,只需要给 RestTemplate 实例上添加一个 @LoadBalanced 注解即可,此时,RestTemplate 就会自动具备负载均衡功能,这个负载均衡就是客户端负载均衡。

        @Bean
        // 给 RestTemplate 实例添加 @LoadBalanced 注解,自动开启负载均衡
        @LoadBalanced
        RestTemplate restTemplate(){
            return new RestTemplate();
        }
    

    负载均衡原理

    在 Spring Cloud 中,实现负载均衡非常容易。只需要添加 @LoadBalanced 注解即可。只要添加了该注解,一个原本普通做 Rest 请求的工具 RestTemplate 就会自动具备负载均衡功能,这个是怎么实现的呢?

    整体上来说,这个功能的实现就是三个核心点:

    -从 Eureka Client 本地缓存的服务注册信息中,选择一个可以调用的服务。

    • 根据 1 中所选择的服务,重构请求 URL 地址。

    • 将 1、2 步的功能嵌入到 RestTemplate 中。

    每天学习一点点,每天进步一点点。

  • 相关阅读:
    ActiveMQ( 一) 同步,异步,阻塞 JMS 消息模型
    rocketmq (一)运行原理以及使用问题
    Springboot+ActiveMQ(ActiveMQ消息持久化,保证JMS的可靠性,消费者幂等性)
    ActiveMQ(下载,启动,java程序中 如何操作)
    ActiveMQ(为什么要使用消息中间件,JMS传输模型)
    java(线程池的创建方式,和线程池的原理)
    java多线程
    Zookeeper实现负载均衡
    Zookeeper实现分布式锁
    SpringCloud-断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/youcoding/p/13284065.html
Copyright © 2011-2022 走看看