这里写目录标题
-
-
- 1.微服务是什么
- 2.你知道哪些RPC架构
- 3.SpringCloud和Dubbo有什么区别
- 4.SpringCloud由什么组成
- 5.Eureka包含几个组件
- 6.Eureka的工作原理
- 7.说一下什么是Eureka的自我保护机制
- 8.什么是CAP原则
- 9.都是服务注册中心,Eureka比Zookeeper好在哪里
- 10.Ribbon的作用
- 11.Ribbon的原理
- 12.Ribbon和nginx的区别
- 13.Feign的作用
- 14.SpringCloud有几种调用接口的方式
- 15.Ribbon和Feign调用服务的区别
- 16.说一说什么是服务雪崩
- 17.Hystrix断路器是什么
- 18.什么是服务降级、服务熔断、服务隔离
- 19.服务降级和服务熔断的区别
- 20.什么是Zuul微服务网关
- 21.Zuul的应用场景
- 22.Gateway
- [23.什么是SpringCloud Config](#23.什么是SpringCloud Config)
- 24.Nacos可以做什么
- 25.Eureka保证的是AP,那么Nacos保证的什么?默认是什么
-
1.微服务是什么
微服务是一种架构风格,我们可以把应用程序划分为一组小型的、松散耦合的服务,每个服务都运行在自己的进程里面,并通过轻量级的通信机制进行通信,每个服务都可以独立部署、独立扩展、独立更新,从而提高了应用程序的可伸缩性、可维护性和可测试性。
2.你知道哪些RPC架构
RPC(Remote Procedure Call)即远程过程调用,不同于本地调用,RPC是指调用远端机器的函数或方法,且不需要关心底层的调用细节,如网络协议和传输协议等。
常见的RPC框架:
- Dubbo
- SpringCloud
3.SpringCloud和Dubbo有什么区别
- 底层技术不同:前者基于HTTP协议+Rest接口,后者基于TCP协议传输。
- 主要用途不同:前者是一个完整的微服务框架,后者是一个RPC框架。
- 社区生态不同:前者拥有丰富的生态系统,后者生态系统相对较小。
- 语言支持不同:前者支持多语言,后者只支持Java。
4.SpringCloud由什么组成
- SpringCloud Eureka:服务注册与发现。
- SpringCloud Feign:服务接口调用。
- SpringCloud Ribbon:客户端负载均衡。
- SpringCloud Hystrix:断路器。
- SpringCloud Zuul:服务网关。
- SpringCloud Config:分布式统一配置管理。
5.Eureka包含几个组件
- Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
- Eureka Client是一共java客户端,用于简化与Eureka Server的交互,客户端同时也就是一共内置的、使用轮询(round-robin)负载算法的负载均衡器。
6.Eureka的工作原理
系统中的其他服务使用Eureka的客户端将其连接到Eureka服务端中,并且保持心跳,这样工作人员可以通过Eureka服务端来监控各个微服务是否运行正常。
7.说一下什么是Eureka的自我保护机制
Eureka服务端会检查最近15分钟内所有Eureka实例正常心跳占比,如果低于85%就会触发自我保护机制。触发了保护机制,Eureka将暂时把这些失效的服务保护起来,不让其过期,但这些服务也并不是永远不过期。Eureka在启动完成后,每隔60s会检查一次服务健康状态,如果这些被保护起来失效的服务过一段时间后(默认90s)还没有恢复,就会把这些服务剔除。如果在此期间服务恢复了并且实例心跳占比高于85%时,就会自动关闭自我保护机制。
8.什么是CAP原则
又称CAP原理,指的是在一个分布式系统中,强一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
- 强一致性(Consistency):访问所有的节点,得到的数据结果都是一样的。
- 可用性(Availability):保证每个请求不管成功或者失败都有响应。
- 分区容错性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作。
9.都是服务注册中心,Eureka比Zookeeper好在哪里
- 在分布式系统中分区容错性是必须要保证的,因此只能保证A或C,只能AP和CP。
- 我们在服务使用中可以容忍注册中心返回几分钟之前的注册信息,但是不能接受服务直接down掉不可用。
- zookeeper保证的是CP,当主机的节点发生网络故障了,会选取新的主节点,响应时间过长。
- eureka保证的是AP,Eureka的节点都是平等的,不存在主机从机,因此eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样是整个注册中心瘫痪。
10.Ribbon的作用
主要功能是提供客户端的软件负载均衡算法,默认是轮询算法。
11.Ribbon的原理
- 通过拦截器对被注解@LoadBalanced修饰的RestTemplate进行拦截。
- 将RestTemplate中调用的服务名,解析成具体的IP地址,由于一个服务名会对应多个地址,那么在选择具体服务地址的时候,需要做负载均衡。
- 确定目标服务的IP和PORT后,通过Httpclient进行http的调用。
12.Ribbon和nginx的区别
nginx:反向代理实现负载均衡,相当于从nginx服务器进行请求转发。
Ribbon:客户端负载均衡,全程都是客户端操作。
13.Feign的作用
- Feign是一个声明式的Web服务客户端,它简化了使用基于HTTP的远程服务的开发。
- Feign是在RestTemplate和Ribbon的基础上进一步封装,使用RestTemplate实现Http调用,使用Ribbon实现负载均衡。
14.SpringCloud有几种调用接口的方式
- Spring DiscoveryClient
- 支持Ribbon的RestTemplate
- Feign客户端
15.Ribbon和Feign调用服务的区别
- Ribbon:需要我们自己构建http请求,然后通过RestTemplate去发给其他服务,比较繁琐。
- Feign:不需要自己构建Http请求,直接接口调用就行。
16.说一说什么是服务雪崩
在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧增加。不断累计之下,可能会导致故障的进一步加剧,可能会导致级联式的失败,甚至导致整个系统崩溃,这就叫服务雪崩。
17.Hystrix断路器是什么
Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
"断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中得蔓延,乃至雪崩。
18.什么是服务降级、服务熔断、服务隔离
- 服务降级:当出现请求超时、资源不足时(线程或者信号量),会进行服务降级,就是去返回fallback方法的结果。
- 服务熔断:当失败率(网络故障或者超时造成)达到阈值自动触发降级,是一种特殊的降级。
- 服务隔离:为隔离的服务开启一个独立的线程,这样在高并发情况下,也不影响该服务。一般使用线程池实现(还有信号量方式实现)。
19.服务降级和服务熔断的区别
- 服务熔断是应对系统服务雪崩的一种保险措施,给出的一种特殊降级措施。而服务降级则是更加宽泛的概念,主要是对系统整体资源的合理分配以应对压力。
- 服务熔断是服务降级的一种特殊情况,他是防止服务雪崩而采取的措施。系统发生异常或者延迟或者流量太大,都会触发该服务的服务熔断措施,链路熔断,返回兜底方法。这是对局部的一种保险措施。
- 服务降级是对系统整体资源的合理分配。区分核心服务和非核心服务。对某个服务的访问延迟时间、异常等情况做出预估并给兜底方法。这是一种全局性的考量,对系统整体负荷进行管理。
20.什么是Zuul微服务网关
Zuul作为微服务系统的网关组件,是从设备和网站到应用程序后端的所有请求的前门。Zuul作为整个应用的流量入口,接受所有的请求,如app、网页等,并且将不同的请求转发至不同的处理微服务模块。作为边缘服务应用程序,Zuul旨在实现动态路由,监控,弹性和安全性。
21.Zuul的应用场景
- 黑白名单
- 日志
- 协议适配
- 权限认证
- 降级限流
- 路由
22.Gateway
功能强大丰富,性能好,维护性好,实现异步,可以替代Zuul网关。
23.什么是SpringCloud Config
集中管理配置文件,不需要每个服务编写配置文件,服务会向配置中心拉取配置
24.Nacos可以做什么
注册中心和配置中心
25.Eureka保证的是AP,那么Nacos保证的什么?默认是什么
nacos可以是AP也可以是CP,默认是AP。