dubbo核心配置和高可用

一、配置文件

1、生产者配置provider.xml



 
    
    
 
    
    
 
    
    
 
    
    
 
    
    

2、消费者配置consumer.xml



 
    
    
 
    
    
 
    
    

3、主要配置分类

服务配置 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
引用配置 用于创建一个远程服务代理,一个引用可以指向多个注册中心
协议配置 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
应用配置 用于配置当前应用信息,不管该应用是提供者还是消费者
模块配置 用于配置当前模块信息,可选
注册中心配置 用于配置连接注册中心相关信息
监控中心配置 用于配置连接监控中心相关信息,可选
提供方配置 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
消费方配置 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
方法配置 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
参数配置 用于指定方法参数配置
     

4、启动时检查

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"

可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。

另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,如果 check="false",总是会返回引用,当服务恢复时,能自动连上。

关闭某个服务的启动时检查 (没有提供者时报错):

关闭所有服务的启动时检查 (没有提供者时报错):

关闭注册中心启动时检查 (注册订阅失败时报错):

5、高可用

5.1 负载均衡

dubbo核心配置和高可用_第1张图片

比如:上图中userService有三台服务提供者,权重分别为100、200、50,按照基于权重的随机负载均衡机制,请求这三个服务的概率分别为2/7,4/7和1/7,我们可以测试下:

首先我们启动三个服务提供者UserService,端口分别为20880和20881、20882:

#dubbo协议使用的端口
dubbo.protocol.port=20880
#dubbo协议使用的端口
dubbo.protocol.port=20881
#dubbo协议使用的端口
dubbo.protocol.port=20882

然后启动服务消费者,分别调用三次接口http://xxx:xxxx/getAllUsers,就可以根据权重来随机调用各个服务了

我们可以在控制台设置各个服务的权重

5.2 集群容错

Failover Cluster

失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。

重试次数配置如下:


    

Failfast Cluster

快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

Failsafe Cluster

失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

Failback Cluster

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

Forking Cluster

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

例子:

 

你可能感兴趣的:(后端)