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

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

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


4) 开启 Triple 新特性——Stream(流)


Stream Dubbo3 新提供的一调用类型,在以下场景时建议使用流的方式

需要量数据,这些数据在一RPC 应中,需要分应用按照传统的多次 RPC 方式和性能的问题,如需要保有序,则行发

流式场景,数据需要按照理,数据本有确定边界的。

场景,多个在同一调用的上下文中被发理。


Stream 分为以下三:

SERVER_STREAM(服务端流)

image.pngimage.png

CLIENT_STREAM户端流)

image.png

BIDIRECTIONAL_STREAM双向流)

image.png

注:

java 语言的限制,BIDIRECTIONAL_STREAM CLIENT_STREAM 的实现是一样的。


Dubbo3 中,流式SteamObserver 和使用,用户可以通过使用和实现这个接理流的数据、异结束


注:

对于 Dubbo2 用户,可能会对 StreamObserver 生,Dubbo3 定义的一类型Dubbo2 并不Stream 类型对于迁移场景有任何影响


流的语义保

提供边界,可以方便地

有序,发端的

工,发不需要等待

支持取


a) 非 PB 序列化的流


apimage.png

注:

Stream 的方入参和返回的,为错而,Dubbo3框架了对参数的检查,如出错


对于双向流(BIDIRECTIONAL_STREAM),需要注意参数中的StreamObserver 是响应流,返回参数中的 StreamObserver 求流。


实现

public class WrapGreeterImpl implements WrapGreeter {
 //...
 @Override
 public StreamObserver<String> 
sayHelloStream(StreamObserver<String> response) {
 return new StreamObserver<String>() {
 @Override
 public void onNext(String data) {
 System.out.println(data);
 response.onNext("hello,"+data);
 @Override
 public void onError(Throwable throwable) {
 throwable.printStackTrace();
 }
 @Override
 public void onCompleted() {
 System.out.println("onCompleted");
 response.onCompleted();
 }
 };
 }
 @Override
 public void sayHelloServerStream(String request, 
StreamObserver<String> response) {
 for (int i = 0; i < 10; i++) {
 response.onNext("hello," + request);
 }
 response.onCompleted();
 }
}

调用方式

delegate.sayHelloServerStream("server stream", new 
StreamObserver<String>() {
 @Override
 public void onNext(String data) {
 System.out.println(data);
 }
 @Override
 public void onError(Throwable throwable) {
 throwable.printStackTrace();
 }
 @Override
 public void onCompleted() {
 System.out.println("onCompleted");
 }
});
StreamObserver<String> request = delegate.sayHelloStream(new 
StreamObserver<String>() {
 @Override
 public void onNext(String data) {
 System.out.println(data);
 }
 @Override
 public void onError(Throwable throwable) {
 throwable.printStackTrace();
 }
 @Override
 public void onCompleted() {
 System.out.println("onCompleted");
 }
});
for (int i = 0; i < n; i++) {
 request.onNext("stream request" + i);
}
request.onCompleted();


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

相关文章
|
11天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
1月前
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
84 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
24天前
|
Java 持续交付 微服务
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过具体案例分析,揭示了其如何助力企业应对业务复杂性、提升系统可维护性和可扩展性。文章首先概述了微服务的核心概念及其优势,随后详细阐述了实施微服务过程中的关键技术选型、服务拆分策略、容错机制以及持续集成/持续部署(CI/CD)的最佳实践。最后,通过一个真实世界的应用实例,展示了微服务架构在实际项目中的成功应用及其带来的显著成效。 ####
|
25天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
48 2
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
95 3
|
1月前
|
设计模式 API 开发者
探索现代后端开发:微服务架构与API设计
【10月更文挑战第6天】探索现代后端开发:微服务架构与API设计
|
5天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
7天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
8天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
30 2
|
17天前
|
缓存 运维 监控
后端开发中的微服务架构实践与挑战#### 一、
【10月更文挑战第22天】 本文探讨了微服务架构在后端开发中的应用实践,深入剖析了其核心优势、常见挑战及应对策略。传统后端架构难以满足快速迭代与高可用性需求,而微服务通过服务拆分与独立部署,显著提升了系统的灵活性和可维护性。文章指出,实施微服务需关注服务划分的合理性、通信机制的选择及数据一致性等问题。以电商系统为例,详细阐述了微服务改造过程,包括用户、订单、商品等服务的拆分与交互。最终强调,微服务虽优势明显,但落地需谨慎规划,持续优化。 #### 二、

推荐镜像

更多