我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Dubbo元数据中心是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Dubbo元数据中心是什么

这篇文章主要介绍“Dubbo元数据中心是什么”,在日常操作中,相信很多人在Dubbo元数据中心是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dubbo元数据中心是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

如果让你在本地构建一个 Dubbo 应用,你会需要额外搭建哪些中间件呢?如果没猜错的话,你的第一反应应该是注册中心,类 Dubbo 的大多数服务治理框架都有注册中心的概念。你可以部署一个 Zookeeper,或者一个 Nacos,看你的喜好。但在 Apache Dubbo 的 2.7 版本后,额外引入了两个中间件:元数据中心和配置中心。

在今年年初 Dubbo 2.7 刚发布时,我就写了一篇文章 《Dubbo 2.7 三大新特性详解》,介绍了包含元数据中心改造在内的三大新特性,但一些细节介绍没有详细呈现出来,在这篇文章中,我将会以 Dubbo 为例,跟大家一起探讨一下服务治理框架中元数据中心的意义与集成细节。

Dubbo元数据中心是什么

元数据中心介绍

服务治理中的元数据(Metadata)指的是服务分组、服务版本、服务名、方法列表、方法参数列表、超时时间等,这些信息将会存储在元数据中心之中。与元数据平起平坐的一个概念是服务的注册信息,即:服务分组、服务版本、服务名、地址列表等,这些信息将会存储在注册中心中。稍微一对比可以发现,元数据中心和注册中心存储了一部分共同的服务信息,例如服务名。两者也有差异性,元数据中心还会存储方法列表即参数列表,注册中心存储了服务地址。上述的概述,体现出了元数据中心和注册中心在服务治理过程中,担任着不同的角色。为了有一个直观的对比,我整理出了下面的表格:


元数据注册信息
职责描述服务,定义服务的基本属性存储地址列表
变化频繁度基本不变随着服务上下线而不断变更
数据量
数据交互/存储模型消费者/提供者上报,控制台查询PubSub 模型,提供者上报,消费者订阅
主要使用场景服务测试、服务 MOCK服务调用
可用性要求元数据中心可用性要求不高,不影响主流程注册中心可用性要求高,影响到服务调用的主流程

下面我会对每个对比点进行单独分析,以加深对元数据中心的理解。

职责

在 Dubbo 2.7 版本之前,并没有元数据中心的概念,那时候注册信息和元数据都耦合在一起。Dubbo Provider 的服务配置有接近 30 个配置项,排除一部分注册中心服务治理需要的参数,很大一部分配置项仅仅是 Provider 自己使用,不需要透传给消费者;Dubbo Consumer 也有 20 多个配置项。在注册中心之中,服务消费者列表中只需要关注 application,version,group,ip,dubbo 版本等少量配置。这部分数据不需要进入注册中心,而只需要以 key-value 形式持久化存储在元数据中心即可。从职责来看,将不同职责的数据存储在对应的组件中,会使得逻辑更加清晰。

变化频繁度

注册信息和元数据耦合在一起会导致注册中心数据量的膨胀,进而增大注册中心的网络开销,直接造成了服务地址推送慢等负面影响。服务上下线会随时发生,变化的其实是注册信息,元数据是相对不变的。

数据量

由于元数据包含了服务的方法列表以及参数列表,这部分数据会导致元数据要比注册信息大很多。注册信息被设计得精简会直接直接影响到服务推送的 SLA。

数据交互/存储模型

注册中心采用的是 PubSub 模型,这属于大家的共识,所以注册中心组件的选型一般都会要求其有 notify 的机制。而元数据中心并没有 notify 的诉求,一般只需要组件能够提供 key-value 的存储结构即可。

主要使用场景

在服务治理中,注册中心充当了通讯录的职责,在复杂的分布式场景下,让消费者能找到提供者。而元数据中心存储的元数据,主要适用于服务测试、服务 MOCK 等场景,这些场景都对方法列表、参数列表有所诉求。在下面的小节中,我也会对使用场景进行更加详细的介绍。

可用性要求

注册中心宕机或者网络不通会直接影响到服务的可用性,它影响了服务调用的主路径。但一般而言,元数据中心出现问题,不会影响到服务调用,它提供的能力是可被降级的。这也阐释了一点,为什么很多用户在 Dubbo 2.7 中没有配置元数据中心,也没有影响到正常的使用。元数据中心在服务治理中扮演的是锦上添花的一个角色。在组件选型时,我们一般也会对注册中心的可用性要求比较高,元数据中心则可以放宽要求。

元数据中心的价值

小孩子才分对错,成年人只看利弊。额外引入一个元数据中心,必然带来运维成本、理解成本、迁移成本等问题,那么它具备怎样的价值,来说服大家选择它呢?上面我们介绍元数据中心时已经提到了服务测试、服务 MOCK 等场景,这一节我们重点探讨一下元数据中心的价值。

降低地址推送的时延

由于注册中心采用的是 PubSub 模型,数据量的大小会直接影响到服务地址推送时间,不知道你有没有遇到过 No provider available 的报错呢?明明提供者已经启动了,但由于注册中心推送慢会导致很多问题,一方面会影响到服务的可用性,一方面也会增加排查问题的难度。

在一次杭州 Dubbo Meetup 中,网易考拉分享了他们对 Zookeeper 的改造,根源就是

推送量大 -> 存储数据量大 -> 网络传输量大 -> 延迟严重

这一实际案例佐证了元数据改造并不是凭空产生的需求,而是切实解决了一个痛点。

服务测试 & 服务 MOCK

在 Dubbo 2.7 之前,虽然注册中心耦合存储了不少本应属于元数据的数据,但也漏掉了一部分元数据,例如服务的方法列表,参数列表。这些是服务测试和服务 MOCK 必备的数据,想要使用这些能力,就必须引入元数据中心。例如开源的 Dubbo Admin 就实现了服务测试功能,用户可以在控制台上对已经发布的服务提供者进行功能测试。可能你之前有过这样的疑惑:为什么只有 Dubbo 2.7 才支持了服务测试呢?啊哈,原因就是 Dubbo 2.7 才有了元数据中心的概念。当然,服务 MOCK 也是如此。

Dubbo元数据中心是什么

其他场景

可以这么理解,任何依赖元数据的功能,都需要元数据中心的支持。其他场景还包括了网关应用获取元数据来进行泛化调用、服务自动化测试等等。再描述一个可能的场景,抛砖引玉。在一次南京 Dubbo Meetup 上,dubbo.js 的作者提及的一个场景,希望根据元数据自动生成 NodeJs 代码,以简化前端的开发量,也是元数据的作用之一。这里就需要发挥各位的想象力了

Dubbo 配置元数据中心

目前 Dubbo 最新的版本为 2.7.4,目前支持的几种元数据中心可以从源码中得知(官方文档尚未更新):

Dubbo元数据中心是什么

支持 consul、etcd、nacos、redis、zookeeper 这五种组件。

配置方式如下:

dubbo.metadata-report.address=nacos://127.0.0.1:8848

元数据存储格式剖析

前面我们介绍了元数据中心的由来以及价值,还是飘在天上的概念,这一节将会让概念落地。元数据是以怎么样一个格式存储的呢?

以 DemoService 服务为例:

<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" executes="4500" retries="7" owner="kirito"/>
<dubbo:registry address="zookeeper://127.0.0.1:2181" />

首先观察在 Dubbo 2.6.x 中,注册中心如何存储这个服务的信息:

dubbo://30.5.120.185:20880/com.alibaba.dubbo.demo.DemoService?
anyhost=true&
application=demo-provider&
interface=com.alibaba.dubbo.demo.DemoService&
methods=sayHello&
bean.name=com.alibaba.dubbo.demo.DemoService&
dubbo=2.0.2&executes=4500&
generic=false&owner=kirito&
pid=84228&retries=7&side=provider&timestamp=1552965771067

例如 bean.name 和 owner 这些属性,肯定是没必要注册上来的。

接着,我们在 Dubbo 2.7 中使用最佳实践,为 registry 配置 simplified=true:

<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" executes="4500" retries="7" owner="kirito"/>
<dubbo:registry address="zookeeper://127.0.0.1:2181" simplified="true" />
<dubbo:metadata-report address="nacos://127.0.0.1:8848"/>

之后再观察注册中心的数据,已经变得相当精简了:

dubbo://30.5.120.185:20880/org.apache.dubbo.demo.api.DemoService?
application=demo-provider&
dubbo=2.0.2&
release=2.7.0&
timestamp=1552975501873

被精简省略的数据不代表没有用了,而是转移到了元数据中心之中,我们观察一下此时元数据中心中的数据:

Dubbo元数据中心是什么

最佳实践

元数据中心是服务治理中的一个关键组件,但对于大多数用户来说还是一个比较新的概念,我整理了一些我认为的最佳实践,分享给大家。

  • 从 Dubbo 2.6 迁移到 Dubbo 2.7 时,可以采取三步走的策略来平滑迁移元数据。第一步:Dubbo 2.6 + 注册中心,第二步:Dubbo 2.7 + 注册中心 + 元数据中心,第三步:Dubbo 2.7 + 注册中心(simplified=true) + 元数据中心。在未来 Dubbo 的升级版本中,registry 的 simplified 默认值将会变成 true,目前是 false,预留给用户一个升级的时间。

  • 应用在启动时,会发布一次元数据,在此之后会有定时器,一天同步一次元数据,以上报那些运行时生成的 Bean,目前用户不可以配置元数据上报的周期,但可以通过 -Dcycle.report 关闭这一定时器。

  • 元数据中心推荐选型:Nacos 和 Redis。

Dubbo 2.7 还有很多有意思的特性,如果你对 Dubbo 有什么感兴趣的问题,欢迎在文末或者后台进行留言,后面我会继续更新 Dubbo 系列的文章。

到此,关于“Dubbo元数据中心是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Dubbo元数据中心是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Dubbo元数据中心是什么

这篇文章主要介绍“Dubbo元数据中心是什么”,在日常操作中,相信很多人在Dubbo元数据中心是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dubbo元数据中心是什么”的疑惑有所帮助!接下来,请跟着小编
2023-06-04

Dubbo的核心功能是什么

本篇内容介绍了“Dubbo的核心功能是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Dubbo是什么?Dubbo 是一个分布式、高性
2023-06-05

mysql中元数据是什么

mysql中元数据是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、元数据概念元(meta),一般被我们翻译成“关于……的……”。元数据(meta data)——“dat
2023-06-14

IDC数据中心指的是什么

本篇内容主要讲解“IDC数据中心指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“IDC数据中心指的是什么”吧!IDC数据中心有两个非常重要的明显特征:在网络中的位置和总的网络带宽容量,它
2023-06-07

什么是元数据?

元数据是指描述和解释数据的信息,有助于理解和管理数据。根据类型不同,元数据可描述数据内容、结构、质量和用途。元数据用途广泛,包括数据组织、理解、管理、共享和发现。都柏林核心、MODS等标准确保元数据的兼容性。在创建和管理元数据时,需要考虑元数据创建、质量、互操作性、安全和治理等方面的挑战。
什么是元数据?
2024-04-02

什么是数据元

数据元,即数据单元,是构成数据库中数据对象的最小单位,是表达和描述事物属性的数据项,通常可以理解为一个字段或者一个属性。例如,在一个用户信息表中,“姓名”、“年龄”、“性别”等都可以被看作是数据元。理解数据元的含义及其作用,对于数据管理和数据分析至关重要。
什么是数据元
2023-10-29

WCF元数据是什么

这篇文章主要讲解了“WCF元数据是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WCF元数据是什么”吧!WCF经过长时间的发展,使用它的人越来越多,它的功能也随之的强大,就我的经验来处理
2023-06-17

html中文件元数据是什么

这篇文章给大家分享的是有关html中文件元数据是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。了解文件元数据每当我们上传文件时,File对象都有元数据信息,例如file name,size,last upda
2023-06-05

什么是元数据?元数据库又怎么理解?

  什么是元数据?元数据库又是什么?元数据是信息系统项目管理师的重要知识点,元数据是“描述数据的数据”,而元数据库一个是指用来描述其他表信息的数据表。  元数据是信息系统项目管理师的重要知识点,很多学员都不太清楚什么是元数据、元数据库又是什么,为此,编程学习网小编将元数据和元数据库知识点的辨析内容整
什么是元数据?元数据库又怎么理解?
2024-04-19

云服务器数据中心三大核心要素是什么

云服务器数据中心三大核心要素是服务器、存储和网络。服务器:服务器是云服务器中最重要的硬件设备,可以提供高性能、稳定性、可靠性以及灵活性,是整个云服务器数据中心中的核心设备之一。云服务器数据中心通常采用服务器集群技术来提高整体性能和可扩展性。存储:存储是云服务器数据中心的另一个关键因素,它可以提供高容量、高可靠性和高灵活性,可以用于数据备份、数据恢复、数据归档等方面。云服务器数据中心通常会采
2023-10-26

亚马逊服务器数据中心是什么

亚马逊服务器数据中心是亚马逊公司用于存储和处理数据的设施。这些数据中心位于全球各地,包括美国、欧洲、亚洲和南美洲等地区。亚马逊数据中心提供了云计算服务,包括亚马逊云服务(AWS)和亚马逊弹性计算云(EC2)。这些服务允许用户在亚马逊的服务器上运行应用程序、存储数据和处理计算任务。亚马逊数据中心采用了先进的技术和安全措施,以确保数据的安全性和可靠性。同时,亚马逊数据中心还提供了高度可扩展的架构,以满足...
2023-10-27

C#中间语言和元数据是什么

这篇文章主要为大家展示了“C#中间语言和元数据是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#中间语言和元数据是什么”这篇文章吧。NGWS RuntimeNGWS和NGWS Runtim
2023-06-17

Hadoop中NameNode元数据的原理是什么

本篇文章为大家展示了Hadoop中NameNode元数据的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在对NameNode节点进行格式化时,调用了FSImage的saveFSImage(
2023-06-03

C#单元格数据是什么

本篇内容介绍了“C#单元格数据是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近在做一个项目,其中有一个技术性的难题:“提取Word指
2023-06-18

WCF服务元数据是什么

这篇文章主要讲解了“WCF服务元数据是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WCF服务元数据是什么”吧!WCF服务元数据的基本概念WCF服务元数据究竟是什么?它的作用是什么?为什
2023-06-17

WCF元数据交换是什么

这篇文章主要介绍“WCF元数据交换是什么”,在日常操作中,相信很多人在WCF元数据交换是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”WCF元数据交换是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-17

大数据的核心价值是什么

这篇文章将为大家详细讲解有关大数据的核心价值是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。大数据的核心就是预测。大数据的本质是解决问题,大数据的核心价值就在于预测;大数据是把数学算法运用到海量的数据
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录