1. 什么是SpringCloud?
- 微服务架构是一种风格,是一个种思想
- SpringCloud是具体的落地实现,是技术栈
- Eureka、Ribbon、OpenFeign、Hystrix、Zuul、Config、Bus…Nacos
2. 微服务存在问题?
- 数量多,调用关系复杂【服务注册与发现 ---- Eureka/Nacos】
- 服务之间如何相互通信【Ribbon/Feign】
- 服务熔断与降级【Hystrix】
- 统一拦截或过滤【Zuul】
- 分布式配置中心【Config、Bus(RabbitMQ)】
3. 服务注册与发现的工作原理
4. 微服务的框架有dubbo,为什么就要使用Spring Cloud的呢?
- 组件丰富,功能齐全
- 社区活跃度很高
- 服务拆分粒度更细,耦合度比较低
- 微服务可以是跨平台的
5. SpringCloud缺点
- 微服务过多,治理成本高,不利于维护系统
- 分布式系统开发的成本高
6. SpringBoot和SpringCloud的区别?
- SpringBoot专注于快速方便的开发单个个体微服务。
- SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
- SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot
7. 使用 Spring Boot 开发分布式微服务时,面临问题?
- 开销,包括网络问题,延迟开销,带宽问题,安全问题。
- 分布式系统中的冗余问题
- 服务发现工具管理群集中的流程和服务如何查找和互相交谈
- 负载均衡改善跨多个计算资源的工作负荷
- 由于各种运营开销导致的性能问题
- 部署复杂
8. 服务注册和发现是什么意思?Spring Cloud 如何实现?
- 随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
- Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。
9. Spring Cloud 和dubbo区别?
- 服务调用方式 dubbo是RPC(远程过程调用)协议, springcloud 是Rest Api
- 注册中心,dubbo 是zookeeper ,springcloud是eureka,也可以是zookeeper
- 服务网关 ,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
10. 负载均衡的意义?
- 优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载
- 使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性
11. 什么是 Hystrix?它如何实现容错?
-
Hystrix 是一个延迟和容错库
-
服务降级:某个服务不可用时,让对应的接口快速返回一个失败的结果
-
线程隔离:
客户端请求到微服务:使用的是Tomcat的线程池
微服务之间的调用:使用的Hystrix的线程池 -
信号量:由信号量来合理的分配Tomcat的线程池
-
工作原理
12. 什么是 Feign?它的优点是什么?
- 可以把服务之间的调用过程,变成基于接口的调用方法
13. 什么是Spring Cloud Config?
- 服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。
14. 什么是Spring Cloud Gateway?
- Spring Cloud官方推出的第二代网关框架,取代Zuul网关。