带你读《Apache Tomcat的云原生演进》——Dubbo Echo System-Dubbo Go Pixiu(2)

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
云原生网关 MSE Higress,422元/月
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 带你读《Apache Tomcat的云原生演进》——Dubbo Echo System-Dubbo Go Pixiu(2)

带你读《Apache Tomcat的云原生演进》——Dubbo Echo System-Dubbo Go Pixiu(1)https://developer.aliyun.com/article/1377517


2. Pixiu的多协议转换

image.png

 

Pixiu作为专注于Dubbo的代理,主要支持以下四种协议:

 

HTTP,它是Pixiu对外暴露服务的主要形式。

Dubbo 2,它协议是基于TCP传输层协议之上构建的一套RPC通信协议,由于其紧凑、灵活、高性能的特点,在Dubbo2时代取得了非常广泛的应用。

Triple,它是Dubbo3发布的面向云原生时代的通信协议,它基于HTTP/2并且完全兼容gRPC协议,原生支持Streaming通信语义。

Triple PB,自 Triple 协议开始,Dubbo 还支持基于 Protocol Buffers 的服务定义与数据传输。

image.png

 

在没有Pixiu之前,Dubbo 2已经实现了一个叫泛化调用的功能。比如对于Dubbo 2来说,如果没有服务定义,依旧可以作为一个Client发起请求,我们把这个称之为泛化调用。

 

这个泛化调用会构建一个泛化专用的Service,在第一次发起请求的时候会有一个懒加载的过程,即在注册中心拉取对应服务的元数据,这一步的耗时会比较久。然后还要进行序列化、发送请求、接收响应,到这就完成了。

 

泛化调用可以在一定程度上让你在没有服务定义的情况下调用Dubbo,但它还不够完善。因此Pixiu在第一实现的Http2Dubbo的功能中,对这个功能做了增强。

 

首先我们对泛化的Service做了连接,然后Adpter模块会提前把对应服务元数据拉取出来,这样首次调用的时延就没有了。最后也是最重要的,Dubbo的调用无法对外,而Pixiu可以做到以Http的形式把这个服务暴露出去,并且能够通过Filter增加丰富的能力。

 

image.png 

 

代理Triple协议并不像Dubbo协议那么简单,因为Dubbo2采用的序列化hession协议本身是紧凑的,但它其中的信息并没有丢失。而Triple协议使用的proto序列化就不一样,为了极致的性能,它把报文中的字段全部抹掉了,这也导致了如果你想要反序列化,就必须拿到原始的ID 2的定义,否则是解析不出来的。

 

对于这个情况,Pixiu用到grpc的reflection功能。在Pixiu发起调用之前,会去对应的上游服务请求下载对应proto元数据。这样Pixiu就可以正确把这个数据序列化给到上游,同样接收响应反序列化。

 

这里有一个小故事,去年阿里云有一个想把K8s的API对外暴露出去的需求,因此就找到了我们,想要借助Http2Dubbo的功能,把API暴露出去。但在实操的过程中发现了一些问题,K8s的API是用Gogoproto组件编译出来的,而grpc reflection由于一些原因并不支持,所以为了支持这种形式的代理,我们提前引入了proto文件的形式,让这个需求得以完成。

 image.png

 

刚才有提到Http2Dubbo,也有提到Http2Triple,但它们都是7层代理协议。在4层我们做了Pixiu的Listener监听一个Dubbo协议,然后一个Dubbo请求过来,调用到Pixiu,Pixiu是可以把这个请求转换成Triple协议调用出去的。同样Pixiu去监听一个Triple协议,也可以调用到Dubbo。这几种协议之间是可以互相转换的,这个就是Pixiu的多协议转换。


带你读《Apache Tomcat的云原生演进》——Dubbo Echo System-Dubbo Go Pixiu(3)https://developer.aliyun.com/article/1377515

相关文章
|
4天前
|
Ubuntu Java 应用服务中间件
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
15 0
|
4天前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
9 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
5天前
|
开发框架 Dubbo 应用服务中间件
微服务开发框架-----Apache Dubbo
这篇文章介绍了Apache Dubbo微服务开发框架,它提供RPC通信和微服务治理能力,支持服务发现、负载均衡和流量治理等功能,并强调了Dubbo在微服务规模化实践和企业级治理方面的优势。
微服务开发框架-----Apache Dubbo
|
4天前
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
6 0
|
4天前
|
安全 Java 应用服务中间件
在CentOS 7上安装Apache Tomcat 8的方法
在CentOS 7上安装Apache Tomcat 8的方法
6 0
|
4天前
|
安全 Java 应用服务中间件
如何通过 Yum 在 CentOS 7 上安装 Apache Tomcat 7
如何通过 Yum 在 CentOS 7 上安装 Apache Tomcat 7
16 0
|
4天前
|
Java 应用服务中间件 Apache
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
7 0
|
4天前
|
开发框架 Dubbo 应用服务中间件
微服务开发框架-----Apache Dubbo
这篇文章介绍了Apache Dubbo微服务开发框架,它提供RPC通信和微服务治理能力,支持服务发现、负载均衡和流量治理等功能,并强调了Dubbo在微服务规模化实践和企业级治理方面的优势。
|
2月前
|
Java 应用服务中间件 Apache
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
86 7
|
3月前
|
Dubbo Cloud Native 应用服务中间件
【阿里云云原生专栏】云原生环境下的微服务治理:阿里云 Dubbo 与 Nacos 的深度整合
【5月更文挑战第25天】阿里云Dubbo和Nacos提供微服务治理的强大工具,整合后实现灵活高效的治理。Dubbo是高性能RPC框架,Nacos则负责服务发现和配置管理。整合示例显示,通过Nacos注册中心,服务能便捷注册发现,动态管理配置。简化部署,提升适应性,但也需注意服务稳定性和策略规划。这种整合为云原生环境的微服务架构带来强大支持,未来应用前景广阔。
252 2

推荐镜像

更多