SpringCloud
SpringCloud的理解?
SpringCloud是关注全局的服务协调治理框架,它利用 Spring Boot 的开发便利性简化了分布式系统基础设施的开发,提供了如服务注册与发现、负载均衡、配置中心、消息总线、熔断器、数据监控等等组件,都可以用 spring boot 的开发风格做到一键启动和部署,所以叫它”全家桶”。
SpringCloud 的核心组件有哪些?
(1) 服务注册与发现中心Eureka(类似Nacos);
(2) 负载均衡器Ribbon:从一个服务的多台机器中选择一台;
(3) 服务调用工具Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求;
(4) 熔断器Hystrix:熔断器就好比家里电路装置的“保险”,当电路断路,那么“保险”装置的“保险丝”就会被熔断,从而达到断开电路的效果,以防止不良后果。而Spring Cloud Hystrix 实现了熔断器,线程隔离等一些列的服务保护功能,当Hystrix判定请求出现故障,会立马对请求做出响应动作,不会继续执行正常请求逻辑,请求线程也不会处于阻塞状态,从而有效防止雪崩效应;
(5) 服务网关Zuul:由 Zuul 网关转发请求给对应的服务;
(6) 分布式配置Config;
(7) 消息总线Bus;
我们将Spring Cloud的5个核心组件通过一张图串联起来,再来直观的感受一下其底层的架构原理:
springcloud 与dubbo有哪些区别?
说明:Dubbo是阿里开源的分布式服务框架,一般发音,[?d?b??]音似double;
Dubbo只是实现了服务治理,而SpringCloud分别覆盖了微服务架构的下的方方面面,服务治理只是其中的一个方面。
SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者REST牺牲了服务调用的性能,但也避免了RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
常见面试题
(1)项目中用过springCloud中的哪些组件?(蓝月亮1年)
(2)springcloud 与dubbo有哪些区别?
(3) SpringCloud的理解?
参考好文:
(1)拜托!面试请不要再问我Spring Cloud底层原理 --
https://juejin.im/post/5be13b83f265da6116393fc7
(2)《Spring Boot实战》-- 汪云飞 编著