[apache/dubbo]triple 协议不兼容 grpc

2023-12-13 249 views
8
Environment
  • Dubbo version: 3.1.7
  • Operating System version: windows 11
  • Java version: 1.8
Steps to reproduce this issue
  1. 服务端启动报错,使用GRPC协议
    
    Caused by: java.lang.ClassNotFoundException: io.grpc.HandlerRegistry
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 20 more
2. 使用triple协议启动 java 服务端,客户端go-grpc 调用报错
```java
2023/08/16 16:39:59 could not msg: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp 127.0.0.1:50052: connectex: No connection could be made because the target machine actively refused it."

Pls. provide [GitHub address] to reproduce this issue.

Expected Behavior

按照官网的说法triple 协议完全兼容grpc 协议,期望可以用grpc协议和dubbo-triple协议互通,

如果我想强行互通的话,是不是需要使用老版本的dubbo? 这样的话是不是后面没有社区支持了

回答

7

会不会是你那边grpc版本太低了,我看grpc-api中1.57.1是有你那边缺失的类型的

image
5

请问要用什么版本,我grpc版本是1.44.1,这是sample里边的版本

6

image

7

@EarthChen PTAL

9

triple 的 server 为什么会有 grpc 的 class 呢? 检查一下自己的依赖

2

放在一个项目里边的,成功启动之后,GRPC调用 直接超时

9

请问有没有一个案例(原生GRPC可以直接调用DUBBO triple 协议)?

4

sample 中有个 triple 模块 里面有互通的测试

9

dubbo server 启动如下 :

image

grpc client 如下 :

image

我看了sample 貌似现在都是直接用的tri 协议,没有GRPC 的案例

image
8

我需要的是跨语言的 sample ,例如我现在使用rust 或者golang 能不能和dubbo 的tri 协议互通?

3

尝试引用grpc的bom,然后看项目实际引用的grpc的每个包的版本是否接近。我今天遇到了相同的ClassNotFound,是这么解决的

4

我这边JAVA grpc bom v1.57.1 , go mod v1.57.0 一样的结果

6

GRPC原生互通 JAVA服务端必须以stream的定义,我改了下,貌似可以了