0
点赞
收藏
分享

微信扫一扫

GO微服务入门:什么是微服务

他说Python 2021-09-28 阅读 82

微服务入门

理解RPC

  • 像调用本地函数一样,调用远程函数。

GO Socket通信

server端

net.Listen()       ----> listener 创建监听器
listener.Accept()  ----> conn 启动监听器,建立连接
conn.Read()
conn.Write()
defer conn.Close()/listener.Close()

client端

net.Dial()        ----> conn
conn.Write()
conn.Read()
defer conn.Close()

GO RPC

server端

// 1. 注册rpc服务对象。给对象绑定方法(1. 定义类, 2. 绑定类方法)
rpc.RegisterName("服务名", 回调对象)
// 2. 创建监听器
listener, err := net.Listen()
// 3. 建立连接
conn, err := listener.Accept()
// 4. 将连接绑定rpc服务
rpc.ServeConn(conn)

client端

// 1. 用rpc连接服务器
conn, err := rpc.Dial()
// 2. 调用远程函数
conn.Call("服务名.方法名", 传入参数, 传出参数)

RPC相关函数

  • 调用远程函数 func (c *Client) Call(serviceMethod string, args interface{}, reply interface{}) error
  • 绑定rpc服务 func (s *Server) ServeConn(conn io.ReadWriteCloser)
  • 注册rpc服务 func (s *Server) RegisterName(name string, rcvr interface{}) error
    rcvr对应rpc对象,该对象绑定方法需要满足如下条件:
    a. 方法必须是导出的(包外可见,首字母大写)
    b. 方法必须有两个参数, 都是导出类型、内建类型
    c. 方法的第二个参数必须是"指针"(传出参数)
    d. 方法只有一个 error 接口类型的返回值。
举报

相关推荐

0 条评论