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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 带你读《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

相关文章
|
SQL Java 数据库连接
Apache Doris 支持 Arrow Flight SQL 协议,数据传输效率实现百倍飞跃
近年来,随着数据科学、数据湖分析等场景的兴起,对数据读取和传输速度提出更高的要求。而 JDBC/ODBC 作为与数据库交互的主流标准,在应对大规模数据读取和传输时显得力不从心,无法满足高性能、低延迟等数据处理需求。为提供更高效的数据传输方案,Apache Doris 在 2.1 版本中基于 Arrow Flight SQL 协议实现了高速数据传输链路,使得数据传输性能实现百倍飞跃。
814 0
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
334 1
|
11月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
629 123
|
Dubbo 前端开发 Java
Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
本文展示了 Dubbo3 triple 协议是如何简化从协议规范与实现上简化开发测试、入口流量接入成本的,同时提供高性能通信、面向接口的易用性编码。
16992 110
|
12月前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
145 4
|
消息中间件 Java Kafka
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
302 1
|
负载均衡 Java API
深度解析SpringCloud微服务跨域联动:RestTemplate如何驾驭HTTP请求,打造无缝远程通信桥梁
【8月更文挑战第3天】踏入Spring Cloud的微服务世界,服务间的通信至关重要。RestTemplate作为Spring框架的同步客户端工具,以其简便性成为HTTP通信的首选。本文将介绍如何在Spring Cloud环境中运用RestTemplate实现跨服务调用,从配置到实战代码,再到注意事项如错误处理、服务发现与负载均衡策略,帮助你构建高效稳定的微服务系统。
335 2
|
消息中间件 API 数据库
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
|
XML Cloud Native Dubbo
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(一)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
798 1
|
XML Dubbo Java
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(二)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
158 2

热门文章

最新文章

推荐镜像

更多