SpringBoot 和 SpringCloud 是什么关系
Spring Boot 是 Spring 的一套快速配置脚手架, 可以基于 Spring Boot 快速开发单个 微服务, Spring Cloud 是一个基于 Spring Boot 实现的开发工具; Spring Boot 专注于 快速 、方便集成的单个微服务个体, Spring Cloud 关注全局的服务治理框架; Spring Boot 使用了默认大于配置的理念, 很多集成方案已经帮你选择好了, 能不配置就不配 置, Spring Cloud 很大的一部分是基于 Spring Boot 来实现, 必须基于 Spring Boot 开 发 。
可以单独使用 Spring Boot 开发项目, 但是 Spring Cloud 离不开 Spring Boot。
SpringCloud 都用过哪些组件 介绍一下作用
(1) Nacos--作为注册中心和配置中心, 实现服务注册发现和服务健康监测及配置信息 统一管理
(2) Gateway--作为网关, 作为分布式系统统一的出入口, 进行服务路由, 统一鉴权等
(3) OpenFeign--作为远程调用的客户端, 实现服务之间的远程调用
(4) Sentinel--实现系统的熔断限流
(5) Sleuth--实现服务的链路追踪
Nacos 作用以及注册中心的原理
Nacos 英文全称 Dynamic Naming and Configuration Service, Na 为naming/nameServer 即注册中心,co 为 configuration 即注册中心, service 是指该注册 /配置中心都是以服务为核心 。
Nacos 注册中心分为 server 与 client, server 采用 Java 编写, 为 client 提供注册发 现服务与配置服务 。而 client 可以用多语言实现, client 与微服务嵌套在一起, nacos 提供 sdk 和 openApi, 如果没有 sdk 也可以根据 openApi 手动写服务注册与发现和配 置拉取的逻辑 。
服务注册原理
服务注册方法: 以 Java nacos client v1.0.1 为例子, 服务注册的策略的是每 5 秒向 nacos server 发送一次心跳, 心跳带上了服务名, 服务 ip, 服务端口等信息 。同时 nacos server 也会向 client 主动发起健康检查, 支持 tcp/http 检查 。如果 15 秒内无 心跳且健康检查失败则认为实例不健康, 如果 30 秒内健康检查失败则剔除实例 。
Feign工作原理
主程序入口添加了@EnableFeignClients 注解开启对 FeignClient 扫描加载处理 。根据 Feign Client 的开发规范, 定义接口并加@FeignClient 注解 。当程序启动时, 会进行包扫 描, 扫描所有@FeignClient 的注解的类, 并且讲这些信息注入 Spring IOC 容器中, 当定义 的的 Feign 接口中的方法被调用时, 通过 JDK 的代理方式, 来生成具体的 RequestTemplate.当生成代理时, Feign 会为每个接口方法创建一个 RequestTemplate 。
当生成代理时, Feign 会为每个接口方法创建一个 RequestTemplate 对象, 该对象封装 HTTP 请求需要的全部信息, 如请求参数名, 请求方法等信息都是在这个过程中确定的 。 然后 RequestTemplate 生成 Request,然后把 Request 交给 Client 去处理, 这里指的时 Client 可以时 JDK 原生的 URLConnection,Apache 的 HttpClient,也可以时 OKhttp, 最后 Client 被封装到 LoadBalanceClient 类, 这个类结合 Ribbon 负载均衡发器服务之间的调用 。