带你读《Apache Dubbo微服务开发从入门到精通》——七、元数据中心(1)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
性能测试 PTS,5000VUM额度
简介: 带你读《Apache Dubbo微服务开发从入门到精通》——七、元数据中心(1)


七、元数据中心

 

1. 元数据中心概览

 

元数据中心为Dubbo中的两类元数据提供了存取能力:

 

地址发现元数据。地址发现详情请参考【服务发现】一章

接口-应用映射关系

接口配置数据

 

服务运维元数据

接口定义描述数据

消费者订阅关系数据

 

关于如何配置开启元数据中心请参考具体实现文档。

 

1) 地址发现元数据

 

Dubbo3中引入了应用级服务发现机制,用来解决异构微服务体系互通与大规模集群实践的性能问题,应用级服务发现将全面取代2.x是时代的接口级服务发现。

 

同时为了保持Dubbo面向服务/接口的易用性、服务治理的灵活性,Dubbo围绕应用级服务发现构建了一套元数据机制,即接口-应用映射关系与接口配置元数据。

 

a) 接口-应用映射关系

 

Dubbo一直以来都能做到精确的地址发现,即只订阅Consumer声明要关心的服务及相关的地址列表,相比于拉取/订阅全量地址列表,这样做有很好的性能优势。

 

在应用级服务发现模型中,想做到精确地址订阅并不容易,因为Dubbo Consumer只声明了要消费的接口列表,Consumer需要能够将接口转换为Provider应用名才能进行精准服务订阅,

 

为此,Dubbo需要在元数据中心维护这一份接口名->应用名的对应关系,Dubbo3中通过provider启动的时主动向元数据中心上报实现。

 

接口service name-应用Provider application name的映射关系可以是一对多的,即一个service name可能会对应多个不同的application name。

 

以zookeeper为例,映射关系保存在以下位置

image.png

节点路径是/dubbo/mapping/{interface name}

多个应用名通过英文逗号隔开

 

b) 接口配置元数据

 

接口级配置元数据`是作为地址发现的补充,相比于Spring Cloud等地址发现模型只能同步IP、port信息,Dubbo的服务发现机制可以同步接口列表、接口定义、接口级参数配置等信息。

 

这部分内容根据当前应用的自身信息、以及接口信息计算而来,并且从性能角度出发,还根据元数据生成revision,以实现不同机器实例间的元数据聚合。

 

以Zookeeper为例,接口配置元数据保存在以下位置,如果多个实例生成的revision相同,则最终会共享同一份元数据配置:


/dubbo/metadata/{application name}/{revision}

image.png


{
    "app":"demo-provider",
    "revision":"da3be833baa2088c5f6776fb7ab1a436",
    "services":{
        "org.apache.dubbo.demo.DemoService:dubbo":{
            "name":"org.apache.dubbo.demo.DemoService",
            "protocol":"dubbo",
            "path":"org.apache.dubbo.demo.DemoService",
            "params":{
                "side":"provider",
                "release":"",
                "methods":"sayHello,sayHelloAsync",
                "deprecated":"false",
                "dubbo":"2.0.2",
                "pid":"38298",
                "interface":"org.apache.dubbo.demo.DemoService",
                "service-name-mapping":"true",
                "timeout":"3000",
                "generic":"false",
                "metadata-type":"remote",
                "delay":"5000",
                "application":"demo-provider",
                "dynamic":"true",
                "REGISTRY_CLUSTER":"registry1",
                "anyhost":"true",
                "timestamp":"1626887121829"
            }
        },
        "org.apache.dubbo.demo.RestDemoService:1.0.0:rest":{
            "name":"org.apache.dubbo.demo.RestDemoService",
            "version":"1.0.0",
            "protocol":"rest",
            "path":"org.apache.dubbo.demo.RestDemoService",
            "params":{
                "side":"provider",
                "release":"",
                "methods":"getRemoteApplicationName,sayHello,hello,error",
                "deprecated":"false",
                "dubbo":"2.0.2",
                "pid":"38298",
                "interface":"org.apache.dubbo.demo.RestDemoService",
                "service-name-mapping":"true",
                "version":"1.0.0",
                "timeout":"5000",
                "generic":"false",
                "revision":"1.0.0",
                "metadata-type":"remote",
                "delay":"5000",
                "application":"demo-provider",
                "dynamic":"true",
                "REGISTRY_CLUSTER":"registry1",
                "anyhost":"true",
                "timestamp":"1626887120943"
            }
        }
    }
}




《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——七、元数据中心(2):https://developer.aliyun.com/article/1223684



 



 

 

 

 



相关文章
|
1月前
|
监控 Java 持续交付
后端开发中的微服务架构实践与挑战####
在当今快速迭代的软件开发领域,微服务架构以其灵活性和可扩展性成为众多企业的首选。本文探讨了微服务架构的核心概念、实施策略及面临的主要挑战,旨在为后端开发者提供一个全面的指南。通过分析真实案例,揭示微服务在提升系统敏捷性的同时,如何有效应对分布式系统的复杂性问题。 ####
|
1月前
|
消息中间件 API 持续交付
后端开发中的微服务架构实践####
【10月更文挑战第21天】 本文深入探讨了微服务架构在后端开发中的应用,从基本概念出发,详细阐述了微服务的核心优势、设计原则及关键技术。通过实际案例分析,揭示了微服务如何助力企业应对复杂业务需求,提升系统的可扩展性、灵活性与可靠性。同时,也指出了实施微服务过程中可能面临的挑战,并提供了相应的解决方案和最佳实践。 ####
31 3
|
1月前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
1月前
|
消息中间件 监控 持续交付
后端开发中的微服务架构设计与实践####
在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用的关键策略。本文将深入探讨微服务架构的核心概念、设计原则与实战技巧,通过实例解析如何在后端开发中有效实施微服务,以应对复杂业务需求和技术挑战。我们将从微服务的拆分策略、通信机制、数据管理到持续集成/持续部署(CI/CD)流程,全面剖析其背后的技术细节与最佳实践,为读者提供一份详尽的微服务架构设计与实践指南。 ####
|
22天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
20天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
33 1
|
22天前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
40 1
|
23天前
|
负载均衡 监控 API
后端开发中的微服务架构实践与挑战
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势和面临的挑战,并通过案例分析提出了相应的解决策略。微服务架构以其高度的可扩展性和灵活性,成为现代软件开发的重要趋势。然而,它同时也带来了服务间通信、数据一致性等问题。通过实际案例的剖析,本文旨在为开发者提供有效的微服务实施指导,以优化系统性能和用户体验。
|
28天前
|
消息中间件 运维 开发者
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,从其核心概念、设计原则到实际部署过程中面临的挑战进行了全面剖析。不同于传统的单体应用,微服务通过将复杂系统拆解为一系列小型、独立的服务,提高了系统的灵活性和可维护性。然而,这种架构的转变也伴随着服务间通信、数据一致性、部署复杂性等新问题。本文旨在为开发者提供一套应对这些挑战的策略,同时分享一些成功案例,以期促进微服务架构的有效实施。 ####
|
1月前
|
缓存 负载均衡 API
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的可扩展性、灵活性及易于维护的特点,成为众多企业后端开发的首选架构模式。本文将深入探讨微服务架构的核心理念,通过具体案例分析其在实际应用中的实践策略与面临的挑战,为读者提供一份详尽的微服务架构实施指南。 ####

推荐镜像

更多