springcloud中ribbon客户端负载均衡
时间:2020-05-09
本文章向大家介绍springcloud中ribbon客户端负载均衡,主要包括springcloud中ribbon客户端负载均衡使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、配置
主流的LB方案可分成两类:
一种是集中式LB, 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;
另一种是进程内LB,将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。Ribbon就属于后者,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
@Configuration public class EurekaRibbonConfig { @LoadBalanced @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
spring: application: name: cloud-ribbon #hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds #断路器的超时时间需要大于Ribbon的超时时间,不然不会触发重试
@ConfigurationProperties("spring.cloud.loadbalancer.retry") public class LoadBalancerRetryProperties { //开启重试机制 private boolean enabled = true; }
Get请求
第一种:getForEntity函数
<T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) url为请求地址,responseType为请求响应body的包装类型,uriVariables为url中的参数绑定 比如: http://USER-SERVICE/user?name={1} <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables) url为请求地址,responseType为请求响应body的包装类型,uriVariables为url中的参数绑定 需要在占位符中指定Map中参数的key值,比如: http://USER-SERVICE/user?name={name} <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType) url为JDK java.net包下
第二种;getForObject函数
<T> T getForObject(String url, Class<T> responseType, Object... uriVariables) url为请求地址,responseType为请求响应body的包装类型,uriVariables为url中的参数绑定 比如: http://USER-SERVICE/user?name={1} <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) url为请求地址,responseType为请求响应body的包装类型,uriVariables为url中的参数绑定 需要在占位符中指定Map中参数的key值,比如: http://USER-SERVICE/user?name={name} <T> T getForObject(URI url, Class<T> responseType) url为JDK java.net包下
POST请求
第一种:postForEntity函数
<T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) 大部分和getForEntity一致,request可以是一个普通对象,也可以是一个HttpEntity对象,若一个普通对象,非HttpEntity对象,将会把请求对象转换为一个HttpEntity对象来处理;若是一个HttpEntity对象,当成一个完成的HTTP请求对象来处理,不仅包含body,还有header <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType)
第二种:postForObject函数
<T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) 跟getForObject类似 <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType)
第三种:postForLocation函数
URI postForLocation(String url, @Nullable Object request, Object... uriVariables) 返回新资源的URI URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables) URI postForLocation(URI url, @Nullable Object request)
PUT请求
void put(String url, @Nullable Object request, Object... uriVariables) void put(String url, @Nullable Object request, Map<String, ?> uriVariables) void put(URI url, @Nullable Object request) 没有返回内容
DELETE请求
void delete(String url, Object... uriVariables) void delete(String url, Map<String, ?> uriVariables) void delete(URI url)
原文地址:https://www.cnblogs.com/mufeng07/p/12859165.html
- RESTful API 设计最佳实践
- Hello Bonjour!
- SQL Server 2008 FILESTREAM特性管理文件
- 验证码类库CaptchaMvc
- SQL Server : Browser服务
- 仿今日头条顶部导航效果
- iOS微信小视频优化心得
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)
- 仿火车出票效果
- ASP.NET SignalR HubPipelineModule
- 微信ANDROID客户端-会话速度提升70%的背后
- Vue.js前后端同构方案之准备篇—代码优化
- 仿今日头条滑动评论效果
- Android新一代多渠道打包神器
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释