首页 > 其他分享 >SpringCloud面试题

SpringCloud面试题

时间:2022-11-28 14:11:35浏览次数:53  
标签:面试题 调用 服务 请求 SpringCloud 信号量 线程 分布式

1 Springcloud核心组件及其作用

1.1 Eureka: 服务注册与发现
注册:每个服务都向Eureka登记自己提供服务的元数据,包括服务IP地址,端口号,版本号,通信协议等。eureka将各个服务维护在一个服务清单中(双层Map,第一层key服务名,第二层key是实例名,value是服务地址加端口)。同时对服务维持心跳,剔除不可用的服务。
发现:eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。
1.2 Ribbon:服务间发起请求时,基于Ribbon做负载均衡。从一个服务的多台机器中选择一台,Ribbon是通过发起http请求进行调用 。
1.3 Feign: 基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求,简化服务间的调用。在引入Spring cloud feign后,我们只需要创建一个接口并用注解的方式来配置,即完成对服务提供方的接口绑定。调用远程就像调用本地服务一样。
1.3 Hystrix: 发起请求是通知Hystrix的线程池来走,不同的服务走不同的线程池,实现不同服务调用的隔离,通过统计接口超时次数返回默认值,实现服务熔断和降级。
1.4 Zuul: 如果前端,移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务,通过与Eureka进行整合,将自身注册为Eureka下的应用。Zuul还提供一套过滤器机制,开发者可以指定哪些规则的请求需要执行校验逻辑,通过了才会被路由到具体的服务实例上,否则就返回错误。

 

2 SpringCloud 和 Dubbo区别

SpringCloud是一个微服务框架,提供微服务中很多功能组件。基于RestFul API。
Dubbo是一个RPC调用框架,核心是解决服务调用间的问题。


3 SOA,分布式,微服务

3.1 SOA - 是一种面向服务的架构,系统的所有服务都注册在总线上,当调用服务时,从总线上查找服务信息。ESB(企业服务总线)
3.2 分布式 - 是指将单体架构的各个部分拆分,然后部署不同的机器或进程中。
3.3 微服务 - 是一种更彻底的面向服务的架构,将系统中各个功能个体抽成一个个小的应用程序,基本保持一个应用对应的一个服务架构。主要是中间层分解,将系统拆分成很多小应用(微服务),微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用,其代表框架有Spring cloud、Dubbo等。

4 集群和分布式的区别

集群是个物理形态,分布式是个工作方式。
    •    分布式:一个业务分拆多个子业务,部署在不同的服务器上
    •    集群:同一个业务,部署在多个服务器上

 

5 高并发场景下如何实现系统限流

三把利器来保护系统:缓存、降级和限流
限流一般需要结合容量规划和压测,当外部请求接近或达到系统最大阈值时,触发限流,采取其他的手段降级,保护系统。常见降级策略包括延迟处理,拒绝服务,随机拒绝等。
5.1 计数器法 - 临界点问题,已经不用了
5.2 滑动窗口计数法 - 将时间划分为细粒度的区间
漏桶算法:任意速率流入,从出口处限制请求速率,无法应对突发流量,相当于一个空桶+固定处理线程
令牌桶算法:假设一个大小恒定的桶,这个桶容量和设定阈值有关,桶里放很多令版,通过一个固定的速率,往里面放入令牌,如果桶满了,就把令牌丢掉。

6 Hystrix实现机制

分布式容错框架

  • 阻止故障的连锁反应,实现熔断
  • 快速失败,实现降级
  • 提供实时监控和告警

资源隔离:线程隔离,信号量隔离

线程隔离:Hystrix会给每个command分配一个单独的线程池,在里德单个服务调用 时就可以独立的线程池里面进行,而不会对其他线程池造成影响。

信号量隔离:客户端向依赖服务发起请求时,首先获取一个信号量才能发起调用 ,由于信号量的数量有限,当并发请求量超过信号量个数时,后续的请求都会拒绝。

 

标签:面试题,调用,服务,请求,SpringCloud,信号量,线程,分布式
From: https://www.cnblogs.com/ningshare/p/16931548.html

相关文章

  • 单链表面试题
    单链表的面试题1.求单链表中的有效节点的个数/****@paramheroNode链表的头结点*@return返回的就是有效节点的个数*/publicstat......
  • 【SpringCloud技术专题】「入门实战」微服务网关服务的Gateway全流程开发实践指南
    开发指南须知本次实践主要在项目提供了构建在Spring生态系统之上API网关。SpringCloudGateway的介绍SpringCloudGateway目标是用一个简单、有效的方式路由到API,并且提供......
  • 肖sir___阿里面试题__笔试题
    身份证:330184198903193110籍贯:浙江省杭州市余杭区良渚街道之前薪资12K期望薪资13K最近公司地址:杭州市西湖区文一西路522号(杭州百图科技有限公司)之前公司地址:杭州市拱墅区赵......
  • 作用域和闭包常见的面试题
    作用域和闭包常见的面试题作用域变量提升varscope="global";functionscopeTest(){console.log(scope);varscope="local"}scopeTest();//undefined......
  • springCloud将http请求网关更改为https请求
    如果需要将http请求换成https请求,大致需要三步。第一步:生成证书。网上有很多通过阿里云生成证书的教程。也有通过JDK生成证书。在jdk目录打开命令窗口,执行一下命令:keytoo......
  • 面试题收集
    秋招过后,根据学习群里很多小伙伴的反馈,发现在Java后端面试中,Redis是所有框架/中间件中被问到频率最高的。但是由于本身不熟悉Redis,再加上大厂的面试题也确实是很难,有些还......
  • SpringBoot面试题
    1SpringBoot启动Tomcat1.1Spring在启动时创建一个Spring容器1.2利用@ConditionalOnClass技术判断classpath中是否存丰Tomcat依赖,如果存在则生成一个启动Tomcat的Bean1.......
  • SpringCloud
    SpringCloud什么是springcloud?SpringCloud是⼀系列框架的有序集合。它利⽤SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼......
  • 面试题系列:MQ 夺命连环11问
      1.你们为什么使用mq?具体的使用场景是什么? mq的作用很简单,削峰填谷。以电商交易下单的场景来说,正向交易的过程可能涉及到创建订单、扣减库存、扣减活动预算、扣......
  • Linux面试题3:Linux零拷贝技术
    zero-copy技术Linux网络IO数据传输过程图整个操作过程中,做了四次用户态和内核态的状态切换,数据从网卡copy到内核缓冲区,再从内核缓冲区copy到user-space;写入时从user-spa......