1、dubbo支持的配置中心
- Zookeeper
- nacos
- Apollo
2、dubbo支持的注册中心
- Zookeeper
- Nacos
- Multicast
- Redis
注意:当Dubbo使用3.0.0
及以上版本时,需要使用Nacos 2.0.0
及以上版本
3、zookeeper
Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用。
流程:
- 服务提供者启动时: 向
/dubbo/com.foo.BarService/providers
目录下写入自己的 URL 地址。 - 服务消费者启动时: 订阅
/dubbo/com.foo.BarService/providers
目录下的提供者 URL 地址。并向/dubbo/com.foo.BarService/consumers
目录下写入自己的 URL 地址 - 监控中心启动时: 订阅
/dubbo/com.foo.BarService
目录下的所有提供者和消费者 URL 地址。
支持以下功能:
- 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
- 当注册中心重启时,能自动恢复注册数据,以及订阅请求
- 当会话过期时,能自动恢复注册数据,以及订阅请求
- 当设置
<dubbo:registry check="false" />
时,记录失败注册和订阅请求,后台定时重试 - 可通过
<dubbo:registry username="admin" password="1234" />
设置 zookeeper 登录信息 - 可通过
<dubbo:registry group="dubbo" />
设置 zookeeper 的根节点,不配置将使用默认的根节点。 - 支持
*
号通配符<dubbo:reference group="*" version="*" />
,可订阅服务的所有分组和所有版本的提供者
4、高可用
4.1、zookeeper宕机
问题:zookeeper宕机后,消费者还可以调用提供者的服务吗?
- 可以
- dubbo具有健壮性,注册中心集群部分宕机后,会自动切换到剩余的注册中心
- 当注册中心全部宕机后,dubbo可以通过本地缓存进行通讯
- 服务提供者全部宕机后,服务消费者将无法使用,并无限次重连等待提供者恢复
4.2、dubbo直连
问题:没有注册中心,dubbo可以调用服务吗?
- 可以,使用dubbo直连
如下:
5、dubbo负载均衡机制
- dubbo默认使用的随机权重的负载均衡机制-random
dubbo负载均衡机制:
使用:@Reference(loadbalance="roundrobin")
修改负载均衡机制为轮询
6、dubbo服务降级
- 可以使用dubbo监控中心,对服务继续降级
降级有两种方式:
- 消费者不发出请求,当页面请求时,该服务会直接返回null(接口直接是空的)
- 消费者发出请求,提供者返回null(接口直接是空的)
7、服务容错
实际开发中,会使用Hystrix
dubbo整个hystrix
1>导入依赖
消费者和提供者都需要导入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
2>在启动类上开启hystrix支持
消费者和提供者都需要开启
- @EnableHystrix
3>在方法上添加@HystrixCommand
- @HystrixCommand(fallbackMethod="服务远程调用失败时,回调的方法名称")
如:@HystrixCommand(fallbackMethod="hello"),失败后回调hello方法