面试专题-Ribbon
1.Eureka中几个时间服务注册:eureka.client.register-with-erueka=true消费者和生产者,需要把自己注册到Eureka服务器中,设置true。默认值就是trueeureka.client.register-with-erueka=true注册中心自己 设置为false服务续约(renew):lease-renewal-interval-in-seconds:
1.Eureka中几个时间
服务注册:
eureka.client.register-with-erueka=true 消费者和生产者,需要把自己注册到Eureka服务器中,设置true。默认值就是true
eureka.client.register-with-erueka=true 注册中心自己 设置为false
服务续约(renew):
lease-renewal-interval-in-seconds:服务续约(renew)的间隔,默认为30秒 客户端心跳时间
lease-expiration-duration-in-seconds:服务失效时间,默认值90秒 服务注册超时时间 如果超时认为失效的服务
拉取服务列表:
eureka.client.registry-fetch-interval-seconds=30 消费者定期30秒 拉取一次服务缓存到本地
Eureka服务器服务失效剔除时间:
eureka.server.eviction-interval-timer-in-ms=60 因此它会开启一个定时任务,每隔60秒对所有失效的服务进行剔除。
2.Ribbon概述
Srping Cloud ribbon是基于Netfix Ribbo实现的一套客户端 负债均衡工具
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
3.Ribbon常见的负载均衡算法
4.什么是feigin?它的优点是什么?
1.feign采用的是基于接口的注解
2.feign整合了ribbon,具有负载均衡的能力
3.整合了Hystrix,具有熔断的能力
使用:
1.添加pom依赖。
2.启动类添加@EnableFeignClients
3.定义一个接口@FeignClient(name=“xxx”)指定调用哪个服务
5.Ribbon和Feign的区别?
1.Ribbon都是调用其他服务的,但方式不同。
2.启动类注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients
3.服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
4.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。
6.Ribbon 原理
底层的话,使用HTTP通信的框架组件,HttpClient,先得使用Ribbon去本地的Eureka注册表的缓存里获取出来对方机器的列表,然后进行负载均衡,选出一台机器,接着针对那台机器发送 Http请求过去即可
7.Feign 原理
在配置类上,加上@EnableFeginClients
,那么该注解是基于@Import
注解,注册有关Fegin的解析注册类,这个类是实现 ImportBeanDefinitionRegistrar 这个接口,重写registryBeanDefinition 方法。他会扫描所有加了@FeginClient 的接口,然后针对这个注解的接口生成动态代理,然后你针对fegin的动态代理去调用他方法的时候,此时会在底层生成http协议格式的请求。
8.说一下自己公司的服务注册中心怎么技术选型的?生产环境中应该怎么优化?
• 可用性
• 时效性
• 数据一致性 CP AP
• 容量
通过集群保证可用性
9.Spring Cloud Netflix下常用组件:
Netflix开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
Feign:基于Ribbon和Hystrix的声明式服务调用组件;
Zuul:API网关组件,对请求提供路由及过滤功能。
更多推荐
所有评论(0)