版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/82499580
Ribbon简介
Ribbon是Netflix开源的一款用于客户端软负载均衡的工具软件。Spring Cloud对Ribbon进行了一些封装以更好的使用Spring Boot的自动化配置理念。
spring-provider
接上一篇demo。
application.properties
spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
eureka.instance.non-secure-port-enabled: true
启动:
java -jar springbootdemo-0.0.1-SNAPSHOT.jar --server.port 3344
spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
eureka.instance.non-secure-port-enabled: true
spring-client
依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
application.yml
server:
port: 8082
spring:
application:
name: Ribbon-Consumer
#providers这个是自己命名的,ribbon,listOfServer这两个是规定的
providers:
ribbon:
listOfServers: localhost:8080,localhost:8081
@RestController
public class ConsumerController {
//注入负载均衡客户端
@Autowired
private LoadBalancerClient loadBalancerClient;
@RequestMapping("/consumer")
public String helloConsumer() throws ExecutionException, InterruptedException {
//这里是根据配置文件的那个providers属性取的
ServiceInstance serviceInstance = loadBalancerClient.choose("providers");
//负载均衡算法默认是轮询,轮询取得服务
URI uri = URI.create(String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort()));
return uri.toString();
}
RestTemplate说明
RestTemplate对象会使用Ribbon的自动化配置,同时通过配置@LoadBalanced还能够开启客户端负载均衡。
GET请求
在RestTemplate中,对GET请求可以通过两个方法进行调用实现。
第一种:getForEntity函数。该方法返回的是ResponseEntity,该对象是Spring对HTTP请求响应的封装,其中主要存储了HTTP的几个重要元素,比如HTTP请求状态码的枚举对象HttpStatus、在它的父类HttpEntity中还存储着HTTP请求的头信息对象HttpHeaders以及泛型类型的请求体对象。
第二种:getForObject函数。该方法可以理解为对getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP的请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri,String.class);
POST请求
对POST请求可以通过三个方法进行调用。
扫描二维码关注公众号,回复:
3255593 查看本文章
- 第一种:postForEntity函数。
- 第二种:postForObject函数。
- 第三种:postForLocation函数。
- 除了GET和POST还实现了PUT和DELETE。
Ribbon提供7种负载均衡策略