欢迎关注方志朋的博客,回复”666“获面试宝典

Dubbo 作为一个微服务框架,Dubbo SDK 与应用服务绑定在同一个进程内,它跟随着应用服务被部署在分布式集群各个位置,为了在分布式环境下实现各个应用服务间的协作, Dubbo 定义了一些中心化组件,这包括:

  • 注册中心:协调 Consumer 与 Provider 之间的地址注册与发现

  • 配置中心:

    • 存储 Dubbo 启动阶段的全局配置,保证配置的跨环境共享与全局一致性

    • 负责服务治理规则(路由规则、动态配置等)的存储与推送。

  • 元数据中心。

    • 接收 Provider 上报的服务接口元数据,为 Admin 等控制台提供运维能力(如服务测试、接口文档等)

    • 作为服务发现机制的补充,提供额外的接口/方法级别配置信息的同步能力,相当于注册中心的额外扩展

上图完整的描述了 Dubbo 微服务组件与各个中心的交互过程。

但是以上三个中心并不是运行 Dubbo 的必要条件,用户完全可以根据自身业务情况决定都不启用,或者只启用其中一个,亦或者启用多个,以达到简化部署的目的。通常情况下,所有用户都会以独立的注册中心 开始 Dubbo 服务开发,而配置中心、元数据中心则会在微服务演进的过程中逐步的按需被引入进来。

01

注册中心

注册中心扮演着非常重要的角色,它承载着服务注册和服务发现的职责。目前 Dubbo 支持以下两种粒度的服务发现和服务注册,分别是接口级别和应用级别,注册中心可以按需进行部署:

  • 在传统的 Dubbo SDK 使用姿势中,如果仅仅提供直连模式的 RPC 服务,不需要部署注册中心。

  • 无论是接口级别还是应用级别,如果需要 Dubbo SDK 自身来做服务注册和服务发现,则可以选择部署注册中心,在 Dubbo 中集成对应的注册中心。

  • 在 Dubbo + Mesh 的场景下,随着 Dubbo 服务注册能力的弱化,Dubbo 内的注册中心也不再是必选项,其职责开始被控制面取代,如果采用了 Dubbo + Mesh 的部署方式,无论是 ThinSDK的mesh 方式还是 Proxyless的mesh 方式,都不再需要独立部署注册中心。

而注册中心并不依赖于配置中心和元数据中心,如下图所示:

该图中没有部署配置中心和元数据中中心,在 Dubbo 中会默认将注册中心的实例同时作为配置中心和元数据中心,这是 Dubbo 的默认行为,如果确实不需要配置中心或者元数据中心的能力,可在配置中关闭,在注册中心的配置中有两个配置分别为 use-as-config-center 和 use-as-metadata-center,将配置置为 false 即可。

02

元数据中心

元数据中心在2.7.x版本开始支持,随着应用级别的服务注册和服务发现在Dubbo中落地,元数据中心也变的越来越重要。在以下几种情况下会需要部署元数据中心:

  1. 对于一个原先采用老版本Dubbo搭建的应用服务,在迁移到Dubbo 3时,Dubbo 3 会需要一个元数据中心来维护RPC服务与应用的映射关系(即接口与应用的映射关系),因为如果采用了应用级别的服务发现和服务注册,在注册中心中将采用“应用 ——  实例列表”结构的数据组织形式,不再是以往的“接口 —— 实例列表”结构的数据组织形式,而以往用接口级别的服务注册和服务发现的应用服务在迁移到应用级别时,得不到接口与应用之间的对应关系,从而无法从注册中心得到实例列表信息,所以Dubbo为了兼容这种场景,在Provider端启动时,会往元数据中心存储接口与应用的映射关系。

  2. 为了让注册中心更加聚焦与地址的发现和推送能力,减轻注册中心的负担,元数据中心承载了所有的服务元数据、大量接口/方法级别配置信息等,无论是接口粒度还是应用粒度的服务发现和注册,元数据中心都起到了重要的作用。

如果有以上两种需求,都可以选择部署元数据中心,并通过Dubbo的配置来集成该元数据中心。

元数据中心并不依赖于注册中心和配置中心,用户可以自由选择是否集成和部署元数据中心,如下图所示:

该图中不配备配置中心,意味着可以不需要全局管理配置的能力。该图中不配备注册中心,意味着可能采用了 Dubbo mesh 的方案,也可能不需要进行服务注册,仅仅接收直连模式的服务调用。

03

配置中心

配置中心与其他两大中心不同,它无关于接口级还是应用级,它与接口并没有对应关系,它仅仅与配置数据有关,即时没有部署注册中心和元数据中心,配置中心也能直接被接入到 Dubbo 应用服务中。在整个部署架构中,整个集群内的实例(无论是 Provider 还是 Consumer)都将会共享该配置中心集群中的配置,如下图所示:

该图中不配备注册中心,意味着可能采用了 Dubbo mesh 的方案,也可能不需要进行服务注册,仅仅接收直连模式的服务调用。

该图中不配备元数据中心,意味着 Consumer 可以从 Provider 暴露的 MetadataService 获取服务元数据,从而实现 RPC 调用。

02

保护三大中心高可用的部署架构

Aliware

虽然三大中心已不再是 Dubbo 应用服务所必须的,但是在真实的生产环境中,一旦已经集成并且部署了该三大中心,三大中心还是会面临可用性问题,Dubbo 需要支持三大中心的高可用方案。在 Dubbo 中就支持多注册中心、多元数据中心、多配置中心,来满足同城多活、两地三中心、异地多活等部署架构模式的需求。

Dubbo SDK 对三大中心都支持了 Multiple 模式。

  • 多注册中心:Dubbo 支持多注册中心,即一个接口或者一个应用可以被注册到多个注册中心中,比如可以注册到ZK集群和Nacos集群中,Consumer 也能够从多个注册中心中进行订阅相关服务的地址信息,从而进行服务发现。通过支持多注册中心的方式来保证其中一个注册中心集群出现不可用时能够切换到另一个注册中心集群,保证能够正常提供服务以及发起服务调用。这也能够满足注册中心在部署上适应各类高可用的部署架构模式。

  • 多配置中心:Dubbo 支持多配置中心,来保证其中一个配置中心集群出现不可用时能够切换到另一个配置中心集群,保证能够正常从配置中心获取全局的配置、路由规则等信息。这也能够满足配置中心在部署上适应各类高可用的部署架构模式。

  • 多元数据中心:Dubbo 支持多元数据中心:用于应对容灾等情况导致某个元数据中心集群不可用,此时可以切换到另一个元数据中心集群,保证元数据中心能够正常提供有关服务元数据的管理能力。

拿注册中心举例,下面是一个多活场景的部署架构示意图:

03

目前存在的问题

Aliware

  • 元数据中心的配置可以绑定某个注册中心,通过 registry 配置,但是配置存在问题,待修复

  • 之前提到的只会采用一个元数据中心进行元数据的 Pub、Sub:

热门内容:
  • IntelliJ IDEA 居然支持音视频聊天!

  • RedisJson 横空出世,性能碾压ES和Mongo!

  • IDEA牛逼!900行"又臭又长"的类重构,几分钟搞定

  • 如何高效快速搞散一个团队?

  • Spring Boot 实现万能文件在线预览

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

解密 Dubbo 三大中心的部署架构相关推荐

  1. 详解网商银行“三地五中心”数据部署架构

    数据库部署架构是从容量.可用性.性能.成本等多方面权衡的结果,网商银行基础架构从建行之初满足快速业务响应的分布式架构,到单元化架构的落地,再到云原生时代,其中伴随着业务的快速发展,数据库的部署架构也经 ...

  2. 服务器三大技术架构及应用软件部署架构

    本文章介绍: 1.服务器三大技术架构及其发展趋势 2.服务器应用软件的部署架构和特点 [服务器技术架构的三大发展趋势] Scale-up纵向扩展架构 Scale-out横向扩展架构 Hyper-con ...

  3. 极客日报:阿里再度调整组织架构:天猫淘宝大融合,新设三大中心;苹果M1首席芯片设计师跳槽至英特尔

    一分钟速览新闻点! 腾讯接入数字人民币,微信支持数字人民币支付 阿里再度调整组织架构:天猫淘宝大融合,新设三大中心 七成清华毕业生进入体制内就业 北京最受欢迎:华为腾讯等科技企业也受青睐 钉钉近期将推 ...

  4. dubbo协议_阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud

    微服务架构 什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发.部署.扩展.服务于服务之间通过注入RESTful ...

  5. dubbo k8s 服务发现_工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇

    作者 | 张远征来源|阿里巴巴云原生公众号 导读:Dubbo 作为分布式微服务框架,众多公司在实践中基于 Dubbo 进行分布式系统架构.重启开源后,我们不仅看到 Dubbo 3.0 最新的 Road ...

  6. dubbo + zookeeper 简介和部署

    Dubbo简介: Dubbo 是阿里巴巴公司开源(以前不开源)的一个高性能优秀的服务框架, 使得应用可通过高性能的 RPC 实现服务的输入和输出功能, 可以和spring框架无缝集成. 那么这里, 啥 ...

  7. Dubbo to Mesh 云原生架构改造方案解析

    作者 | 腾讯云泛互云原生团队 责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) Dubbo 是一款高性能的 Java RPC 框架,它除了拥有卓越的 ...

  8. 技术揭秘12306改造(二):探讨12306两地三中心混合云架构

    注:本文首发于CSDN,转载请标明出处. [编者按]在年前的「技术揭秘12306改造」专题中,一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式说明12306是如何实现高流量高 ...

  9. (转)探讨12306两地三中心混合云架构

    前言 2015年春节最大的特色就是"摇一摇",微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福.支付宝钱包在除夕晚上8点达峰值,首页被 ...

最新文章

  1. 在项目中引入领域驱动设计的经验
  2. Https 客户端与服务器交互过程梳理(转)
  3. AI:神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化
  4. 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)...
  5. caffe路径正确,却读不到图片
  6. mysql安装包下载密码_MySQL解压包的安装与下载的图文教程
  7. 糖果(信息学奥赛一本通-T1299)
  8. 实体与电商不是敌人 体验经济决定远方
  9. 电子邮件.NET控件MailBee.NET Objects使用指南合集(上)
  10. Metaverse:一念天堂,还是一念地狱?
  11. 平面应变四节点matlab,matlab-四节点四边形等参元的刚度矩阵计算程序.doc
  12. 机器学习:心血管疾病数据分析
  13. python随机密码生成代码大全_Python实现随机密码生成器
  14. c语言找adc最小值,STC12C5A60S2 AD转换C语言示例程序(ADC查询方式)
  15. 小白如何快速绘制原型图
  16. 服务器刷新率和显示器刷新率,什么是屏幕刷新率
  17. ​主机安全是什么以及​主机安全的功能和价值分析
  18. Git和Github的使用
  19. 批量插入图片——《超级处理器》应用
  20. 家用设备搭建VMWARE超融合 NSX HORIZON 及CISCO测试环境

热门文章

  1. Java中的浅拷贝与深拷贝
  2. Centos-安装Docker并使用Docker安装mysql遇到的问题以及解决方法
  3. Spring Boot 2.X 实现文件上传(三)
  4. Unity UGUI获取鼠标在屏幕的准确点击位置
  5. bzoj1150 [CTSC2007]数据备份Backup
  6. day09_读写分离_组件介绍
  7. 保证你现在和未来不失业的10种关键技【转载】
  8. 【C#】Web页面传值小结-
  9. 毛慧昀:决策树实现对鸢尾花数据集的分类
  10. 【青少年编程】【三级】换装