spring cloud学习(二)使用Ribbon实现客户端负载均衡
2017-02-13 18:52
483 查看
使用Ribbon实现客户端的负载均衡
* 个人博客空间 : https://zggdczfr.cn/ *Ribbon
Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组件。Ribbon的特点
和Eureka完美整合
支持多种协议-HTTP,TCP,UDP
缓存/批处理
built in failure resiliency
具体请查看官方文档 : https://github.com/Netflix/ribbon/wiki
整合Ribbon实现客户端的负载均衡
前期准备这里用到了上次的两个demo(服务注册中心和服务提供者)。
首先,添加服务提供者的服务,这里我将其端口号打印出来能够更加直观地观察到负载均衡的实现:
@RestController public class PrintfController { @Value("${server.port}") private String port; @RequestMapping("/service") public String printf(){ System.out.println("服务消费者正在使用服务,端口号为 : "+port); return "success"; } }
接下来分别启动这两个工程,注意将服务提供者的端口号(原来为1111改为1112)修改后再启动一次.就整个项目而言,总共有三个微服务再运行着(一个注册中心,两个服务提供者)。PS:其实服务提供者你想弄多少都行。
创建服务消费者
像一个普通的 spring cloud 工程一样,创建后向注册中心注册自己的信息。
添加依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency>
添加消费调用接口:
这里涉及到一个类
LoadBalancerClient,这个就是由 Netflix Ribbon 提供的工具类。他会根据 ServiceId (配置文件中的Service Name)向 Eureka (注册服务器)获取服务地址。
@RestController public class ConsumerController { @Autowired private LoadBalancerClient client; @RequestMapping("/test") public String test(){ ServiceInstance instance = client.choose("service"); URI uri = instance.getUri(); System.out.println(uri); return (new RestTemplate()).getForObject(uri+"/service",String.class); } }
配置文件信息:
# eureka client 配置 spring.application.name=ribbon-consumer server.port=2222 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
注意:
LoadBalancerClient返回的是已经注册的服务器地址。
启动服务消费者
启动工程后,我们可以看到如下注册信息:
Ribbon 实现负载均衡
多次访问 http://localhost:2222/test ,并查看控制台信息:
这样子,就实现了客户端的负载均衡了~
参考资料:
Spring Cloud Netflix 官网文档-中文译本Spring Cloud Netflix Ribbon
个人参考项目
个人参考项目 : https://github.com/FunriLy/springcloud-study/tree/master/%E6%A1%88%E4%BE%8B2相关文章推荐
- Spring Cloud版——电影售票系统<二>使用Ribbon实现客户端负载均衡
- spring cloud中使用Ribbon实现客户端的软负载均衡
- springcloud使用ribbon实现客户端负载均衡
- 使用Ribbon实现客户端负载均衡
- 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)
- spring cloud-使用feign来消费Restful服务同时加入Ribbon来实现负载均衡
- 详解spring cloud中使用Ribbon实现客户端的软负载均衡
- SpringCloud使用eureka(rest)和ribbon实现服务调用和负载均衡
- 客户端实现负载均衡:springCloud Ribbon的使用
- spring cloud使用ribbon实现负载均衡
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
- spring cloud之服务调用及使用ribbon实现负载均衡(三)
- 使用Eureka, Ribbon, Feign实现REST服务客户端
- SpringCloud(第 006 篇)电影微服务,使用 Ribbon 在客户端进行负载均衡
- SpringCloud(第 008 篇)电影微服务,使用 application.yml 配置文件配置 Ribbon 在客户端进行负载均衡调度算法
- Spring Cloud入门教程-Ribbon实现客户端负载均衡
- 【SpringCloud】(六):Ribbon实现客户端负载均衡
- SpringCloud(第 008 篇)电影微服务,使用 application.yml 配置文件配置 Ribbon 在客户端进行负载均衡调度算法
- SpringCloud(第 011 篇)电影Ribbon微服务,脱离Eureka使用配置listOfServers进行客户端负载均衡调度
- Spring Cloud入门教程-Ribbon实现客户端负载均衡