Go RPC

作者: qingshuiting | 来源:发表于2019-02-22 15:09 被阅读0次

    Go RPC

    Go 原生的网络RPC

    需要关联Go的net框架和库内容(net,tpc,http等等)

    理论

    总体来说RPC其实就是在server注册一些service,把这些service的method给exported出去。这样可以让client通过网络等方式来调用。但是register有限制,不能注册相同的service多次,但是可以注册不同的service。

    注册的方法要求(criteria):

    - the method's type is exported.
    - the method is exported.
    - the method has two arguments, both exported (or builtin) types.
    - the method's second argument is a pointer.
    - the method has return type error.
    

    所以方法按照如下的形式:

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

    server端

    go中单独有一个server的结构体

    操作的顺序是:

    1. register对应的service,其中可以exported的method必须符合上述的要求
    2. 可以单独去服务一个conn,使用server的ServeConn,接下来会调用ServeCodec但是ServeConn方法是在所有的操作结束以后才会返回。所以如果想来一个连接分别并发的处理,就需要ServeConn在go statement中使用。其实也就是一个conn可能会有多个request,那么会在ServeCodec中并发的处理。
    3. 或者维护一个listener,使用accept的方式来处理每一个connect。
    4. 或者使用http的方式

    client端

    go中单独实现有client的结构体

    1. client通过Http或者conn的方式建立client
    2. client使用call或者go进行rpc调用,只不过一个是同步一个是异步调用
    3. 如果是异步调用就处理调用结果

    编码/解码器

    server和client的处理逻辑

    相关文章

      网友评论

          本文标题:Go RPC

          本文链接:https://www.haomeiwen.com/subject/jcseyqtx.html