Zuul + Ribbon 脱离Eureka完成负载均衡+重试机制
Zuul + Ribbon 脱离Eureka完成负载均衡+重试机制
因为没有注册中心,所以需要网关对下游服务做负载均衡,然后果断集成Ribbon。中间遇到很多坑,最后终于解决了。
其实Ribbon里面默认开启了重试机制的。
Zuul配合Ribbon的代码展示:
如果希望最后的映射路由有前缀/test ,那么需要加上strip-prefix=false,因为默认是true。
zuul.routes.test.path=/test/**
zuul.routes.test.strip-prefix=false
zuul.routes.test.serviceId=test
test.ribbon.listOfServers=http://192.168.10.161:9001,http://192.168.10.162:9001
关于重试的其他配置:
ribbon.MaxAutoRetries=1 # 对当前实例的重试次数
ribbon.MaxAutoRetriesNextServer=10 # 切换实例的重试次数
ribbon.ConnecTimeOut=3000 # 请求的连接时间
ribbon.OkToRetryOnAllOperations=true # 对所有操作都进行重试
备注: 上述是对所有进行配置,如果需要对某个服务,则可以在前面加上服务名称。例如上述的test服务,则是test.ribbon.MaxAutoRetries=xxx
RestTemplate配合Ribbon
第一步:
在RestTemplate的Bean上加注解@LoadBalance 就结束了。
@Configuration
public class RestConfiguration { @Autowired
RestTemplateBuilder builder; @LoadBalanced
@Bean
public RestTemplate restTemplate() {
return builder.build();
} }
利用RestTemplate发送请求,达到负载均衡和重试效果。
public HttpResult verifyToken(String token, String ip) {
JSONObject result = restTemplate.getForObject("http://test/" + "token/verify/{token}/{ip}", JSONObject.class, token, ip);
HttpResult httpResult = JSON.parseObject(result.toJSONString(), HttpResult.class);
return httpResult;
}
url中间的host+port被替换成了额服务名称,(可以是注册中心注册的服务名,也可以是自定义的,比如咱们这个脱离Eureka的就是自定义的,开头有配置。),它会根据test这个服务名,找配置中的listServers根据负载均衡策略和配置好的重试配置,来进行负载均衡和失败重试。
关于负载均衡策略
1. 首先配置某个服务实例的负载均衡策略(注意,这个类不能被Componscan扫描到,否则会被所有的配置共享,比如我就是加了个自定义注解@IngoreComponentScan,然后配置了不扫描这个注解所在的类)
@Configuration
@IgnoreComponentScan
public class TestRibbonConfiguration { @Bean
public IRule ribbonRule() {
return new RoundRobinRule();
}
}
2.然后配置一个Ribbon客户端,服务名写你想配置的服务名,配置类自然就是刚刚配置的配置类。
@Configuration
@RibbonClient(name = "test", configuration = TestRibbonConfiguration.class)
public class RibbonConfiguration {
}
这样Ribbon的负载均衡策略就OK了(仅仅是针对test服务的,如果想配置所有的默认配置,那么单独配置就好了, 看看官网或者别的博客...我就不记笔记了。。。)
Zuul + Ribbon 脱离Eureka完成负载均衡+重试机制的更多相关文章
- 0405-服务注册与发现-客户端负载均衡-Ribbon 同Eureka使用,Ribbon脱离Eureka使用
一.Ribbon 同Eureka使用,注意事项 前几节一同使用,注意事项: 如果没有其他区域数据源,则根据客户端配置进行猜测(与实例配置相反).能够获取eureka.client.availabili ...
- Ribbon进行服务调用/负载均衡以及请求重试配置
Ribbon负载均衡 经过对Eureka的认识,及Eureka集群的搭建,已经基本可以入门Eureka的使用.之前对于服务调用者我们是直接获取注册列表后通过 get(0) 的方式来获取第一个注册信息. ...
- 5.使用Ribbon实现客户端侧负载均衡
Ribbon实现客户端侧负载均衡 5.1. Ribbon简介 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法 ...
- SpringCloud系列七:使用Ribbon实现客户端侧负载均衡
1. 回顾 在前面,已经实现了微服务的注册与发现.启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server上. 但是,在生成环境中,各个微服务都会部署多个实例,因 ...
- spring cloud使用zuul实现反向代理和负载均衡
首先,这篇文章参考的是http://blog.didispace.com/springcloud5/这位大牛的博客.本人是通过这篇博客来学习zuul的,现在写的博客只是个人在学习时个人的一些感受和理解 ...
- 手把手带你利用Ribbon实现客户端的负载均衡
之前的文章<SpringCloud搭建注册中心与服务注册>介绍了注册中心的搭建和服务的注册,本文将介绍下服务消费者通过Ribbon调用服务实现负载均衡的过程. 本文目录 一.Ribbon服 ...
- Spring Cloud Ribbon源码分析---负载均衡实现
上一篇结合 Eureka 和 Ribbon 搭建了服务注册中心,利用Ribbon实现了可配置负载均衡的服务调用.这一篇我们来分析Ribbon实现负载均衡的过程. 从 @LoadBalanced入手 还 ...
- Ribbon使用及其客户端负载均衡实现原理分析
1.ribbon负载均衡测试 (1)consumer工程添加依赖 <dependency> <groupId>org.springframework.cloud</gro ...
- spring cloud 使用ribbon简单处理客户端负载均衡
假如我们的multiple服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改 ...
随机推荐
- Win10系统安装VMware-viclient-6.0无响应问题解决方法
背景:笔记本重做系统升级至Win10系统后,由于工作需要,得安装VMware-viclient-6.0软件进行远程连接. 问题:没有出现网上那种各种报错情况,只是在点击“安装”按钮的时候没弹出任何等待 ...
- ISO/IEC 9899:2011 条款6.2.4——对象的存储持久性
6.2.4 对象的存储持久性 1.一个对象具有一个存储持久性来确定其生命周期.一共有四种存储持久性:静态的,线程的,自动的,以及分配的.分配存储在7.22.3中描述. 2.一个对象的生命周期是程序执行 ...
- PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)
1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is de ...
- Jquery异步请求数据实例代码
一.Jquery向aspx页面请求数据 前台页面JS代码: 代码如下: $("#Button1").bind("click", function () { $. ...
- wordpress可以自定义获取相关文章的代码
将下面的代码插入functions.php中 获取相关文章的策略: 手动指定 > 标签 >分类 > 随机 //相关文章 function add_related_posts($con ...
- CentOS 7启动与切换图形界面
安装图形界面 默认情况下是不会安装图形界面的,所以需要自己手动安装,步骤如下: 1.开启系统,以root身份进入 安装X(X Window System),命令如下: yum groupinstall ...
- Spring 使用复选选按钮
模型层需要提供数据选项,设置错误信息 关键代码 @NotNull @Size(min = 1, max = 5, message = "选择课程") private String[ ...
- Netty学习笔记(二)——netty组件及其用法
1.Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 原生NIO存在的问题 1) NIO的类库和API繁杂,使用麻烦:需要熟练掌握Selector.Se ...
- apache-phoenix-5.0.0-HBase-2.0-bin 登陆报错
1.Error: org.apache.hadoop.hbase.DoNotRetryIOException: java.io.IOException: Unable to load configur ...
- layuiAdmin (单页版)常见问题与解决方案
最近项目开发中用到了layuiAdmin的单页版进行开发,期间遇到一些问题,在此总结一二: 单页版缓存问题 由于单页面版本的视图文件和静态资源模块都是动态加载的,所以可能存在浏览器的本地缓存问题,因此 ...