官方提供的 net/rpc 包中提供了远程服务调用(RPC)功能。通过这个包,我们可以发布出服务,供远程调用;同时,客户端通过这个包访问服务端的方法。
和其他服务端应用程序一样,我们需要开启一个监听程序,来接收客户端发起的网络请求。
//启动服务器 func Start(protocal string, port string){ rpc.HandleHTTP() l, e:= net.Listen(protocal, port) if e != nil{ log.Panic("listen error: ", e) } http.Serve(l, nil) }
服务端可以注册对象,暴露出该对象提供的方法,供客户端使用
//注册服务 func Register(v interface{}){ rpc.Register(v) }
我们可以定义自己的服务端对象,通过上述方式发布服务。
//注册服务 server.Register(new(MyService)) //启动服务器 go server.Start("tcp", ":8086")
这样,通过新建一个goroutine,发布好了自己定义的服务MyService。客户端则可以指定服务端的地址进行访问。
//根据地址调用服务,传入参数,获得结果 func CallTarget(address string, service string, args interface{}, reply interface{}) error{ client , err := rpc.DialHTTP("tcp", address) if err != nil{ log.Fatal("dialing ", err) } err = client.Call(service, args, reply) return err }
通过进一步的代码封装,可以隐藏调用细节。
const( Address = "127.0.0.1:8086" ) func (myService *MyService) SayHello(name string) string{ var result string err := client.Call(Address, &name, &result) if err != nil{ panic(err) } return result }
这样客户端就可以简便的使用rpc服务调用了
func main(){ var myService MyService log.Println(myService.SayHello("liusongwei")) }
相关推荐
2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的...
Go语言高级编程(Advanced Go Programming) 本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主 题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。
本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员! pdf高清带目录
Go语言高级编程,作者:柴树杉, 曹春晖 本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。
jr: 一个采用Go开发的JSON-RPC 命令行客户端,它是基于jsonrpcake。
《Go 语言编程之旅:一起用 Go 做项目》第三章:RPC 程序(gRPC Server)
使用Go语言开发的JSON-RPC Server,仿照JSON-RPC 2约定
《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)
high performance coding with golang(Go 语言高性能编程,Go 语言陷阱,Gotchas,Traps) Go 语言高性能编程 目录 序言 关于本书 第一章 性能分析 benchmark 基准测试 pprof 性能分析 第二章 常用...
QT,C++使用技巧,实战应用开发小系统...详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其高级特性。
Google出品的GO语言,最近有火起来的趋势。据众大神说,GO语言弥补了C和C++还其他语言的缺陷,颇有白富美的感觉。 网络上搜索了一番,发现【吾爱】上并没有GO语言的视频下载,其他站点也很少提供GO语言的视频教学。 ...
TarsGo是基于Golang编程语言使用Tars协议的高性能RPC框架。随着docker,k8s,etcd等容器化技术的兴起,Go语言变得流行起来。Go的goroutine并发机制使Go非常适合用于大规模高并发后端服务程序的开发。 Go语言具有接近C/...
Go语言高级编程(高级Go编程) Go语言QQ群:102319854,1055927514 光谷码农课堂: ://study.163.com/provider/480000001914454/index.htm 凹语言(凹读音“ Wa”)(Wa编程语言): : 蚂蚁金服招聘云原生方向和...
GO语言和网络编程有关的包都在net包下,通过net包及其子包,可以实现各种协议编程、Socket编程、http编程、rpc编程等。 一、Socket编程 1、Dial函数 Go语言中 Dial() 函数用于创建网络连接,函数原型如下: func ...
Go语言作为面向服务端编程的语言,其标准库中自带了功能完整的RPC模块,但是这个模块用的是gob格式传输数据,当开发Go程序间通讯时是很好用的,但是要让Go之外的别的编程语言解析gob格式就很麻烦了。 夸语言通讯首选...
webrpc - 是为现代Web应用量身定制的轻量级客户端 服务器RPC框架
karma.link是一个跨平台的RPC服务器,允许“经典”IT系统通过JSON与以太坊区块链网络上的智能合约进行交互
Go语言客户端.mkv74. RPC 负载均衡.mkv75. 多机求平均数和中位数的算法.mkv76. 代码实现及运行实例.mkv77. 实现RCP框架:服务端.mkv78. 实现RPC框架:客户端.mkv79. 单词计数及按频度排序,单机算法.mkv80. 单机版...
go-xmlrpc - 为golang添加XML RPC支持使用go generate (generates xml parse code)