1.什么是微服务?
微服务通俗来讲就是将代码组件化,把一个软件的各个服务分隔开来,方便代码的复用。
同步通信:dubbo通过 RPC 远程过程调用、springcloud通过 REST接口json调用等。
异步:消息队列,如:RabbitMq、ActiveMq、Kafka 等。
3.SpringCloud 和Dubbo 有什么区别?
(1)背景不同
Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。
SpringCloud 从命名我们就可以知道,它是Spring Source的产物.
(2)社区活跃度不同
在社区活跃度上,Spring Cloud毋庸置疑的优于Dubbo,这对于没有大量精力与财力维护这部分开源内容的团队来说,Spring Cloud会是更优的选择。
(3)架构完整度
(4)难易程度
SpringCloud相比Dubbo 来说简单了不少,所以如果想快速进入微服务的学习,推荐选择SpringCloud.
4.什么是熔断机制?
与电路中的熔断相同,当出现错误时,及时断电。用于微服务,则当我们多个服务中,部分服务出现错误时,我们应该及时切断这些错误的服务,从而避免"雪崩",导致整个程序都进入拥塞错误的状态。
其中Spring Cloud Hystrix 就为我们提供了熔断的功能。
(1)熔断关闭状态(Closed)
服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。
(2)熔断开启状态(Open)
在固定时间窗口内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开启状态。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法。
(3)半熔断状态(Half-Open)
在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。