开发者社区 > 云原生 > 中间件 > 正文

go如果要和java的通讯,异构语言间的通讯,dubbo有解决方法吗?是用triple协议?

go如果要和java的通讯,异构语言间的通讯,dubbo有解决方法吗?是用triple协议?

展开
收起
乐天香橙派 2023-08-01 17:09:02 160 0
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    Dubbo可以很好地支持Go和Java之间的服务调用。
    image.png

    Dubbo使用的不是triple协议,而是基于基于TCP的一种简单的序列化协议。

    Dubbo支持的通讯方式主要有两种:

    基于jsonrpc的远程调用方式。它非常适合跨语言调用。

    基于dubbo自定义协议。它提供了比jsonrpc更高效的二进制传输方式。

    对于Go与Java之间的调用,可以选择以下两种方式:

    Go客户端使用Dubbo的jsonrpc调用方式。
    此方式不需要Go端了解Dubbo的内部协议,只要遵循jsonrpc标准即可。

    Java提供webservice服务,Go作为客户端调用。
    Go可以很方便地调用Java的webservice服务。可以将Java服务暴露为webservice,Go再通过webservice调用。

    使用上述两种方式,都可以让Go方便地调用已有的Java Dubbo服务。

    Japanese示例:

    go
    Copy

    // Go作为Dubbo jsonrpc的客户端调用
    client := dubborgs.NewClient("http://127.0.0.1:20880/jsonrpc")
    image.png

    request := dubborgs.JsonRpcRequest{
    Jsonrpc: "2.0",
    Id: 1,
    Method: "com.service.HelloService.sayHello",
    Params: []interface{}{"dubbo"},
    }

    response := dubborgs.JsonRpcResponse{}
    err := client.Call(request, &response)

    // Go调用Java的webservice服务
    client := soap.NewClient("http://localhost:8080/HelloService?wsdl")
    var result string
    client.Call("sayHello", "dubbo", &result)

    希望以上信息能为您提供参考。欢迎继续提问。

    2023-08-02 19:56:19
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载