1.使用spring cloud有什么优缺点?

缺点:跟单机项目比较复杂度高,调用复杂,需要使用远程调用,
部署复杂度高,不像单体项目单独一个jar包或者war包就行。
性能问题,由于各种运营开销导致的性能问题。

优点:系统并发量高,分模块开发

微服务架构演变过程:
传统架构单点应用—->分布式架构—->SOA面向服务架构—->微服务架构

2.服务注册和发现是什么意思?spring cloud如何实现?

可以使用nacos实现注册和发现,将所有服务的信息注册到nacos,进行远程调用的时候,
可以从nacos获取服务信息进行通讯。

3.spring cloud有哪些常用组件?

nacos(注册和配置中心)
feign(远程调用)
gataway(网关)
Ribbon(是一个基于HTTP和TCP的客户端负载均衡器)
Sentinel(哨兵:流量控制、熔断降级、系统负载)
seata(分布式事务)
Sleuth(链路追踪)一般整合zipkin(功能太单一,不建议使用),实际项目中一般不用,一般用skywalking,功能更强大

4.nacos的作用?

nacos可以作为服务的注册和配置中心,
注册中心:每个微服务的模块将信息注册到nacos,进行服务治理,
可以查看到所有注册到nacos的服务,可以监控服务是否启动
配置中心:可以通过namespace(命名空间)、group进行分类,比如可以通过不同的namespace来进行生产环境和
测试环境的区分

5.在Nacos中服务提供者是如何向Nacos注册中心(Registry)续约的?

5秒心跳检测

6.feign远程调用的过程是怎么样的?

实现:
启动类加上@EnableFeignClients
声明一个调用接口@FeignClient,包含id,调用的值,还有前缀路径,fallbackFactory的熔断工厂
被调用模块的该方法跟FeignClient接口里面的路径和http协议要一致(get或者post)
直接注入FeignClient接口直接调用就行

feign调用过程分析:
1).通过@EnableFeignClients注解告诉springcloud,启动FeignStart组件。
2).FeignStart在项目启动过程中注册全局配置,扫描包下所有@FeignStarter组件。
3).接口被调用时被动态代理类逻辑拦截,将@FeignClient请求信息通过编码器生成
Request对象,基于此对象进行远程调用过程调用。
4).请求对象经Ribbon进行负载均衡,挑出一个健康的server实例。
5).通过client携带Request调用远端服务返回请求响应。
6).通过解码器生成Response返回客户端,将信息流解析成为接口返回数据。

7.解释下微服务里面的熔断机制,你是怎么实现的/雪崩效应是什么,你是怎么解决的?

熔断机制就是在特定的情况下关掉当前通路,从而起到保护整个系统的效果。
在微服务架构中,一般我们的独立服务是比较多的,每个服务之间划分责任边界,并通过
约定协议接口来进行通信。当我们的调用链路复杂依赖多时,很可能会发生雪崩效应。
一句话解释:服务中某个服务访问时间过长造成的连锁效应

8.什么是服务限流,服务熔断,服务降级?

服务限流:在高并发的情况下,如果客户端请求的数量达到了一定的极限(后台可以设置阈值),请求的数量
超出了设置的阈值,请求的数量超出了设置的阈值,开启自我的保护,直接调用我们的服务降级的方法,
不会执行业务逻辑操作,直接走本地fallback的方法,返回一个友好的提示
一句话回答:防止服务到达极限,设置流控规则,到达流控规则直接走降级方法。

服务降级:在高并发的情况下,防止用户一直等待,采用限流/熔断方法,使用服务降级的方式
返回一个友好的提示给客户端,不会执行业务逻辑请求,直接走本地的fallback的方法。
一句话回答:防止用户一直等待,请求走降级方法

服务熔断:服务熔断是应对雪崩效应的一种微服务链路保护机制。
当服务链路中的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,
快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

9.Sentinel有哪些流控策略?

使用@SentinelResource注解,blockHandler设置降级方法

10.nginx与gataway的区别?

11.Sentinel 与hytrix区别

12.分布式事务的原理?

13.链路追踪的作用是什么,怎么实现的?

14.如何保证微服务接口的安全,服务接口保护有那些方案?

15.GateWay如何保证高可用和集群?