深入浅出RPC框架|青训营笔记

76 阅读1分钟

基本概念

本地函数调用

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需要解决的问题:

  1. 函数映射
  2. 数据转换成字节流
  3. 网络传输

一次RPC 的完整过程

  • 服务端在启动后,会将它提供的服务列表发布到注册中心,客户端向注册中心订阅服务地址;
  • 客户端会通过本地代理模块 Proxy 调用服务端,Proxy 模块收到负责将方法、参数等数据转化成网络字节流;
  • 客户端从服务列表中选取其中一个的服务地址,并将数据通过网络发送给服务端;
  • 服务端接收到数据后进行解码,得到请求信息;
  • 服务端根据解码后的请求信息调用对应的服务,然后将调用结果返回给客户端。