美文网首页
@LoadBalanced负载均衡轮询

@LoadBalanced负载均衡轮询

作者: 2B键盘 | 来源:发表于2019-01-14 03:03 被阅读0次

三个注意事项

1.记得自己写一个启动类,我这边就不写了。

2.还有就是本文的所有类必须和启动类在同一个包下,不然需要在启动类配置@ComponentScan注解来手动配置扫描的包。

3.在这边的负载均衡是本地负载均衡

使用@LoadBalanced进行负载均衡轮询

首先创建一个eureka-client项目,取名为server-hello!
注意:这是个client项目

第二步:在之前的client-hello中创建一个controller类,取名为OrderController
以下是我的代码


package com.keyboard.client;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 2B键盘
 * @version 1.0.0
 * @date 2019/1/8 1:49
 * @descripting TODO
 */
@RestController
public class OrderController {

    @Value("${server.port}")
    String port;
    
    @RequestMapping("/order")
    public String order(){
        return "我是ClientHello服务的order接口,来自"+port+"端口";
    }

}

上面完成后,再在server-hello中也创建一个controller取名为TemplateController
以下是我的代码


package com.keyboard.app;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TemplateController {
    /**
     * RestTemplate是为了远程调用使用的
     * 大家应该都知道,我们如果使用java获取一个url的返回信息
     * 我们一般都会使用HttpClient来进行调用,RestTemplate的底层就是HttpClient
     */
    @Autowired
    private RestTemplate restTemplate;
    
    @RequestMapping("/transfer")
    public String templateTransfer() {
        //url别名,这边的client-hello就是注册中心的注册别名
        //配置在yml文件的spring-application-name下
        String url = "http://client-hello/order";
        return "transfer:" + restTemplate.getForObject(url,String.class);
    }
    
}

如果运行以上代码你会发现会启动报错,Bean注入失败!
因为springcloud默认是没有注入RestTemplate的Bean的,所以你需要自己手动配置一下Bean
配置方法参考以下代码


package com.keyboard.app;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class BeanConfig {

    @Bean
    //此注解表示开启负载均衡器
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    
}

最后再运行会然后调用transfer接口会发现已经调用成功了。
但是细心的朋友会发现,只有一个client服务谈何负载均衡?

这边的话大家可以修改一下client-hello的端口号再启动一个,然后再调用transfer就会发现它调用的order接口中的端口号不断的在变化,就说明它已经在进行负载均衡轮询机制了

相关文章

  • @LoadBalanced负载均衡轮询

    三个注意事项 1.记得自己写一个启动类,我这边就不写了。 2.还有就是本文的所有类必须和启动类在同一个包下,不然需...

  • Nginx负载均衡配置

    基于轮询(Round Robin)的负载均衡配置 Nginx的负载均衡策略默认就是轮询。 Nginx负载均衡策略支...

  • 负载均衡

    负载均衡图例负载均衡.png 负载均衡策略 轮询 ip_hash 均衡参数 down 表示当前的服务不参与负载均衡...

  • Dubbo的四种负载均衡方式

    (1) 基于权重的轮询负载均衡 计算权重,根据权重配置查询次数,然后轮询。 (2)基于权重的随机负载均衡 ...

  • 五、负载均衡与配置详解

    负载均衡概述 nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为:轮询、加权轮询、ip hash。...

  • ribbon 初体验

    配置 引入相关依赖 @LoadBalanced声明RestTemplate使用负载均衡 常见配置 ribbon在客...

  • Nginx 负载均衡 多种方法

    1.轮询负载均衡 (需要请求 session时建议不要用 。如登录等) 2.权重负载均衡 3.hash负载均衡 (...

  • XXL-RPC v1.3.1,分布式服务框架

    Release Notes 1、负载均衡/软负载:提供丰富的负载均衡策略,包括:轮询、随机、LRU、LFU、一致性...

  • 使用nginx对spring boot项目进行代理

    摘要:使用nginx对spring boot项目进行反向代理,并且使用轮询均衡负载策略 均衡负载与集群 集群和均衡...

  • loadBalance 的负载均衡解释

    负载均衡解释?客户端通过负载均衡算法,从服务列表中选择服务地址,进行连接的过程,负载均衡算法有, 轮询、随机、加权...

网友评论

      本文标题:@LoadBalanced负载均衡轮询

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