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网关组件,对请求提供路由及过滤功能。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐