zoukankan      html  css  js  c++  java
  • 0403-服务注册与发现-客户端负载均衡-Ribbon的基本使用

    一、概述

      问题1、上一篇文章已说明如何注册微服务,但是调用方如何调用,以及如何防止硬编码。即电影微服务调用用户微服务

      问题2、用户微服务多个节点,调用服务方如何负载均衡

    二、实现负载均衡方式

    2.1、服务器端负载均衡

      

    2.2、客户端负载均衡

      

    三、Ribbon

    3.1、Ribbon是什么

      Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。

    下图展示了Eureka使用Ribbon时候的大致架构:

       

      Ribbon工作时分为两步:第一步先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询round robin、随机Random、根据响应时间加权等。

    四、官方文档解读

    官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#spring-cloud-ribbon

    4.1、引入pom

    查看erueka已经有ribbon依赖,此处可以忽略。

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            </dependency>

    4.2、使用

    将RestTemplate具有Ribbon的负载均衡能力,增加@LoadBalanced注解

        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }

    4.3、修改项目

    注意需要先把两个权限注释或者配置一下按照项目中

    management:
      port: 11111   #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
      context-path: /admin   #actuator暴露接口的前缀
      security:
        enabled: true   #actuator是否需要安全保证
        roles: SUPERUSER
    security:
      basic:
        enabled: true
        path: /admin    #针对/admin路径进行认证
      user:
        name: admin
        password: password

    将movie服务请求修改为

        @GetMapping("/movie/{id}")
        public User findById(@PathVariable Long id) {
            //http://127.0.0.1:7900/sample/
            //VIP visual IP 
            // HAProxy Heartbeat 软件都有提及VIP
            return restTemplate.getForObject("http://microservice-provider-user/sample/" + id, User.class);
        }

    调用服务即可。

    4.4、修改用户服务端口为7901,在启动一个服务,此时已经有两个微服务提供方

    使用Run Configurations或者Debug Configurations配置即可。

    4.5、此时负载均衡已经生效。【开始可能没有生效,客户端服务列表没有】默认使用轮询

    查看代码:https://github.com/bjlhx15/spring-cloud

    microservice-comsumer-movie-ribbon

    microservice-discovery-eureka

    microservice-provider-user

  • 相关阅读:
    为甚么 国企做互联网总做不起来?
    WEB开发:Java与Php对比
    String中的CompareTo
    String API
    死锁(Deadlock)
    100人100盏灯(详解)
    debian、ubuntu安装metasploit通用方法
    xman随机数相关题目
    CTF辅助脚本
    2019全国大学生信息安全竞赛ciscn-writeup(4web)
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8858925.html
Copyright © 2011-2022 走看看