本文目录如下:
- 一、Spring Cloud基础知识
- 什么是微服务架构?
- 服务拆分 有哪些注意事项?
- 什么是分布式集群?
- 分布式的 CAP 原则?
- 组件 - Spring Cloud 哪几个组件比较重要?
- 组件 - 为什么要使用这些组件?
- 组件 - Nacos 和 Eureka(已停更) 有什么区别?
- 组件 - Ngnix 和 Ribbon 有什么区别?
- Ribbon 负载均衡的原理?
- 组件 - 什么是 服务降级 与 服务熔断?
- 微服务 中如何实现 远程调用?
- REST 和 RPC 远程调用有什么区别?
一、Spring Cloud基础知识
- SpringCloud入门教程 - 包含创建 Spring Cloud项目教程 - CSDN
- 写给小白看的Spring Cloud入门教程 - 掘金
- Spring Cloud 入门总结 - 掘金
什么是微服务架构?
微服务架构 就是根据业务 拆分软件模块,每个模块 单独运行,每个模块本身是 单体。
服务拆分 有哪些注意事项?
- 1.不同微服务, 不要重复开发 相同业务。
- 2.微服务 数据独立,不要访问其它微服务的 数据库。(一个微服务 对应 一个数据库)
- 3.微服务可以将 自己的业务 暴露为 接口,供其它微服务 调用。
什么是分布式集群?
- 分布式系统: 若干个程序部署在若干台不同的计算机上,它们通过 网络 协作完成一个服务。
- 集中式集群: 相同的程序, 在本机部署了多次, 有了 Docker 后这很轻松。
- 分布式集群: 若干个程序在 不同的计算机 上部署了 多次。(强调 容灾能力)
分布式的 CAP 原则?
CAP原则
: 指的是在一个分布式系统中,一致性
(Consistency)、可用性
(Availability)、分区容错性
(Partition tolerance)。- CAP原则 指的是: 这三个要素最多只能 同时实现两点,不可能 三者兼顾。
组件 - Spring Cloud 哪几个组件比较重要?
总体架构
Nacos
/Eureka
: 注册中心: 主管 服务的发现 与 相互调用。(还有 Zookeeper)Feign
: 服务远程调用Ribbon
: 负载均衡器Spring Cloud Gateway
、Zuul
: 服务网关Spring Cloud Config
: 配置中心Hystrix
: 服务监控和保护: 为 微服务 提供了 服务降级 与 熔断 的方案。
组件 - 为什么要使用这些组件?
- ~~Eureka与案例分析-Eureka解决什么问题?~- 已停更~ ——
Eureka 使用教程视频- Ribbon负载均衡原理-Ribbon解决什么问题?
- Nacos-认识和安装Nacos
- 基于 Feign 远程调用
组件 - Nacos 和 Eureka(已停更) 有什么区别?
- Nacos 支持 CP(不保证 可用性) 和 AP; Eureka 只支持 AP(不保证 一致性)。
- Nacos 的阈值是针对 某个具体Service 的,而不是针对所有服务的;但 Eureka 的自我保护阈值是针对 所有服务 的。
- Nacos 使用 Netty, 是 长连接; Eureka 是 短连接, 定时发送。
组件 - Ngnix 和 Ribbon 有什么区别?
Nginx
是 客户端 所有请求统一交给 Nginx,由 Nginx 进行实现 请求转发,属于 服务器端负载均衡。Ribbon
是从 Eureka注册中心 上获取 服务注册信息列表,缓存到本地,然后在 本地 实现 轮询负载均衡 策略。
Nginx
适合于 服务器端实现负载均衡 比如 Tomcat。Ribbon
适合与在微服务中 RPC远程调用 实现 本地服务负载均衡,比如 Dubbo、SpringCloud 中都是采用 本地负载均衡。
Ribbon 负载均衡的原理?
组件 - 什么是 服务降级 与 服务熔断?
服务降级
:
- 超时:当下游的服务响应过慢,上游服务主动停掉一些不太重要的业务,加快 响应速度。
- 程序运行异常:当 下游的服务 因为某种原因 不可用,上游 主动调用本地的一些 降级逻辑,加快 响应速度。
服务熔断
:
- 不调用该 失败的服务,直接返回,快速释放资源。
微服务 中如何实现 远程调用?
- 基于
RestTemplate
发起的 http请求 实现 远程调用。http请求
做 远程调用 是与语言无关的调用,只要知道对方的 ip、端口、接口路径、请求参数 即可。