Spring Cloud面试题总结

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 https://blog.csdn.net/weixin_43863007/article/details/89048595
1. 什么是Springcloud?
  • Springcloud是目前微服务架构领域的翘楚,微服务是将工程根据不同的业务规则拆分成微服务,微服务部署在不同的机器上,服务之间进行相互调用,Java的微服务框架有dubbo(只能用来做微服务),Springcloud(提供了服务的发现,断路器等)
2. SpringBoot和SpringCloud
  • SpringBoot是Spring退出用于解决传统框架配置文件多余,装配组件繁杂的基于maven的解决方案,旨在快速搭建单个微服务
  • Springcloud专注于解决各个微服务之间的协调与配置,服务之间的通信,熔断,负载均衡等技术未付不相同,并且Springcloud是依赖于Springboot的,而Springboot并不依赖springcloud,甚至还可以和Dubbo进行优秀的整合开发
  • 总结:
  1. SpringBoot专注于快速方便的开发单个个体的微服务
  2. SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供配置管理,服务发现,断路器,路由,时间总线等集成服务
  3. SpringBoot不依赖于SpringCloud,springcloud依赖于SpringBoot
  4. Springboot专注于快速开发,方便的开发单个的微服务个体,Springcloud关注全局的服务治理框架
3. 服务注册和发现是什么意思?Springcloud如何实现?
  • 当我们开始一个项目时,我们通常在属性文件中进行所有的配置,随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂,有些服务可能会下降,而某些位置可能会发生变化,手动更改属性可能会产生问题,Eureka服务注册和发现在这种情况下提供帮助,由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理
  • 服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者zookeeper),这一过程是springcloud自动实现 只需要在main方法添加@EnableDisscoveryClient 同一个服务修改端口就可以启动多个实例,调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务
4. 负载平衡的意义是什么?
  • 在计算机中,负载平衡可以改善跨计算机,计算机集群,网络连接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布,负载平衡旨在优化资源使用,最大化吞吐量,最小化影响时间并避免任何单一资源的过载,使用多个组件进行负载平衡而不是单个组件肯呢个会通过冗余来提高可靠性和可用性,负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程
5. 什么是服务熔断?什么是服务降级?
  • 在复杂的分布式系统中,微服务之间的相互调用,有肯呢个出现各种各样的原因导致服务的阻塞,在高并发场景下,服务的阻塞意味着线程的阻塞,导致当前线程不可用,服务器的线程全部阻塞,导致服务器崩溃,由于服务之间的调用关系是同步的,会对整个微服务系统造成服务雪崩
  • 为了解决某个微服务的调用响应时间过长或者不可用进而占用越来越多的系统资源引起的雪崩效应就需要进行服务熔断和服务降级处理
  • 所谓的服务熔断值得是某个服务故障或异常引起的类似显示世界中的保险丝当某个异常条件被触发就直接熔断整个服务,而不是一直等到此服务超时
  • 服务熔断就是相当于我们电闸的保险丝,一旦发生服务雪崩的,就会熔断整个服务,通过维护一个自己的线程池,当线程达到阈值的时候就启动服务降级,如果其他请求继续访问就直接返回fallback的默认值
6. 微服务的优缺点分别是什么?
  • 优点:
  1. 每一个服务足够内聚,代码容易理解
  2. 开发效率高,一个服务只做一件事
  3. 微服务能够被小团队单独开发
  4. 微服务是松耦合的,是有功能意义的服务
  5. 可以用不同的语言开发,面向接口编程
  6. 易于与第三方继承
  7. 微服务只是业务逻辑的代码,不会和html。Css或者其他界面组合
  8. 可以灵活搭配,连接公共库/连接独立库
  • 缺点:
  1. 分布式系统的负责性
  2. 多服务运维难度,随着服务的增加,运维的压力也在增大
  3. 系统部署依赖
  4. 服务间通信成本高
  5. 数据一致性
  6. 系统集成测试
  7. 性能监控
7.你所知道的微服务技术栈有哪些?
  • 服务开发:SpringBoot,Spring,SpringMVC
  • 服务配置与管理:Netfilx公司的Archaiusm,阿里的Diamond
  • 服务注册与发现:Eureka,ZooKeeper
  • 服务调用:Rest,RPC,gRPC
  • 服务熔断器:Hystrix
  • 服务负载均衡:Ribbon,Nginx
  • 服务接口调用:Feign
  • 消息队列:Kafka,RabbitMq,ActiveMq
  • 服务配置中心管理:SpringCloudConfing
  • 服务路由(API网关):Zuul
  • 事件消息总线:SpringCloud Bus

猜你喜欢

转载自blog.csdn.net/weixin_43863007/article/details/89048595