一. SpringCloud 5大组件
SpringCloud 5大组件有哪些?
总结
五大件分别有:
- Eureka:注册中心
- Ribbon:负载均衡
- Feign:远程调用
- Hystrix:服务熔断
- Zuul/Gateway:网关
如果项目用到了阿里巴巴(SpringCloudAlibba)的组件,也可以说:
随着SpringCloudAlibba在国内兴起,我们项目中使用了一些阿里巴巴的组件
- 注册中心/配置中心 Nacos
- 负载均衡 Ribbon
- 服务调用 Feign
- 服务保护 sentinel
- 服务网关 Gateway
二. 服务注册发现
服务注册和发现是什么意思?SpringCloud 如何实现服务注册发现?
在跟面试官陈述的时候,要说明我做过的哪一个项目使用了哪个注册中心
- 微服务中必须要使用的组件,考察我们使用微服务的程度
- 注册中心的核心作用:服务注册和发现
- 常见的注册中心:eureka、nocas、zookeeper
2.1 Eureka的作用
总结
2.2 nacos
我看你之前也用过nacos、你能说下nacos与eureka的区别?
nacos的工作流程
总结
三. 负载均衡
你们项目负载均衡如何实现的?
- 负载均衡 Ribbon,发起远程调用feign就会使用Ribbon
- Ribbon负载均衡策略有哪些?
- 如果想自定义负载均衡策略如何实现?
3.1 Ribbon负载均衡流程
3.2 Ribbon负载均衡策略
Ribbon负载均衡策略有哪些?
- RoundRobinRule:简单轮询服务列表来选择服务器
- WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
- RandomRule:随机选择一个可用的服务器
- BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
- RetryRule:重试机制的选择逻辑
- AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
- ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询
3.3 自定义负载均衡
如果想自定义负载均衡策略如何实现?
可以自己创建类实现IRule接口,然后再通过配置类或者配置文件配置即可,通过定义IRule实现可以修改负载均衡规则,有两种方式:
总结
四. 服务雪崩
什么是服务雪崩,怎么解决这个问题?
4.1 什么是服务雪崩
一个项目中可能存在众多的微服务,各个微服务的调用都可能有Feign的远程调用,如果有一台服务关闭,则就有可能出现服务雪崩(一个服务失败,导致整条链路的服务都失败的情形)
4.2 解决方法(Hystix 服务熔断降级)
- 服务降级
服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用
- 服务熔断=
4.3 预防服务雪崩(限流)
限制访问,控制一部分流量预防服务雪崩
总结
什么是服务雪崩,怎么解决这个问题?
答:
五. 微服务监控
你们的微服务是怎么监控的?
首先为什么需要监控?
5.1 skywalking
一个分布式系统的应用程序性能监控工具(Application Performance Managment),提供了完善的链路追赃能力,apache的顶级工具(前华为产品经理主导开源)
总结
面试官:你们的微服务是怎么监控的?
候选人: