Dubbo分布式架构的高可用相关概念

        高可用性:指在分布式系统或架构中,经过一系列设计后,减少系统不能提供服务的时间,以提高系统和应用的可用性。

一、zookeeper宕机与dubbo直连

问题:zookeeper注册中心宕机,消费者还可以调用提供者暴露出来的服务嘛?没有注册中心可以调用服务嘛?

答案:可以

原因:

健壮性

1、监控中心宕掉不影响使用,只是丢失部分采样数据。

2、数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务。

3、注册中心对等集群,任何一台宕掉后,将自动切换到另一台。

4、注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯。

5、服务提供者无状态,任何一台宕掉后,不影响使用。

6、服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复。

        即使我们没有注册中心也可以使用Dubbo直连的方式来让消费者引用提供者暴露出来的服务:在需要远程调用提供者提供的方法处,使用@Reference注解直连注入

//    @Reference  //dubbo会自动去注册中心找这个暴露出来的服务
    @Reference(url = "172.0.0.1:20880")  //本机提供者应用的具体url
    UserService userService;

二、负载均衡策略

        负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是通过特定的算法,尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。

        1、随机(Random LoadBalance)

                随机调用服务器,但会按权重设置随机概率。调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

        2、轮询(RoundRobin LoadBalance)

                循环调用每一台服务器,也可按照权重设置轮循比率(比如)。但存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

        3、最小活跃(LeastActive LoadBalance)

                使请求分发到连接数/请求数最少的候选服务器(目前处理请求最少的服务器)。

        4、一致性Hash(ConsistentHash LoadBalance)

                调用同样参数的同一个方法,按照Hash分布,每次都会调用同一台服务器

三、服务降级

        当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。

       简单一句话说就是:牺牲一人,保全大局。

       例如现在服务器跑了很多很多功能(订单生成,用户管理,广告等等)已经达到极限快转不过来了,我们就可以暂时停掉或者简单处理一下广告业务来释放处理器资源,先处理其他核心业务以达到更高效的运作。

        

         此时在dubbo的可视化界面中就可以选择“屏蔽”或“容错”来降级服务

 

        (1)屏蔽:表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。

        (2)容错:表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

猜你喜欢

转载自blog.csdn.net/weixin_64709241/article/details/129768445