Hi community,

Triple is a new rpc protocol defined by dubbo3. Its principle is
similar to grpc, it is a streaming rpc protocol based on http2, and is
compatible with grpc. It is recommended by Apache Dubbo community
after dubbo 3.0 version.

For more introduction to the triple protocol, please refer to the
following link (sorry for no English version, because Apache Dubbo
community does not seem to provide it for the time being):
[1] proposal: 
https://github.com/apache/dubbo-awesome/blob/master/proposals/D0-triple.md
[2] Usage example:
https://dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/protocol/triple/guide/

Regarding the Triple protocol, I want to implement two plugins.

First, we can provide an http to triple plugin, which is similar to
our current grpc plugin. (Client -> [http msg] -> shenyu -> [triple
msg] -> triple server) In shenyu, we need to serialize json messages
into protobuf messages. This is mainly used for the scheduling of
north-south traffic, we can call it "Http-To-Triple Plugin"

Second, I want to provide a plugin that directly proxy triple. (Client
-> [triple msg] -> shenyu -> [triple msg] -> triple server) In shenyu,
we do not need to do serialization and deserialization, and directly
perform triple protocol according to metadata and http2 header
Forward. This is an important benefit of the triple protocol for
gateway scenarios. This is mainly used for the scheduling of east-west
traffic, we can call it "Triple-Proxy Plugin"

For the second plugin, grpc can also implement a similar grpc-proxy
plugin. The specific implementation may be similar to our mqtt
plug-in, which opens a triple service on a certain port to handle
triple rpc requests with unknown paths.

Do you have any thoughts or suggestions about these two plugins? If
there is no problem, I will provide a more detailed proposal later.

Reply via email to