具有故障模拟功能的RPC实现分析 | Charles的技术博客
引言分布式系统学习中,需要理解如何对各种故障进行正确地处理,包括网络故障,机器故障等等。如何能方便的模拟故障,来验证自己的原型系统是否能够正确的应对这些故障就非常重要。本文将分析一个基于golang实现,具有故障模拟的RPC实现原理,源码来自MIT 6.824课程的labrpc。
RPC基本原理在了解RPC实现之前,我们先来了解下RPC的基本原理。
在分布式系统中,RPC(remote procedure call)是当一个计算机程序触发在其他地址空间(通常是通过网络相连的其他计算机)执行一个计算过程,用户无需了解其实现细节,就像调用本机的函数一样,通常,一个RPC的调用类似如下
1234567Client: z = fn(x, y)Server: fn(x, y) { compute return z }如上所示,Client执行函数fn(x,y),通过RPC,最终在Server端执行此函数,并获取结果。如上所示的调用,其消息流如下
123Client Server request---> <---responseClien...阅读全文
RPC基本原理在了解RPC实现之前,我们先来了解下RPC的基本原理。
在分布式系统中,RPC(remote procedure call)是当一个计算机程序触发在其他地址空间(通常是通过网络相连的其他计算机)执行一个计算过程,用户无需了解其实现细节,就像调用本机的函数一样,通常,一个RPC的调用类似如下
1234567Client: z = fn(x, y)Server: fn(x, y) { compute return z }如上所示,Client执行函数fn(x,y),通过RPC,最终在Server端执行此函数,并获取结果。如上所示的调用,其消息流如下
123Client Server request---> <---responseClien...阅读全文