带你读《Apache Dubbo微服务开发从入门到精通》——三、 迁移到 HTTP/2 协议(1)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《Apache Dubbo微服务开发从入门到精通》——三、 迁移到 HTTP/2 协议(1)

三、 迁移到 HTTP/2 协议


1. 迁移方步骤


1) Triple 介绍


Triple 协议的格式和原理RPC 通信协议。


Triple 设计的标,Triple 协议以下势:


具备语言互的能力,传统的多语言多 SDK 式和 Mesh 语言模

需要更通用易扩展的数据传输协议。

提供更模型除了支持传统的 Request/Response 模型Unary 单向通信),还支持 Stream(流式通信)和 Bidirectional双向通信)。

易扩展、穿透性高,包括但不Tracing/Monitoring 支持能被各设备识别,网关设等可以识别数据文,Service Mesh 部署,降低用户理解度。

grpc户端/服务端可以与原生 grpc 户端通。

可以用现grpc 生态下的组件, 满足云原生场景下的语言环境跨平台的互通求。


当前使用协议的 Dubbo 用户,框架提供有序列化方式的迁移能力,影响线已有业务的提下,迁移协议的


需要对接 Grpc 服务的 Dubbo 用户,可以直接使用 Triple 协议实现通,不需要grpc client 来完成不仅已有Dubbo 易用性,能降低程序复杂度和开发运维本,不需要外进配和开发入现生态。


对于需要网关入的 Dubbo 用户,Triple 协议提供原生的方式,让网关开发或者使用开源的 grpc 网关组件更简单。网关可以payload,在性能有很大提高。在使用 Dubbo 协议时,语言相关的序列化方式是网关的一个很大点,传统的 HTTP Dubbo 的方式对于语言序列无能为力的。同时,由Triple 的协议元数据存储中,网关可以轻松的实现需求,如路由和限流等能。


2) Dubbo2 协议迁移流程

Dubbo2 的用户使用 dubbo 协议+自定义序列化,如 hessian2 完成远程调用。


Grpc 仅支持 Protobuf 序列化,对于 Java 语言中的参数以重载也支持


Dubbo3 的之初就有一条标是Dubbo2以为Dubbo2 够平滑升级,Dubbo 框架了很多工作来保证升级的目前认的序列化和 Dubbo2保持hessian2


以,如决定要升级到 Dubbo3 Triple 协议,需要修改配置中的协议称为tri(注意:不triple可。


以一使用 Dubbo2 协议的工程例,如一步一步全的升级。

使用 dubbo 协议provider consumer并完成调用。

使用 dubbo tri 协议provider,以 dubbo 协议consumer,并完成调用。

使用 tri 协议provider consumer并完成调用。


a) 定义服务


定义接

image.png

实现如下

image.png

b) 仅使用 dubbo 协议

性,们先将部分 provider 升级到 dubbo3 版本使用 dubbo 协议。

使用 dubbo 协议动一Provider Consumer完成调用,输出如下

image.png

c) 同时使用 dubbo 和 triple 协议

对于线上服务的升级,可能一而就同时完成 provider consumer 升级,需要按作,证业务稳定


二步,provider 提供协议的方式同时支持 dubbo+tri 两种协议的户端。


构如图

image.png


注:

按照推升级步provider 已经支持了 tri 协议,dubbo3 consumer 可以直接使用 tri 协议。


使用 dubbo 协议和 triple 协议Provider Consumer完成调用,输出如下


image.png


d) 仅使用 triple 协议


consuemr 升级支持 Triple 协议的版本provider 换至仅使用Triple 协议动。


构如图示:

image.pngProvider Consumer 完成调用,输出如下

image.png

e) 实现原理

上面介的升级程,可以简单的通修改协议类型来完成升级。框架是做到这些


过对 Triple 协议的介们知Dubbo3 Triple 的数据类型protobuf 对象protobuf java 对象可以被正常


这里 Dubbo3 使用巧妙的设计,首先参数类型protobuf 对象,如是。用一protobuf 对象request response wrapper就屏蔽了其各种序列带来复杂度。在 wrapper 对象内序列类型,来支持序列化的扩展。


wrapper protobuf IDL 如下:

image.png

对 于 求,使用 TripleRequestWrapper 对 于 应使用

TripleResponseWrapper


注:

对于求参数,可以args repeated 需要支持 java 法的多个参数。序列能是一序列化的实现沿Dubbo2 实现的 spi



《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3——三、 迁移到 HTTP/2 协议(2) https://developer.aliyun.com/article/1223559





相关文章
|
2月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
67 2
|
4月前
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
88 0
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
3月前
|
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 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
148 8
|
6月前
|
Apache 数据库
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
28 0
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
181 9
Apache IoTDB进行IoT相关开发实践
|
4月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
57 1
|
4月前
|
负载均衡 Dubbo 应用服务中间件
框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
60 5
|
4月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
51 0
|
4月前
|
负载均衡 Java API
深度解析SpringCloud微服务跨域联动:RestTemplate如何驾驭HTTP请求,打造无缝远程通信桥梁
【8月更文挑战第3天】踏入Spring Cloud的微服务世界,服务间的通信至关重要。RestTemplate作为Spring框架的同步客户端工具,以其简便性成为HTTP通信的首选。本文将介绍如何在Spring Cloud环境中运用RestTemplate实现跨服务调用,从配置到实战代码,再到注意事项如错误处理、服务发现与负载均衡策略,帮助你构建高效稳定的微服务系统。
98 2

推荐镜像

更多