写点什么

Dubbo 注册中心

用户头像
青年IT男
关注
发布于: 2021 年 04 月 29 日
Dubbo 注册中心

Dubbo 注册中心

前言

大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 注册中心。在上一个章节中我们学习了 Dubbo 中多种协议以及协议的实现原理,同时我们了解到 Dubbo 在不同的使用场景使用不同的协议 比如:高并发、小数据传输我们通常使用长连接,大数据传输我们使用短连接等等。小伙伴可能会问服务消费方是怎样知道在那里去调用服务提供者呢?那么在这个章节中我们将讨论 Dubbo 的注册中心来解答这个问题。那就让我们快速开始吧!

1. Dubbo 注册中心简介

在前面的章节《Dubbo 服务注册与发现》中我们讨论了注册中心所扮演的角色,它主要提供 Dubbo 服务元信息数据注册和消费者获取元数据,并根据服务上下线信息实时通知服务消费方更新本地缓存元数据信息。这样我们的服务调用者就不用强耦合服务提供方的信息,直接从注册中心获取。同时我们的 Dubbo Admin 也是通过通过管理注册中心元数据来达到服务治理的能力。在 Dubbo 中也支持同一个服务元信息同时注册到多个注册中心。下图以注册服务为静态服务通过在 Dubbo Admin 中启用服务为例:



在服务提供者启动服务时,在注册中心注册服务为静态服务此时服务消费者是不能调用服务提供者。当我们通过 Dubbo Admin 配置服务为启用状态,此时消费端收到配置变更消息并更新本地元数据,然后发起对提供者的调用。


**Tips:**自 2.7.x 开始 Dubbo 的注册信息和配置信息进行分离,在此之前两者数据都是放在注册中心。

2. Dubbo 支持的注册中心

在 Dubbo 中支持多种注册中心分别是:


  • Multicast

  • Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。

  • Zookeeper

  • Zookeeper 是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用

  • Nacos

  • Nacos 是最近由 Alibaba 推出快速实现动态服务发现、服务配置、服务元数据及流量管理、多租户的开源项目。同时支持注册中心、配置中心分离和合并部署。

  • Redis

  • 基于 Redis 实现的注册中心,使用 Redis 的 Key/Map 结构存储数据结构,使用 Redis 的 Publish/Subscribe 事件通知数据变更。

  • Simple

  • Simple 注册中心本身就是一个普通的 Dubbo 服务,可以减少第三方依赖,使整体通讯方式一致。

3. Dubbo 配置方式

下面我们主要看看常用的注册中心配置方式:


  1. Zookeeper


  • 单机配置


  <dubbo:registry address="zookeeper://127.0.0.1:2181" />
复制代码


  • 集群配置


  <dubbo:registry address="zookeeper://127.0.0.1:2181?backup=127.0.0.2:2181,127.0.0.3:2181" />
复制代码



  <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181,127.0.0.2:2181,127.0.0.3:2181" />
复制代码


  • 多组注册中心


  <dubbo:registry id="chinaRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="china" />  <dubbo:registry id="intlRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="intl" />
复制代码


  1. Redis


  • 单机配置


  <dubbo:registry address="redis://127.0.0.1:6379" />
复制代码



  <dubbo:registry protocol="redis" address="127.0.0.1:6379" />
复制代码


  • 集群配置


  <dubbo:registry address="redis://127.0.0.1:6379?backup=127.0.0.2:6379,127.0.0.3:6379" />
复制代码



  <dubbo:registry protocol="redis" address="127.0.0.1:6379,127.0.0.2:6379,127.0.0.3:6379" />
复制代码


  1. Nacos


  • 单机配置


  ##为了简化这里我们使用默认命名空间  <dubbo:registry address="nacos://127.0.0.1:8848" />
复制代码


  • 集群配置


  <dubbo:registry address="redis://127.0.0.1:8848?backup=127.0.0.2:8849,127.0.0.3:8847" />
复制代码



  <dubbo:registry protocol="nacos" address="127.0.0.1:8848,127.0.0.2:8849,127.0.0.3:8847" />
复制代码

4. 示例演示

我们还是使用以获取图书列表为例,使用 Zookeeper 注册中心。代码结构如下:



这里消费端和服务提供端的注册中心配置是一样的,因此我们看其中一个就行。以服务提供端为例dubbo-provider-xml.xml


<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"       xmlns="http://www.springframework.org/schema/beans"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-provider" metadata-type="remote"/>

<!--方式一:使用zookeeper注册中心--> <dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!--方式二:使用zookeeper注册中心--> <!-- <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />-->
<bean id="bookFacade" class="com.muke.dubbocourse.protocol.provider.BookFacadeImpl"/>
<!--暴露本地服务为Dubbo服务--> <dubbo:service interface="com.muke.dubbocourse.protocol.api.BookFacade" ref="bookFacade" />
</beans>
复制代码


在上面的配置中我们使用了两种配置注册中心的方式其效果是一样的,都是使用 Zookeeper 注册中心。

5. 小结

在本小节中我们主要学习了 Dubbo 中的多种注册中心,它们分别 Redis、Zookeeper、Nacos、Multicast、Simple ,其中着重了解了我们常用的 Zookeeper,其他的注册中心各位感兴趣的小伙伴可自行研究。在多个注册中心中我们常用 Zookeeper 因为比较成熟,而当集群规模非常庞大时可能存在一定问题,这是 Zookeeper 和 Dubbo 本身设计缺陷(在 2.7.x 之前版本)。目前国内可以使用开源的 Nacos 和 Dubbo 高版本整合会避免之前版本的因大规模服务上下线可能导致网络局部震荡甚至瘫痪的风险问题。


本节课程的重点如下:


  1. 理解什么是注册中心以及起作用

  2. 了解 Dubbo 中多种注册中心

  3. 了解什么是注册中心

  4. 了解怎样配置和使用注册中心


5. 小结

在本小节中我们主要学习了 Dubbo 中的多种注册中心,它们分别 Redis、Zookeeper、Nacos、Multicast、Simple ,其中着重了解了我们常用的 Zookeeper,其他的注册中心各位感兴趣的小伙伴可自行研究。在多个注册中心中我们常用 Zookeeper 因为比较成熟,而当集群规模非常庞大时可能存在一定问题,这是 Zookeeper 和 Dubbo 本身设计缺陷(在 2.7.x 之前版本)。目前国内可以使用开源的 Nacos 和 Dubbo 高版本整合会避免之前版本的因大规模服务上下线可能导致网络局部震荡甚至瘫痪的风险问题。


本节课程的重点如下:


  1. 理解什么是注册中心以及起作用

  2. 了解 Dubbo 中多种注册中心

  3. 了解什么是注册中心

  4. 了解怎样配置和使用注册中心

作者

个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。关注公众号:青年 IT 男 获取最新技术文章推送!


博客地址: http://youngitman.tech


微信公众号:



知识星球:



发布于: 2021 年 04 月 29 日阅读数: 137
用户头像

青年IT男

关注

站在巨人肩上看得更远! 2018.04.25 加入

从事金融行业,就职过易极付、思建科技、网约车平台等一流技术团队,目前就职于银行负责支付系统建设。对金融行业有强烈的爱好。实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域

评论

发布
暂无评论
Dubbo 注册中心