注册中心上保存四种类型的数据:
providers: 服务提供者目录,记录着服务提供者的ip、端口等信息。
consumers: 服务消费者目录,记录服务消费者的元数据信息,服务提供者并不会用到服务消费者的信息,这里要记录消费者的信息,是给服务治理中心(dubbo-admin)使用的。
routers: 用于消费者路由策略元数据信息。
configurators:用于服务者动态配置URL元数据信息。
以zookeeper作为注册中心
持久和临时节点
持久节点:节点会一直存在,就算建立该节点的会话断线,节点也会存在。
临时节点:会话存在,节点就存在;会话断开,节点就会被删除。
Watch机制
zookeeper节点发生变化(Znode本身的增加,删除,修改,以及子Znode的变化),zookeeper注册中心可以通过Watch机制通知到客户端。
服务消费者的服务列表
每一个服务消费者都会在本地维持一张服务提供者的列表,在消费者第一次启动的时候,回去注册中心拉取一次完整的服务列表,然后通过watch机制监听routers、configuration、provider这三个目录的变化。如果新增了服务提供者,或者某一个提供者下线了,消费者就会收到通知,去更新自己的服务列表。
服务提供者的注册操作
当启动一个新的服务,会把服务的ip和端口注册provider下,作为一个临时节点,假如服务提供者宕机,由于是临时节点,所以节点会被删除,这样就可以触发watch机制,服务提供者启动后会监听configuration。
DUBBO控制台搭建
下载源码,打包部署!
服务重试
服务重试 | Apache Dubbo
集群容错
集群容错 | Apache Dubbo
负载均衡
负载均衡 | Apache Dubbo
有多种级别的配置:服务端服务/方法级别、客户端服务/方法级别
多个配置是有覆盖关系的, 配置的优先级是:
1. 客户端方法级别配置;(最优先)
2. 客户端接口级别配置;
3. 服务端方法级别配置;
4. 服务端接口级别配置;(最后使用)
<!-- 服务端服务级别 -->
<dubbo:service interface="..." loadbalance="roundrobin" />
<!-- 客户端服务级别 -->
<dubbo:reference interface="..." loadbalance="roundrobin" />
<!-- 服务端方法级别 -->
<dubbo:service interface="...">
<dubbo:method name="hello" loadbalance="roundrobin"/>
</dubbo:service>
<!-- 客户端方法级别 -->
<dubbo:reference interface="...">
<dubbo:method name="hello" loadbalance="roundrobin"/>
</dubbo:reference>
虽说以上配置有全封闭服务端配置的,有针对客户端配置的,但是,真正使负载均衡起作用的是,客户端在发起调用的时候,使用相应负载均衡算法进行选择调用。(服务端不可能有这能力)
另外,控制台可以设置负载均衡!!!
Dubbo中,先通过路由,从多个 Provider 中按照路由规则,选出一个子集。再根据负载均衡从子集中选出一个 Provider 进行本次调用。如果调用失败了,根据集群容错策略,进行重试或定时重发或快速失败等。 可以看到Dubbo中的路由,负载均衡和集群容错发生在一次RPC调用的不同阶段。最先是路由,然后是负载均衡,最后是集群容错。文章来源:https://www.toymoban.com/news/detail-413463.html
直连提供者
直连提供者 | Apache Dubbo文章来源地址https://www.toymoban.com/news/detail-413463.html
只订阅
到了这里,关于DUBBO注册中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!