V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
lcj2class
V2EX  ›  Go 编程语言

实践总结:在 Java 中调用 Go 代码

  •  
  •   lcj2class · 2020-08-08 15:51:23 +08:00 via iPhone · 4401 次点击
    这是一个创建于 1600 天前的主题,其中的信息可能已经有所发展或是发生改变。
    13 条回复    2020-08-09 10:13:05 +08:00
    kalista
        1
    kalista  
       2020-08-08 17:04:18 +08:00
    想知道为什么不通过 rpc 通信的方式,和 cgo 调用优劣在哪,我个人比较倾向前者
    Jirajine
        2
    Jirajine  
       2020-08-08 18:16:40 +08:00
    写成接口出来调用比较合适,两个带 GC 的语言之间根本没法共享内存,相互调用麻烦且低效。
    sunny352787
        3
    sunny352787  
       2020-08-08 18:20:46 +08:00
    有没有碰到线程问题?我在 Unity 的 C#中调用 go 的时候发现在 go 中开 goroutine 会卡死,以及各个平台传递数据的方式是不太一样的,具体使用方式在 https://github.com/sunny352/Example_Unity_Plugin_Go
    xcstream
        4
    xcstream  
       2020-08-08 18:50:06 +08:00
    走管道吧 或者网络也行
    supermoonie
        5
    supermoonie  
       2020-08-08 20:36:53 +08:00 via iPhone
    rpc 吧,简单方便
    wangxiaoaer
        6
    wangxiaoaer  
       2020-08-08 20:57:44 +08:00
    借楼问一下,以前一直一位 RPC 跟 API 请求没啥两样,刚搜了下,好像还不太一样。

    API 不限语言,RPC 需要 client 跟 server 开发语言一致? 而且感觉 RPC 的话 client 跟 server 有大量重复代码(定义接口之类),是不是更麻烦些?
    lcj2class
        7
    lcj2class  
    OP
       2020-08-08 21:39:14 +08:00
    @kalista #1 看依赖服务的情况吧,如果就依赖一两个功能,JNA 方便些。rpc 调用的话, 相当于整条链路上多了一跳,服务的治理、维护、升级都是不小的问题
    labulaka521
        8
    labulaka521  
       2020-08-08 22:56:40 +08:00 via iPhone
    @wangxiaoaer rpc 服务端客户端语言可以不一样吧
    magicdu
        9
    magicdu  
       2020-08-08 22:59:25 +08:00
    grpc
    huanghe314
        10
    huanghe314  
       2020-08-09 02:39:48 +08:00 via iPhone
    @wangxiaoaer 当然可以不一样了,只要 rpc 是一套协议就行
    tairan2006
        11
    tairan2006  
       2020-08-09 09:09:47 +08:00 via Android
    @wangxiaoaer RPC 也是一种 API
    wangxiaoaer
        12
    wangxiaoaer  
       2020-08-09 09:37:08 +08:00 via iPhone
    @tairan2006 那我感觉没啥大的区别啊。

    或者说借助一些 rpc 库可以实现自动 http 调用,跟本地调用一样?而 API 需要自己手动调用?
    GoLand
        13
    GoLand  
       2020-08-09 10:13:05 +08:00
    @wangxiaoaer 两个层面的东西,HTTP 接口也可以看做 RPC 的一种,只不过具体是用 HTTP 协议来实现的。RPC 是一个很宽泛的概念。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1123 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:51 · PVG 02:51 · LAX 10:51 · JFK 13:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.