7.Go语言高并发与微服务实战 --- 远程过程调用 RPC

第 7 章 远程过程调用 RPC
7.1 RPC 机制和实现过程 
	7.1.1 RPC 机制 
		1.客户端进程以正常的方式调用客户存根
		2.客户存根生成一个消息,然后调用本地操作系统的网络模块,存根进入阻塞状态
		3.客户端操作系统将网络消息发送给远程操作系统
		4.远程操作系统将网络消息交给服务端存根
		5.服务端存根将参数调取出来,而后调用服务端程序
		6.服务端程序执行相应的操作,操作完成后将结果返回给服务端存根
		7.服务端存根将结果打包成一个消息,而后调用本地操作系统
		8.服务端操作系统将含有结果的消息发送给客户端操作系统
		9.客户端操作系统将消息交给客户存根,存根从阻塞状态恢复,进入运行状态
		10.客户端存根将结果从消息中提取,返回给调用它的客户端过程


		要实现一个RPC远程过程调用,需要考虑以下几个主要方面:参数传递、通信协议定制、出错和超时处理等。

	7.1.2 传递参数 
		1.传递值参数
			比较简单,只需要将参数的值复制到网络消息的数据中即可。

		2.传递引用参数
			传递应用参数比较困难。单纯传递参数的引用(也包含指针)是完全没有意义的,因为引用地址传递给远程计算机,其指向的内存位置困难跟
		远程系统上完全不同。如果你想支持传递引用参数或者传递对象,你就必须发送参数的副本,将它们防止在远程系统内存中,向它们传递指向服务器
		内存的指针,然后将对象发送回客户端,复制它的引用,这一过程是很麻烦并且容易出错的。因此,RPC一般不支持直接传递引用对象。

		3.数据格式的统一问题
			在本地系统上不存在数据不相容的问题,因为数据格式总是相同的;而在分布式系统中则不同,不同远程机器上可能有不同的字节顺序,不同
		的大小整数,以及不同的浮点表示。对于RPC,如果想与异构系统通信,

猜你喜欢

转载自blog.csdn.net/enlyhua/article/details/127478170
今日推荐