对于目前来讲,微服务已是程序员必会的技能之一了。Spring Cloud 做为一个优质的微服务框架,已经被不少公司使用。如下小编给你们整理35道Spring Cloud 的知识点,或者说是面试题都不冲突。后续还会继续更新⛽️
Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的一些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。它们能够在任何分布式环境中正常工做,包括开发人员本身的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。程序员
所谓的微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务可以独立运行。微服务设计原则:面试
一、各司其职 。算法
二、服务高可用和可扩展性。spring
Spring Cloud专一于为典型的用例和可扩展性机制(包括其余用例)提供良好的开箱即用体验。后端
Eureka : 注册中心安全
Ribbon :客服端负载均衡服务器
Hystrix : 服务容错处理网络
Feign: 声明式REST客户端架构
Zuul : 服务网关并发
Config : 分布式配置
HTTP
云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
服务注册中心:提供服务注册与发现的能力。
服务提供者:提供服务的应用,会把本身提供的服务注册到注册中心。
服务消费者:服务的消费者,从注册中心获取服务列表。
在注册完服务之后,服务提供者会维护一个心跳来向注册中心证实本身还活着,以此防止被“剔除服务”。
当服务实例进行正常关闭时,会发送一个REST请求(我要下线了)给注册中心,收到请求后,将该服务状态设置下线(DOWN),并把这事件传播出去。
当服务非正常下线时,可能服务注册中心没有收到下线请求,注册中心会建立一个定时任务(默认60s)将没有在固定时间(默认90s)内续约的服务剔除掉。
在运行期间,注册中心会统计心跳失败比例在15分钟以内是否低于85%,若是低于的状况,注册中心会将当前注册实例信息保护起来,再也不删除这些实例信息,当网络恢复后,退出自我保护机制。
自我保护机制让服务集群更稳定、健壮。
提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
@LoadBalanced
RandomRule : 随机。
RoundRobinRule : 轮询。
RetryRule : 重试。
WeightedResponseTimeRule : 权重。
ClientConfigEnabledRoundRobinRule : 通常不用,经过继承该策略,默认的choose就实现了线性轮询机制。能够基于它来作扩展。
BestAvailableRule : 经过便利负载均衡器中维护的全部服务实例,会过滤到故障的,并选择并发请求最小的一个。
PredicateBasedRule : 先过滤清单,再轮询。
AvailabilityFilteringRule :继承了父类的先过滤清单,再轮询。调整了算法。
ZoneAvoidanceRule : 该类也是PredicateBasedRule的子类,它能够组合过滤条件。以ZoneAvoidancePredicate为主过滤条件,以AvailabilityPredicate为次过滤条件。
服务熔断的做用相似于咱们家用的保险丝,当某服务出现不可用或响应超时的状况时,为了防止整个系统出现雪崩,暂时中止对该服务的调用。
服务降级是当服务器压力剧增的状况下,根据当前业务状况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
熔断器,容错管理工具,旨在经过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
HystrixCommand 或者 HystrixObservableCommand对象中。
@EnableHystrix
Feign是一种声明式、模板化的HTTP客户端。
1.feign采用的是基于接口的注解。
2.feign整合了ribbon,具备负载均衡的能力。
3.整合了Hystrix,具备熔断的能力。
配置管理工具包,让你能够把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
Config Server : 配置中心服务端。
Config Client : 配置中心客户端。
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 至关因而设备和 Netflix 流应用的 Web 网站后端全部请求的前门。
过滤器。
4种。
pre : 能够在请求被路由以前调用。
适用于身份认证的场景,认证经过后再继续执行下面的流程。
route : 在路由请求时被调用。
适用于灰度发布场景,在将要路由的时候能够作一些自定义的逻辑。
post :在 route 和 error 过滤器以后被调用。
这种过滤器将请求路由到达具体的服务以后执行。适用于须要添加响应头,记录响应日志等应用场景。
error : 处理请求时发生错误时被调用。
在执行过程当中发送错误时会进入 error 过滤器,能够用来统一记录错误信息。
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操做,为SpringCloud应用实现了一种分布式追踪解决方案。
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
A:高可用 C:一致性,P:分区容错性
Zookeeper保证了CP,Eureka保证了AP。
Eureka能够很好的应对因网络故障致使部分节点失去联系的状况,而不会像Zookeeper那样使整个微服务瘫痪。
数据流操做开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
Dubbo Motan Tars gRPC Thrift
文章持续更新中,⛽️。另外 博主整理 + 原创 15万字面试题,包括17个专题。欢迎你们关注“Java小咖秀”回复“面试”便可得到Java小咖秀面试笔记.pdf