Dubbo的服务与发现(注册中心)

/ 分布式 / 450浏览

注册中心概述

  Dubbo是支持多个注册中心的,而且支持同时向多个注册中心注册。目前Dubbo所支持四种注册中心:

注册中心概述
Multicast不用安装和启动任何中心节点,只要提供者与消费者的广播地址一样,就可以互相发现。
ZookeeperZookeeper是一个高性能,分布式的,开源分布式应用协调服务;
它以Fast Paxos算法为基础,为分布式应用提供一致性解决方案,推荐在生产环境下使用。
Redis使用Redis的Key/Map结构存储服务的URL地址以及过期时间,
同时使用Publish/Subscribe事件通知数据变更。
Simple它本身就是一个普通的Dubbo服务,可以减少第三方依赖,使整体通信方式一致。

适用场景

这里说明以常用的两种注册中心,Multicast、Zookeeper。

Multicast注册中心

Zookeeper注册中心

Xml的两种配置方式:

<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

SpringBoot配置文件的配置方式:

#dubbo配置
dubbo:
  application:
    name: wsp-system-provider
    registry: zookeeper://127.0.0.1:2181

工作流程

alt

环节说明
服务提供者启动时向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址
服务消费者启动时订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。
并向/dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
监控中心启动时订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。

服务暴露

  在服务通过注册中心注册后,是如何提供服务给消费者使用的呢?这就需要使用dubbo:service标签进行服务暴露了。用法如下:

基于配置文件

<dubbo:service interface="cn.zealon.app.system.dic.service.DataDicService" ref="dataDicService" version="1.0">

基于注解

@Service(version = "1.0")
@Component
public class DataDicServiceImpl extends AbstractBaseService<SysDataDic> implements DataDicService {
 ....