SpringCloud02---SpringCloud入门概述
1. 微服务架构面临的四个核心问题
-
服务很多,客户端应该如何访问? --> API网关
-
这么多服务?服务之间如何通信? --> HTTP,RPC通信
-
这么多服务?如何治理? --> 服务注册与发现
-
服务挂了怎么办? --> 熔断机制
解决方案:Spring Cloud生态
1、SpringCloud NetFlix :一站式解决方案
-
api网关,zuul组件
-
通信: Feign ----HttpClinet ----Http通信方式,同步,阻塞
-
服务注册与发现:Eureka
-
熔断机制:Hysstrix
2、Apache Dubbo Zookeeper:半自动,需要整合别人的
-
API网关:没有,需要找第三方组件,或者自己实现
-
通信:Dubbo,异步非阻塞
-
服务注册与发现:Zookeeper
-
Dubbo这个方案并不完善
3、Spring Cloud Alibaba 一站式解决方案,更简单
常见面试题
1.1 什么是微服务?
1.2 微服务之间是如何独立通讯的?
1.3 SpringCloud 和 Dubbo有那些区别?
1.4 SpringBoot 和 SpringCloud,请谈谈你对他们的理解
1.5 什么是服务熔断?什么是服务降级?
1.6 微服务的优缺点分别是什么?说下你在项目开发中遇到的坑
1.7 你所知道的微服务技术栈有哪些?列举一二
1.8 Eureka和Zookeeper都可以提供服务注册与发现的功能,请说说两者的区别
2. Spring Cloud 五大组件
-
服务注册与发现——Netflix Eureka
-
负载均衡:
-
客户端负载均衡——Netflix Ribbon
-
服务端负载均衡:——Feign(其也是依赖于Ribbon,只是将调用方式RestTemplete 更改成Service 接口)
-
断路器——Netflix Hystrix
-
服务网关——Netflix Zuul
-
分布式配置——Spring Cloud Config
3. SpringCloud和SpringBoot的关系
-
SpringBoot专注于开发单个个体微服务
-
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务
-
SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系
-
SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架
4. Dubbo 和 SpringCloud技术选型
最大区别:Spring Cloud 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式
5. 参考文档
-
SpringCloud Netflix 中文文档:https://springcloud.cc/spring-cloud-netflix.html
-
SpringCloud 中文API文档(官方文档翻译版):https://springcloud.cc/spring-cloud-dalston.html
-
SpringCloud中国社区:http://springcloud.cn/
-
SpringCloud中文网:https://springcloud.cc