官方提供的 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")) }
相关推荐
books_《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf_advanced-go-programming-book.zip books_《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf_advanced-go-...
**Thrift**是Facebook开发的另一个著名的跨语言RPC框架,支持广泛的编程语言。它提供了编译器和库来构建跨语言服务,具有很强的灵活性。 **RPCX**是一个高性能、全功能的分布式RPC框架,专为Go语言设计。RPCX的特点...
在本文中,我们将深入探讨如何使用Go语言和jsonrpc库来构建一个基于Websocket的客户端,以便与服务端进行交互并处理接收到的通知消息。首先,让我们了解这些关键概念: 1. **Go语言(Golang)**:由Google开发的...
**Go-jr: Go语言实现的JSON-RPC命令行客户端** Go-jr是一个用Go语言编写的JSON-RPC命令行工具,它为开发者提供了一种简单、高效...通过深入理解JSON-RPC协议和Go语言的网络编程,可以更有效地利用Go-jr进行开发工作。
总的来说,Go RPC开发指南不仅介绍了Go语言如何使用官方库进行RPC服务开发,还涵盖了流行框架如gRPC,以及其他一些高级框架和工具。通过阅读这份指南,开发者可以快速掌握Go生态下的RPC开发技术,并将其应用到实际的...
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 RPC开发指南.pdf" ...Go RPC开发指南.pdf是Go语言中的一种RPC开发指南,涵盖了RPC的基本概念、RPC库的选择、RPC服务的实现、客户端调用、序列化、Fail Mode、路由选择、统计与限流等多个方面。
本文档主要介绍了Go语言中的网络编程基础知识,涵盖了Socket编程、HTTP客户端与服务器的实现方式,以及如何通过Go语言进行RPC(远程过程调用)和JSON数据交换等实用技巧。此外,还涉及了Web开发相关的实践内容。 ##...
### Golang语言网络编程知识点详解 ...以上示例展示了如何使用Go语言进行网络编程的基本操作,包括Socket编程、HTTP编程以及RPC编程的核心概念和技术细节。这些基础知识对于开发高质量的网络应用程序至关重要。
- **Socket编程**:介绍如何使用Go语言进行网络编程,特别是TCP/IP协议的Socket编程。 - **WebSocket**:讲解WebSocket协议及其在Go语言中的实现方法,用于实现实时双向通信。 - **REST**:探讨RESTful架构的设计...
本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。对于刚学习Go语言的读者,建议先从《Go语言圣经》开始系统学习Go语言的基础...
本话题聚焦于Golang(Go语言)与Java之间的JSON-RPC(JSON Remote Procedure Call)通信,这是一种轻量级的远程调用协议,通过JSON(JavaScript Object Notation)作为数据交换格式来实现。在这个场景下,我们主要...
- **pbgo框架**:pbgo是一个基于Protobuf的Go语言框架,它简化了使用protobuf进行RPC通信的过程。这部分内容介绍了pbgo的基本使用方法及其在实际项目中的应用场景。 - **grpcurl工具**:grpcurl是一个命令行工具,...
在IT行业中,Go语言因其高效的性能、...通过研究"jrs-master"项目,我们可以深入理解Go语言如何构建一个高性能、符合JSON-RPC 2.0标准的服务器框架,这对于任何希望在Go中进行网络编程的开发者来说都是一笔宝贵的财富。
概述了使用Go语言进行Web开发的基本流程和技术栈选择。 **5.2 Router请求路由** 介绍了如何使用路由功能处理不同的HTTP请求。 **5.3 Middleware中间件** 讲解了中间件的概念以及如何在Go Web框架中使用中间件。 ...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。这个压缩包中的文件是与Go语言编程相关的测试代码,主要涵盖了网络编程、并发编程和反射等核心概念。下面将...
Go语言高级编程是一本专为有一定Go语言基础的开发者编写的进阶书籍,深入探讨了Go语言的高级特性、原理和应用实践。 在Go语言的基础章节中,主要介绍了Go的诞生、基础语法以及并发内存模型等核心概念。Go语言的并发...
总结来说,本章《Go 语言编程之旅:一起用 Go 做项目》第三章主要介绍了如何使用Go语言和gRPC框架来构建RPC服务,涉及protobuf定义、服务端和客户端的实现,以及一些基本的gRPC特性。通过学习这一章,读者可以掌握...