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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《Apache Dubbo微服务开发从入门到精通》——二、 迁移到应用级服务发现(1)

二、 迁移到应用级服务发现


1. 总体升级方案

 

总体上来说,在地址注册与发现环节,3.x是完全兼容2.x版本的,这意味着,用户可以选择将集群内任意数量的应用或机器升级到3.x,同时在这个过程中保持与2.x版本的互操作性。

 

如关心迁移背后工作原理,请参考迁移规则详情与工作原理

 

1) 快速升级步骤

 

简单的修改pom.xml到最新版本就可以完成升级,如果要迁移到应用级地址,只需要调整开关控制3.x版本的默认行为。

 

升级Provider应用到最新3.x版本依赖,配置双注册开关dubbo.application.register-mode=all(建议通过全局配置中心设置,默认已自动开启),完成应用发布。

 

升级Consumer应用到最新3.x版本依赖,配置双订阅开关dubbo.application.service-discovery.migration=APPLICATION_FIRST(建议通过全局配置中心设置,默认已自动开启),完成应用发布。

 

在确认Provider的上有Consumer全部完成应用级地址迁移后,Provider切到应用级地址单注册。完成升级

 

以下是关于迁移流程的详细描述。

 

2) Provider端升级过程详解

 

在不改变任何Dubbo配置的情况下,可以将一个应用或实例升级到3.x版本,升级后的Dubbo实例会默保保证与2.x版本的兼容性,即会正常注册2.x格式的地址到注册中心,因此升级后的实例仍会对整个集群仍保持可见状态。

 

同时新的地址发现模型(注册应用级别的地址)也将会自动注册。

 


image.png

 

通过-D参数,可以指定provider启动时的注册行为

 

image.png

 

另外,可以在配置中心修改全局默认行为,来控制所有3.x实例注册行为。其中,全局性开关的优先级低于-D参数。

 

为了保证平滑迁移,即升级到3.x的实例能同时被2.x与3.x的消费者实例发现,3.x实例需要开启双注册;当所有上游的消费端都迁移到3.x的地址模型后,提供端就可以切换到instance模式(只注册应用级地址)。对于如何升级消费端到3.x请参见下一小节。

 

a) 双注册带来的资源消耗

 

双注册不可避免的会带来额外的注册中心存储压力,但考虑到应用级地址发现模型的数据量在存储方面的极大优势,即使对于一些超大规模集群的用户而言,新增的数据量也并不会带来存储问题。总体来说,对于一个普通集群而言,数据增长可控制在之前数据总量的1/100~1/1000

 

以一个中等规模的集群实例来说:2000实例、50个应用(500个Dubbo接口,平均每个应用10个接口)。

 

假设每个接口级URL地址平均大小为5kb,每个应用级URL平均大小为0.5kb

老的接口级地址量:2000 * 500 * 5kb ≈ 4.8G

新的应用级地址量:2000 * 50 * 0.5kb  ≈ 48M

双注册后仅仅增加了48M的数据量。

 

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

 


 


 



 



相关文章
|
6天前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
2月前
|
项目管理 微服务
云效常见问题之将多个微服务应用集成到一次研发流程中发布上线如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
28 0
|
2月前
|
数据库 Android开发 开发者
构建高性能微服务架构:从理论到实践构建高效Android应用:探究Kotlin协程的优势
【2月更文挑战第16天】 在当今快速迭代和竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性和独立部署能力而受到企业的青睐。本文将深入探讨如何构建一个高性能的微服务系统,涵盖从理论基础到具体实现的各个方面。我们将重点讨论服务拆分策略、通信机制、数据一致性以及性能优化等关键主题,为读者提供一个清晰、实用的指南,以便在复杂多变的业务环境中构建和维护健壮的微服务体系结构。 【2月更文挑战第16天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着技术的不断进步,Kotlin作为一种现代编程语言,在Android开发中被广泛采用,尤其是其协程特性为异步编程带来了革命性的改进。本文旨在深入
|
2月前
|
监控 网络协议 Go
应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控
应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控
109653 118
|
3月前
|
运维 监控 数据管理
Apollo与微服务架构:构建可扩展的应用程序
Apollo与微服务架构:构建可扩展的应用程序
|
4月前
|
微服务
微服务 乾坤子应用 内存增长 没有释放
子应用内存没有被释放,每次刷新都会增加内存增长
|
2天前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
|
7天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:容器化与微服务架构的融合
【4月更文挑战第24天】 随着云计算的不断演进,云原生技术已成为企业数字化转型的核心动力。本文深入探讨了如何通过容器化技术和微服务架构的融合,构建高效、可扩展且易于管理的云原生应用。我们分析了容器化带来的隔离性和可移植性优势,以及微服务架构在提升系统灵活性和促进团队协作方面的重要作用。文章还提供了实施策略,包括选择合适的容器平台、确保服务间通信的安全性以及持续集成/持续部署(CI/CD)的实践,以帮助企业实现敏捷开发和快速迭代。
|
12天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
51 0
|
12天前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
41 0

推荐镜像

更多