文章目录
- 微服务框架
- 微服务面试篇
- 54 微服务篇
- 54.1 SpringCloud常见组件有哪些?
54 微服务篇
54.1 SpringCloud常见组件有哪些?
问题说明:这个题目主要考察对SpringCloud的组件基本了解
难易程度:简单
参考话术:
【脑子里面 要有一幅图:很多微服务放一块儿】
SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括:
- 注册中心组件:Eureka、Nacos等
- Eureka:服务发现【注册中心】
作用:实现服务治理【服务注册与发现】
Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。
由两个组件组成:Eureka服务端和Eureka客户端。
Eureka服务端用作服务注册中心。支持集群部署。
Eureka客户端是一个java客户端,用来处理服务注册与发现。
在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端会和服务端周期性的进行心跳交互,以更新服务租约和服务信息。
- Nacos:Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
- 负载均衡组件:Ribbon
- Ribbon【客服端 负载均衡】
作用:主要提供客户侧的软件负载均衡算法。
简介:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。
- 远程调用组件:OpenFeign【服务之间实现远程调用】
- OpenFeign
Feign是一个声明式的http客户端
其作用就是帮助我们优雅的实现http请求的发送.
- 网关组件:Zuul、Gateway
网关功能:
- 身份认证和权限校验
- 服务路由、负载均衡
- 请求限流【对微服务的保护措施】
- Zuul【服务网关】
作用:api 网关,路由,负载均衡等多种作用
简介:类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。
- Gateway
在SpringCloud中网关的实现包括两种:
- gateway
- zuul
Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。
- 服务保护组件:Hystrix、Sentinel
- Hystrix【断路器】
作用:断路器,保护系统,控制故障范围
简介:为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。
- Sentinel
为了避免业务请求真的来了很多,引入Sentinel
Sentinel 可以按照这个服务可以承受的频率,去释放请求【预防雪崩,而前面三种是已经出现故障 了,如何避免故障传递】
- 服务配置管理组件:SpringCloudConfig、Nacos
- SpringCloudConfig
作用:配置管理
简介:SpringCloud Config提供服务器端和客户端。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。这是静态的,动态的需要配合Spring Cloud Bus实现动态的配置更新。
- Nacos