1. 微服务
1.1. 什么是微服务?
对大项目的拆分。
1.2. 微服务面临的4个问题?
- 客户端怎么访问?
- 微服务模块之前如何通信?
- 微服务如何治理?
- 服务挂了怎么办?
2. SpringCloud
是解决微服务面临问题的生态。
2.1. SpringCloud与SpringBoot的关系
- SpringBoot专注于快速方便的开发单个微服务
- SpringCloud关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个微服务整合并管理起来,为各个微服务提供:配置管理,服务发现,断路器?、路由、微代理,事件总线、全局锁、决策竞选、分布式会话等集成服务。
- SpringBoot可以离开SpringCloud独立使用、开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。
- 即,
SpringBoot专注于快速、方便的开发单个个体微服务
,SpringCloud关注全局的服务治理
。
2.2 传统架构
2.3 解决方案
- Spring Cloud NetFlix:一站式解决
- API网关 zuul组件
- Feign—HttpClient—Http通信方式 同步、阻塞
- 服务注册与发现:Eureka
- 熔断机制:Hystrix
- Apache Dubbo+Zookeeper 半自动化 需要整合别人的
- API网关:
没有
找第三方组件、或者自己实现- Dubbo 高效的RPC通信框架
- Zookeeper: 服务注册与发现
- 熔断机制:
没有
借助Hystrix
- Spring Cloud Alibaba
更简单
- Dubbo Proxy
- Dubbo RPC
- Nacos
- Sentinel
Dubbo的定位是一款RPC框架,SpringCloud的目标是微服务架构下的一站式解决方案。
2.4 官网:
NetFlix官网链接:https://www.springcloud.cc/spring-cloud-netflix.html
中文官网:https://www.springcloud.cc/spring-reference.html
中文开发文档:https://www.springcloud.cc/spring-cloud-dalston.html
3. 服务注册与发现
Eureka
4. 负载均衡
把多个请求
均摊
到不同的服务器上,从而实现高可用。
4.0 CAP原则
4.1. Ribbon
4.2. Fegin
5. Hystrix
服务熔断、服务降级和流监控。
官网:https://github.com/Netflix/Hystrix/wiki
参考:https://blog.csdn.net/www1056481167/article/details/81157171
5.0. 分布式面临的问题?
复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候
将不可避免
的失败。
什么是服务雪崩?
多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的资源,进而引起系统崩溃,所谓的
"雪崩效应"
。
对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。而对于这类应用,比失败更糟糕的情况是:服务间的延迟增加,备份队列、线程和其他资源紧张,导致整个系统发生更多的级联故障。这些都表示,需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能影响整个系统。
弃车保帅
Hystrix是什么?
Hystrix是一个用于分布式系统的
延迟
和容错
的开源库。在分布式系统里,许多依赖不可避免的调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。
服务熔断
出现异常的时候,走另一条路,返回默认的结果。
在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体
的措施就叫做熔断
。