基本概念
本地函数调用
func main(){
var a=2
var b-3
result :=calculate(a,b)
fmt.Println(result)
return
}
func calculate(x,y int){
z :=x*y
return z
远程函数调用
RPC需要解决的问题:
- 函数映射
- 数据转换成字节流
- 网络传输
一次RPC 的完整过程
- 服务端在启动后,会将它提供的服务列表发布到注册中心,客户端向注册中心订阅服务地址;
- 客户端会通过本地代理模块 Proxy 调用服务端,Proxy 模块收到负责将方法、参数等数据转化成网络字节流;
- 客户端从服务列表中选取其中一个的服务地址,并将数据通过网络发送给服务端;
- 服务端接收到数据后进行解码,得到请求信息;
- 服务端根据解码后的请求信息调用对应的服务,然后将调用结果返回给客户端。