1、Ribbon和Nginx的区别
Ribbon:
属于客户端的负载均衡。Ribbon是从注册中心服务器端上获取服务注册信息列表,缓存到本地,然后在本地实现轮训负载均衡策略。既在客户端实现负载均衡。
Nginx:
属于服务器端的负载均衡。nginx是客户端所有请求统一交给nginx,由nginx进行实现负载均衡请求转发,属于服务器端负载均衡。既请求有nginx服务器端进行转发。
2、Ribbon到底该怎么用 【新手】
其实Ribbon你一直在使用,只是你使用的时候你不知道你在使用而已。
@Bean
//客户端的负载均衡注解
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
@GetMapping("/router")
@ResponseBody
public String router() {
RestTemplate tpl = getRestTemplate();
String json = tpl.getForObject(routerUrl, String.class);
return json;
}
看到这代码,熟悉了吧。使用了 @LoadBalanced 其实就意味着你使用了Ribbon。
3、@EnableDiscoveryClient和@EnableEurekaClient
有时你会发现@EnableDiscoveryClient标签无法注册到注册中心,百度查询之后@EnableDiscoveryClient,得到的结论是@EnableDiscoveryClient和@EnableEurekaClient一样,能够让注册中心能够发现,扫描到改服务
不同点:
@EnableEurekaClient只适用于Eureka作为注册中心
@EnableDiscoveryClient 可以是Eureka或其他(consul、zookeeper等)注册中心
我们使用时,只需要使用一个即可哦。
4、Hystrix Ribbon 需要单独一个项目吗【新手】
Hystrix被设计的目标是:
一、对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。
二、在复杂的分布式系统中阻止级联故障。
三、快速失败,快速恢复。
四、回退,尽可能优雅地降级。
五、启用近实时监控、警报和操作控制。
说人话:复杂分布式体系结构中的应用程序有许多依赖项,每个依赖项在某些时候都不可避免地会失败。如果主机应用程序没有与这些外部故障隔离,那么它可能产生的级联错误有可能把每个调用链拖垮。
更详细的资料:Hystrix介绍
5、Feign为什么能够调通服务,但是Hytrix总是熔断
开启Feign服务做熔断client服务后,需要注意,一旦你调用的服务一般在1S内能够响应,你可以不管。
但是假如你调用的服务,你无法预测其在一秒内能够响应,那么你需要配置一下Hystrix超时信息:
ribbon:
OkToRetryOnAllOperations: false #对所有操作请求都进行重试,默认false
ReadTimeout: 3000 #负载均衡超时时间,默认值5000
ConnectTimeout: 1000 #ribbon请求连接的超时时间,默认值2000
MaxAutoRetries: 0 #对当前实例的重试次数,默认0
MaxAutoRetriesNextServer: 1 #对切换实例的重试次数,默认1
hystrix:
command:
default: #default全局有效,service id指定应用有效
execution:
timeout:
#如果enabled设置为false,则请求超时交给ribbon控制,为true,则超时作为熔断根据
enabled: true
isolation:
thread:
timeoutInMilliseconds: 5000 #断路器超时时间,默认1000ms
参考来源:https://blog.csdn.net/weixin_41509621/article/details/88658087
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160906.html