go jsonrpc
在实际项目中,我们经常会碰到服务之间交互的情况,如何方便的与远端服务进行交互,就是一个需要我们考虑的问题。
通常,我们可以采用restful的编程方式,各个服务提供相应的web接口,相互之间通过http方式进行调用。或者采用rpc方式,约定json格式进行数据交互。
在我们的项目中,服务端对用户客户端提供的是restful的接口方式,而在服务器内部,我们则采用rpc方式进行服务之间的交互。
go语言本来就提供了jsonrpc的支持,所以自然开始我们就直接使用jsonrpc。jsonrpc的使用非常简单,对于调用端来说,就如同一个函数调用,如下:
args := &Args{7, 8}
reply := new(Reply)
err := client.Call("Arith.Add", args, reply)
上面是go jsonrpc自带的一个例子,可以看到,虽然我们通过call(rpcName, inParams, outParams)这样的形式可以很方便的进行rpc的调用,但是跟go实际的函数调用还是稍微有一点区别,对我来说,这么使用总觉得很别扭。
我觉得方便的rpc使用方式
对于go jsonrpc来说,它的调用格式是这样的
err := call(name, in, out)

本文介绍了使用Go的反射(reflect)库实现一套简易RPC框架的过程。文章详细讲解了包协议选择gob的原因,以及在server和client端的实现细节,包括错误处理和nil参数的处理策略。此外,还展示了如何通过反射实现函数调用和类型转换,以达到更符合Go语言习惯的RPC调用方式。
最低0.47元/天 解锁文章
792

被折叠的 条评论
为什么被折叠?



