Go Ruby 和 Golang 的 RPC

xiaohuxu · 2017年05月03日 · 最后由 tzwm 回复于 2017年06月02日 · 7730 次阅读

前言

项目中有 ruby 和 golang,导致两者直接的代码需要相互调用。我们大部分的代码使用的 http 的 rest,但是感觉不太自然。 参加 GOPHER 大会后,看到很多人使用 GRPC。看了文档后感觉有点复杂,我们项目简单,人员少。暂时没有必要用,我们暂时选择了相对简单的 hprose。

ruby 客户端

  1. Gemfile 中

    gem "hprose"
    gem "uuidtools"
    
  2. 调用

    require 'hprose'
    client = HproseClient.new('http://127.0.0.1:8080/rpc')
    client.hello('World') { |result|
      puts result
    }.join
    

golang 服务端

import "github.com/hprose/hprose-golang/rpc"

func init(){ 

    service := rpc.NewHTTPService() 

    service.AddFunction("hello", hello) 

    beego.Handler("/rpc", service) 
} 

func hello(name string) string { 
    return "Hello " + name + "!" 
}

结束语

以上主要想记录一下现在的想法,😄

我们内部倒是用 gRPC 比较多,Ruby 和 Golang 项目都有。使用下来感觉,确实 gRPC 对 Ruby 不太友好,有挺多的坑,但也能一路踩过去,确实没有和 Golang 的亲密度高。倒是没有用过 hprose,期待楼主踩坑后的继续分享。

2 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号