微服务基础知识

配置中心

大型的系统里面有可能有上百种微服务,假设每种服务平均有10个实例,那么全部实例的数量就是1000个了,这么多实例管理起配置来一定会让人崩溃的。所以Spring Cloud提出了集中式的配置存储方案叫Spring Cloud Config。这个方案里有一个提供REST服务器的配置服务器,系统内所有实例启动时都要访问这个服务器获得更多的配置项。

为什么需要断路器?(为什么需要熔断降级?)

The Circuit Breaker pattern helps us in preventing a cascade of failures when a remote service is down.
断路器帮助我们在一个(下游)远程服务宕机时防止出现级联错误(蔓延于整个集群的错误)。

实现了断路器的框架有哪些?

Netflix/hystrix、alibaba/sentinel、twitter/finagle、qiwi/thrift-pool、resiliance4j

  • hystrix已经进入维护模式,不再添加新的功能,而且最新的版本的监控后台还有bug导致无法使用,不推荐使用。
  • finagle是Scala语言写的,很小众,不推荐使用。
  • thrift-pool由qiwi(俄罗斯的支付宝)出品,很多注释都是俄文,而且github上的start很少,不推荐使用。
  • resiliance4j是hystrix官方推荐的替代品,相比于sentinel,它少了一个重要功能dashboard,另外sentinel是经过了阿里巴巴双十一的压测的,所以挑来挑去sentinel还是最优选择。

流量控制

我们的每一个服务的能力都是有限的,也就说他们的QPS有一个最大值,这个值一般在上线前的压力测试时就能得到。如果因为一些原因比如配置错误让非常多的请求涌入一个服务实例(比如A),因为没有流控模块让请求快速失败,这导致运行实例的主机的负载变得很高,高到无法登录进去kill那个A。流量控制属于微服务里的一等公民,是必须要实现的功能。

流量控制和熔断降级的区别和关系

流控是在预防问题的发生,而降级则是问题发生后的应对方法。

posted @ 2020-12-13 14:27  ralgo  阅读(143)  评论(0)    收藏  举报