码迷,mamicode.com
首页 > 其他好文 > 详细

0403-Ribbon的基本使用

时间:2018-04-16 22:48:00      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:depend   rand   admin   使用   obj   service   lan   技术分享   blank   

一、概述

  问题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

 

0403-Ribbon的基本使用

标签:depend   rand   admin   使用   obj   service   lan   技术分享   blank   

原文地址:https://www.cnblogs.com/bjlhx/p/8858925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!