志在指尖
用双手敲打未来

SpringCloud面试题及答案

1.什么是springcloud?
springcloud是一系列结构的有序集合。它利用springboot的开发便利性奇妙地简化了分布式体系基础设施的开发,如服务发现注册、装备中心、音讯总线、负载均衡、断路器、数据监控等,都能够用springboot的开发风格做到一键发动和布置。
2.springcloud断路器的效果是什么?
在分布式架构中,断路器形式的效果也是相似的,当某个服务单元发作毛病(相似用电器发作短路)之后,经过断路器的毛病监控(相似熔断保险丝),向调用方返回一个过错呼应,而不是长时刻的等候。这样就不会使得线程因调用毛病服务被长时刻占用不开释,避免了毛病在分布式体系中的蔓延。JAVA
3.springcloud的中心组件有哪些?
Eureka:服务注册于发现。
Feign:根据动态署理机制,依据注解和挑选的机器,拼接恳求url地址,发起恳求。
Ribbon:完成负载均衡,从一个服务的多台机器中挑选一台。
Hystrix:供给线程池,不同的服务走不同的线程池,完成了不同服务调用的阻隔,避免了服务雪崩的问题。
Zuul:网关办理,由Zuul网关转发恳求给对应的服务。
4.SpringCloud和Dubbo
SpringCloud和Dubbo都是现在干流的微服务架构
SpringCloud是Apache旗下的Spring体系下的微服务处理方案
Dubbo是阿里系的分布式服务管理结构
从技能维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身仅仅完成了服务管理,而SpringCloud现在以及有21个子项目今后还会更多
所以其实许多人都会说Dubbo和SpringCloud是不公平的
可是因为RPC以及注册中心元数据等原因,在技能选型的时分咱们只能二者选其一,所以咱们常常为用他俩来对比
服务的调用办法Dubbo运用的是RPC长途调用,而SpringCloud运用的是RestAPI,其实更符合微服务官方的界说
服务的注册中心来看,Dubbo运用了第三方的ZooKeeper作为其底层的注册中心,完成服务的注册和发现,SpringCloud运用SpringCloudNetflixEureka完成注册中心,当然SpringCloud也能够运用ZooKeeper完成,但一般咱们不会这样做
服务网关,Dubbo并没有本身的完成,只能经过其他第三方技能的整合,而SpringCloud有Zuul路由网关,作为路由服务器,进行顾客的恳求分发,SpringCloud还支撑断路器,与git完美集成分布式装备文件支撑版别操控,事务总线完成装备文件的更新与服务主动装配等等一系列的微服务架构要素
从技能选型上讲~
目前国内的分布式体系选型主要仍是Dubbo究竟国产,而且国内工程师的技能熟练程度高,而且Dubbo在其他维度上的缺陷能够由其他第三方结构进行集成进行弥补
而SpringCloud目前是国外比较盛行,当然我觉得国内的商场也会慢慢的倾向SpringCloud,就连刘军作为Dubbo重启的担任人也宣布过观点,Dubbo的发展方向是积极适应SpringCloud生态,并不是起冲突
Rest和RPC对比
其实如果仔细阅读过微服务提出者马丁福勒的论文的话能够发现其界说的服务间通讯机制便是HttpRest
RPC最主要的缺陷便是服务供给方和调用办法之间依靠太强,咱们需求为每一个微服务进行接口的界说,并经过持续承继发布,需求严厉的版别操控才不会呈现服务供给和调用之间因为版别不同而产生的冲突
而REST是轻量级的接口,服务的供给和调用不存在代码之间的耦合,仅仅经过一个约定进行规范,但也有或许呈现文档和接口不一致而导致的服务集成问题,但能够经过swagger工具整合,是代码和文档一体化处理,所以REST在分布式环境下比RPC更加灵活
这也是为什么当当网的DubboX在对Dubbo的增强中增加了对REST的支撑的原因
文档质量和社区活跃度
SpringCloud社区活跃度远高于Dubbo,究竟因为梁飞团队的原因导致Dubbo停止更新迭代五年,而中小型公司无法承当技能开发的本钱导致Dubbo社区严重低落,而SpringCloud异军突起,敏捷占据了微服务的商场,背靠Spring混的风生水起
Dubbo经过多年的堆集文档适当老练,对于微服务的架构体系各个公司也有安稳的现状
5.SpringBoot和SpringCloud
SpringBoot是Spring推出用于处理传统结构装备文件冗余,装配组件冗杂的根据Maven的处理方案,旨在快速建立单个微服务
而SpringCloud专心于处理各个微服务之间的和谐与装备,服务之间的通讯,熔断,负载均衡等
技能维度并相同,而且SpringCloud是依靠于SpringBoot的,而SpringBoot并不是依靠与SpringCloud,甚至还能够和Dubbo进行优异的整合开发
总结:
SpringBoot专心于快速便利的开发单个个其他微服务
SpringCloud是关注大局的微服务和谐收拾管理结构,整合并办理各个微服务,为各个微服务之间供给,装备办理,服务发现,断路器,路由,事情总线等集成服务
SpringBoot不依靠于SpringCloud,SpringCloud依靠于SpringBoot,属于依靠关系
SpringBoot专心于快速,便利的开发单个的微服务个别,SpringCloud关注大局的服务管理结构
6.微服务之间是怎么独立通讯的
1.长途过程调用(RemoteProcedureInvocation):
也便是咱们常说的服务的注册与发现
直接经过长途过程调用来拜访其他service。
长处:
简略,常见,因为没有中间件署理,体系更简略
缺陷:
只支撑恳求/呼应的形式,不支撑其他,比方告诉、恳求/异步呼应、发布/订阅、发布/异步呼应
降低了可用性,因为客户端和服务端在恳求过程中有必要都是可用的
2.音讯:
运用异步音讯来做服务间通讯。服务间经过音讯管道来交流音讯,然后通讯。
长处:
把客户端和服务端解耦,更松耦合
进步可用性,因为音讯中间件缓存了音讯,直到顾客能够消费
支撑许多通讯机制比方告诉、恳求/异步呼应、发布/订阅、发布/异步呼应
缺陷:
音讯中间件有额外的杂乱
7.负载均衡的含义是什么?
在核算中,负载均衡能够改善跨核算机,核算机集群,网络链接,中央处理单元或磁盘驱动器等多种核算资源的作业负载分布。负载均衡旨在优化资源运用,最大吞吐量,最小呼应时刻并避免任何单一资源的过载。运用多个组件进行负载均衡而不是单个组件或许会经过冗余来进步可靠性和可用性。负载平衡一般涉及专用软件或硬件,例如多层交流机或域名体系服务进程。
8.springcloud怎么完成服务的注册?
1.服务发布时,指定对应的服务名,将服务注册到注册中心(eurekazookeeper)
2.注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。
9.什么是服务熔断?什么是服务降级
在杂乱的分布式体系中,微服务之间的相互调用,有或许呈现各式各样的原因导致服务的堵塞,在高并发场景下,服务的堵塞意味着线程的堵塞,导致当时线程不可用,服务器的线程全部堵塞,导致服务器溃散,因为服务之间的调用关系是同步的,会对整个微服务体系形成服务雪崩
为了处理某个微服务的调用呼应时刻过长或许不可用从而占用越来越多的体系资源引起雪崩效应就需求进行服务熔断和服务降级处理。
所谓的服务熔断指的是某个服务毛病或异常一同相似显示世界中的“保险丝”当某个异常条件被触发就直接熔断整个服务,而不是一直等到此服务超时。
服务熔断便是适当于咱们电闸的保险丝,一旦发作服务雪崩的,就会熔断整个服务,经过维护一个自己的线程池,当线程达到阈值的时分就发动服务降级,如果其他恳求继续拜访就直接返回fallback的默认值
10.微服务的优缺陷别离是什么?说下你在项目开发中碰到的坑
长处
每一个服务满足内聚,代码容易理解
开发功率进步,一个服务只做一件事
微服务能够被小团队独自开发
微服务是松耦合的,是有功用含义的服务
能够用不同的言语开发,面向接口编程
易于与第三方集成
微服务仅仅事务逻辑的代码,不会和HTML,CSS或许其他界面组合
开发中,两种开发形式
前后端分离
全栈工程师
能够灵活调配,衔接公共库/衔接独立库
缺陷
分布式体系的担任性
多服务运维难度,随着服务的增加,运维的压力也在增大
体系布置依靠
服务间通讯本钱
数据一致性
体系集成测验
功用监控
11.你所知道的微服务技能栈?
维度(springcloud)
服务开发:springbootspringspringmvc
服务装备与办理:Netfix公司的Archaiusm,阿里的Diamond
服务注册与发现:Eureka,Zookeeper
服务调用:RestRPCgRpc
服务熔断器:Hystrix
服务负载均衡:RibbonNginx
服务接口调用:Fegin
音讯行列:KafkaRabbitmqactivemq
服务装备中心办理:SpringCloudConfig
服务路由(API网关)Zuul
事情音讯总线:SpringCloudBus
12.Eureka和ZooKeeper都能够供给服务注册与发现的功用,请说说两个的差异
1.ZooKeeper确保的是CP,Eureka确保的是AP
ZooKeeper在选举期间注册服务瘫痪,尽管服务终究会康复,可是选举期间不可用的
Eureka各个节点是相等关系,只需有一台Eureka就能够确保服务可用,而查询到的数据并不是最新的
自我维护机制会导致
Eureka不再从注册列表移除因长时刻没收到心跳而应该过期的服务
Eureka依然能够承受新服务的注册和查询恳求,可是不会被同步到其他节点(高可用)
当网络安稳时,当时实例新的注册信息会被同步到其他节点中(终究一致性)
Eureka能够很好的应对因网络毛病导致部分节点失去联系的状况,而不会像ZooKeeper相同使得整个注册体系瘫痪
2.ZooKeeper有Leader和Follower人物,Eureka各个节点相等
3.ZooKeeper选用过半数存活原则,Eureka选用自我维护机制处理分区问题
4.Eureka本质上是一个工程,而ZooKeeper仅仅一个进程
13.eureka自我维护机制是什么?
当EurekaServer节点在短时刻内丢失了过多实例的衔接时(比方网络毛病或频频发动封闭客户端)节点会进入自我维护形式,维护注册信息,不再删除注册数据,毛病康复时,主动退出自我维护形式。
14.什么是Ribbon?
ribbon是一个负载均衡客户端,能够很好的操控htt和tcp的一些行为。feign默认集成了ribbon。
15.什么是feigin?它的长处是什么?
1.feign选用的是根据接口的注解
2.feign整合了ribbon,具有负载均衡的才能
3.整合了Hystrix,具有熔断的才能
运用:
1.增加pom依靠。
2.发动类增加@EnableFeignClients
3.界说一个接口@FeignClient(name=“xxx”)指定调用哪个服务
16.Ribbon和Feign的差异?
1.Ribbon都是调用其他服务的,但办法不同。
2.发动类注解不同,Ribbon是@RibbonClientfeign的是@EnableFeignClients
3.服务指定的方位不同,Ribbon是在@RibbonClient注解上声明,Feign则是在界说笼统办法的接口中运用@FeignClient声明。
4.调用办法不同,Ribbon需求自己构建http恳求,模拟http恳求然后运用RestTemplate发送给其他服务,步骤适当繁琐。Feign需求将调用的办法界说成笼统办法即可。
17.什么是SpringCloudBus?
springcloudbus将分布式的节点用轻量的音讯署理衔接起来,它能够用于播送装备文件的更改或许服务直接的通讯,也可用于监控。
如果修改了装备文件,发送一次恳求,一切的客户端便会从头读取装备文件。
运用:
1.增加依靠
2.装备rabbimq
18.什么是Hystrix?
防雪崩利器,具有服务降级,服务熔断,依靠阻隔,监控(HystrixDashboard)
服务降级:
双十一提示哎哟喂,被挤爆了。app秒杀网络开小差了,请稍后再试。
优先中心服务,非中心服务不可用或弱可用。经过HystrixCommand注解指定。
fallbackMethod(回退函数)中详细完成降级逻辑。
19.springcloud断路器效果?
当一个服务调用另一个服务因为网络原因或自身原因呈现问题,调用者就会等候被调用者的呼应当更多的服务恳求到这些资源导致更多的恳求等候,发作连锁效应(雪崩效应)
断路器有彻底打开状况:一段时刻内达到必定的次数无法调用而且屡次监测没有康复的痕迹断路器彻底打开那么下次恳求就不会恳求到该服务
半开:短时刻内有康复痕迹断路器会将部分恳求发给该服务,正常调用时断路器封闭
封闭:当服务一直处于正常状况能正常调用
20.什么是SpringCloudConfig?
在分布式体系中,因为服务数量巨多,为了便利服务装备文件一致办理,实时更新,所以需求分布式装备中心组件。在SpringCloud中,有分布式装备中心组件springcloudconfig,它支撑装备服务放在装备服务的内存中(即本地),也支撑放在长途Git仓库中。在springcloudconfig组件中,分两个人物,一是configserver,二是configclient。
运用:
1、增加pom依靠
2、装备文件增加相关装备
3、发动类增加注解@EnableConfigServer
21.架构?
在微服务架构中,需求几个基础的服务管理组件,包含服务注册与发现、服务消费、负载均衡、断路器、智能路由、装备办理等,由这几个基础组件相互协作,一起组建了一个简略的微服务体系
在SpringCloud微服务体系中,一种常见的负载均衡办法是,客户端的恳求首先经过负载均衡(zuul、Ngnix),再抵达服务网关(zuul集群),然后再到详细的服。,服务一致注册到高可用的服务注册中心集群,服务的一切的装备文件由装备服务办理,装备服务的装备文件放在git仓库,便利开发人员随时改装备。

未经允许不得转载:IT技术网站 » SpringCloud面试题及答案
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载