带你读《Apache Dubbo微服务开发从入门到精通》——二、 迁移到应用级服务发现(6)

简介: 带你读《Apache Dubbo微服务开发从入门到精通》——二、 迁移到应用级服务发现(6)

《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3——二、 迁移到应用级服务发现(5) https://developer.aliyun.com/article/1223585


3. 升级中用到的规则详解

 

image.png

 

1) 状态模型

 

在Dubbo 3之前地址注册模型是以接口级粒度注册到注册中心的,而Dubbo 3全新的应用级注册模型注册到注册中心的粒度是应用级的。从注册中心的实现上来说是几乎不一样的,这导致了对于从接口级注册模型获取到的invokers是无法与从应用级注册模型获取到的invokers进行合并的。为了帮助用户从接口级往应用级迁移,Dubbo 3设计了Migration机制,基于三个状态的切换实现实际调用中地址模型的切换。

 

image.png

 

当前共存在三种状态,FORCE_INTERFACE(强制接口级),APPLICATION_FIRST(应用级优先)、FORCE_APPLICATION(强制应用级)。

 

FORCE_INTERFACE:只启用兼容模式下接口级服务发现的注册中心逻辑,调用流量100%走原有流程

 

APPLICATION_FIRST:开启接口级、应用级双订阅,运行时根据阈值和灰度流量比例动态决定调用流量走向

 

FORCE_APPLICATION只启用新模式下应用级服务发现的注册中心逻辑,调用流量 100% 走应用级订阅的地址

 

2) 规则体说明

 

规则采用yaml格式配置,具体配置下参考如下:

image.png

 

Key消费者应用名

 

Step状态名(FORCE_INTERFACE、APPLICATION_FIRST、FORCE_APPLICATION)

 

Threshold决策阈值(浮点数,具体含义参考后文)

 

Proportion灰度比例(0~100,决定调用次数比例)

 

Delay延迟决策时间(延迟决策的时间,实际等待时间为1~2倍delay时间,取决于注册中心第一次通知的时间,对于目前Dubbo的注册中心实现次配置项保留0即可)

 

Force强制切换(对于FORCE_INTERFACE、FORCE_APPLICATION是否不考虑决策直接切换,可能导致无地址调用失败问题)

 

Interfaces接口粒度配置

 

参考配置示例如下:

image.png


3) 配置方式说明

 

a) 配置中心配置文件下发(推荐)

 

Key消费者应用名+“.migration”

GroupDUBBO_SERVICEDISCOVERY_MIGRATION

 

配置项内容参考上一节

 

程序启动时会拉取此配置作为最高优先级启动项,当配置项为启动项时不执行检查操作,直接按状态信息达到终态。

 

程序运行过程中收到新配置项将执行迁移操作,过程中根据配置信息进行检查,如果检查失败将回滚为迁移前状态。迁移是按接口粒度执行的,也即是如果一个应用有10个接口,其中8个迁移成功,2个失败,那终态8个迁移成功的接口将执行新的行为,2个失败的仍为旧状态。如果需要重新触发迁移可以通过重新下发规则达到。

 

注:

如果程序在迁移时由于检查失败回滚了,由于程序无回写配置项行为,所以如果此时程序重启了,那么程序会直接按照新的行为不检查直接初始化。

 

b) 启动参数配置

 

配置项名:dubbo.application.service-discovery.migration

允许值范围:FORCE_INTERFACE、APPLICATION_FIRST、FORCE_APPLICATION

 

此配置项可以通过环境变量或者配置中心传入,启动时优先级比配置文件低,也即是当配置中心的配置文件不存在时读取此配置项作为启动状态。

 

c) 本地文件配置

 

image.png

 

配置文件中格式与前文提到的规则一致

 

本地文件配置方式本质上是一个延时配置通知的方式,本地文件不会影响默认启动方式,当达到延时时间后触发推送一条内容和本地文件一致的通知。这里的延时时间与规则体中的delay字段无关联。

 

本地文件配置方式可以保证启动以默认行为初始化,当达到延时时触发迁移操作,执行对应的检查,避免启动时就以终态方式启动。



《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3——二、 迁移到应用级服务发现(7) https://developer.aliyun.com/article/1223581

相关文章
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
490 89
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
366 2
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
监控 JavaScript 测试技术
从单体应用迁移到微服务的最佳实践
【8月更文第29天】随着软件架构的发展,越来越多的企业开始考虑从传统的单体应用迁移到微服务架构。虽然迁移可以带来诸如更好的可扩展性、更高的灵活性等优势,但这一过程也可能充满挑战。本文将详细介绍如何顺利地进行这一转变,并提供一些实用的步骤和示例代码。
561 1
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
1088 119
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
272 0
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
480 101
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
213 0
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
1237 17
微服务框架Dubbo环境部署实战
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
555 2

热门文章

最新文章

推荐镜像

更多