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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
性能测试 PTS,5000VUM额度
简介: 带你读《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





相关文章
|
1月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
6月前
|
Apache 数据库
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
30 0
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
192 9
Apache IoTDB进行IoT相关开发实践
|
4月前
|
JSON Dubbo Java
【Dubbo协议指南】揭秘高性能服务通信,选择最佳协议的终极攻略!
【8月更文挑战第24天】在分布式服务架构中,Apache Dubbo作为一款高性能的Java RPC框架,支持多种通信协议,包括Dubbo协议、HTTP协议及Hessian协议等。Dubbo协议是默认选择,采用NIO异步通讯,适用于高要求的内部服务通信。HTTP协议通用性强,利于跨语言调用;Hessian协议则在数据传输效率上有优势。选择合适协议需综合考虑性能需求、序列化方式、网络环境及安全性等因素。通过合理配置,可实现服务性能最优化及系统可靠性提升。
69 3
|
4月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
62 1
|
4月前
|
负载均衡 Java API
深度解析SpringCloud微服务跨域联动:RestTemplate如何驾驭HTTP请求,打造无缝远程通信桥梁
【8月更文挑战第3天】踏入Spring Cloud的微服务世界,服务间的通信至关重要。RestTemplate作为Spring框架的同步客户端工具,以其简便性成为HTTP通信的首选。本文将介绍如何在Spring Cloud环境中运用RestTemplate实现跨服务调用,从配置到实战代码,再到注意事项如错误处理、服务发现与负载均衡策略,帮助你构建高效稳定的微服务系统。
118 2
|
4月前
|
C# 开发者 Windows
勇敢迈出第一步:手把手教你如何在WPF开源项目中贡献你的第一行代码,从选择项目到提交PR的全过程解析与实战技巧分享
【8月更文挑战第31天】本文指导您如何在Windows Presentation Foundation(WPF)相关的开源项目中贡献代码。无论您是初学者还是有经验的开发者,参与这类项目都能加深对WPF框架的理解并拓展职业履历。文章推荐了一些适合入门的项目如MvvmLight和MahApps.Metro,并详细介绍了从选择项目、设置开发环境到提交代码的全过程。通过具体示例,如添加按钮点击事件处理程序,帮助您迈出第一步。此外,还强调了提交Pull Request时保持专业沟通的重要性。参与开源不仅能提升技能,还能促进社区交流。
52 0
|
4月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
61 0
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
263 12
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
152 0
Apache IoTDB进行IoT相关开发实践

热门文章

最新文章

推荐镜像

更多