Go基础学习记录之RPC(一)

{app.params.name}}{app.params.name}}{app.params.name}}

RPC

在前面的部分中,我们讨论了如何基于套接字和HTTP编写网络应用程序。
我们了解到它们都使用“信息交换”模型,客户端发送请求和服务器响应它们。
这种数据交换基于特定格式,以便双方能够彼此通信。
但是,许多独立的应用程序不使用此模型,而是调用服务,就像它们调用普通函数一样。

RPC旨在成为联网系统的函数调用模式。
客户端执行RPC就像调用本机函数一样,除了它们打包函数参数并通过网络将它们发送到服务器。
然后,服务器可以解压缩这些参数并处理请求,将结果返回给客户端。

在计算机科学中,远程过程调用(RPC)是一种进程间通信,它允许计算机程序使子例程或过程在另一个地址空间(通常在共享网络上的另一台计算机上)上执行,而无需程序员明确地
编码此远程交互的详细信息。
也就是说,程序员基本上编写相同的代码,无论子程序是执行程序的本地程序还是远程程序。
当有问题的软件使用面向对象原则时,RPC称为远程调用或远程方法调用。

RPC工作原理

通常,从客户端到服务器的RPC调用具有以下十个步骤:

1. 调用客户端句柄,执行传输参数。
2. 调用本地系统内核发送网络消息。
3. 将消息发送到远程主机。
4. 服务器接收句柄和参数。
5. 执行远程进程。
6. 将执行结果返回给相应的句柄。
7. 服务器句柄调用远程系统内核。
8. 消息发送回本地系统内核。
9. 客户端句柄从系统内核接收消息。
10. 客户端从相应的句柄获取结果。

Golang RPC

Go在其标准库中有三个级别的官方支持,即TCP,HTTP和JSON RPC。
请注意,Go RPC与其他传统RPC系统不同。
它要求您在客户端和服务器端使用Go应用程序,因为它使用Gob对内容进行编码。

Go RPC的功能必须遵守以下远程访问规则,否则将忽略相应的调用。
1. 功能导出(大写)。
2. 函数必须具有导出类型的两个参数。
3. 第一个参数是从客户端接收,第二个参数必须是指针,用于回复客户端。
4. 函数必须具有错误类型的返回值。

例如:

func (t *T) MethodName(argType T1, replyType *T2) error

其中T,T1和T2必须能够通过package/gob包进行编码。

任何类型的RPC都必须通过网络传输数据。
Go RPC可以使用HTTP或TCP。
使用HTTP的好处是可以重用net/http包中的一些函数。
 

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/102


版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/102