• 04.Ribbon负载均衡


    04.Ribbon负载均衡

    SpringCloud Ribbon是基于Netfilx Ribbon实现的服务器负载均衡工具。

    Ribbon的

    客户端组件提供完整的配置项目,如连接超时、重试等。在配置文件中列出LoadBalancer(LB)后面的所有机器,Ribbon会自动帮你进行基于某种规则(随机,轮询,权重)连接这些机器,从而实现Ribbon进行负载均衡。

    • 集中式负载均衡

    在消费者和提供者之间使用独立的负载均衡设备例如Nginx,该设备将访问通过某种策略转发至访问的提供方。

    • 进程式负载均衡

    将负载均衡集成到消费方,消费方从注册中心中获取那些提供者可以使用,自己选择合适自己的服务器。

    导入Maven依赖

    在新版的eureka-client中,已经集成包含了Ribbon,所以我们不需要进行对Ribbon的依赖导入。

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        <version>3.1.4version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    编写配置文件

    进行对Eureka的配置编写。

    server:
      port: 80
    
    eureka:
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://yume7001.com:7001/eureka,http://yume7002.com:7002/eureka,http://yume7003.com:7003/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    编写ConfigBean文件

    添加@LoadBalanced注解,即可进行负载均衡。

    @Configuration
    public class ConfigBean {
    
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    修改Controller文件

    我们将原来的固定路径进行修改。

    private static final String REST_URL = "http://localhost:8001";
    
    • 1

    将其更新为我们需要使用的服务名称。

    @Controller
    public class BirdConsumer {
        @Resource
        private RestTemplate restTemplate;
    
        private static final String REST_URL = "http://springcloud-provider-bird";
    
        @ResponseBody
        @RequestMapping("/consumer/bird/query")
        public List<Bird> getAllBird(){
            return restTemplate.getForObject(REST_URL+"/bird/query",List.class);
        }
    
        @ResponseBody
        @RequestMapping("/consumer/bird/query/{id}")
        public Bird getBird(@PathVariable("id")int id){
            return restTemplate.getForObject(REST_URL+"/bird/query/"+id,Bird.class);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    Android实现两台手机屏幕共享和远程控制
    在云栖深处见未来
    前端工程化精讲第十二课 打包提效:如何为 Webpack 打包阶段提速?
    SpringBoot 整合Thymeleaf教程及使用
    视频封面:从视频中提取封面,轻松制作吸引人的视频
    数学建模——模拟退火
    “元创新·智生成” 第15届企业数智化学习大会公布嘉宾阵容
    mklink命令使得OneDrive同步任意一个文件夹
    day19-web开发会话技术01
    10-Mysql内核查询成本计算实战-05
  • 原文地址:https://blog.csdn.net/qq_56403015/article/details/128202228