Skip to main content

rpc Package

rpc包实现了 RPC 通信的核心逻辑,包括消息序列化、连接管理和服务注册等。

Server

Server结构体实现了 RPC 服务器:

type Server struct {
services map[string]*ServiceDesc
serializationType uint8
}

// NewServer 创建新的RPC服务器
func NewServer() *Server

// RegisterService 注册服务实例
func (s *Server) RegisterService(service interface{}) error

// Start 启动服务器
func (s *Server) Start(address string) error

Client

Client结构体实现了 RPC 客户端:

type Client struct {
conn *Connection
messageID uint64
failoverConfig *failover.Config
failoverHandler *failover.DefaultFailoverHandler
enableFailover bool
}

// NewClient 创建新的RPC客户端
func NewClient(address string, options ...ClientOption) (*Client, error)

// Call 调用远程服务
func (c *Client) Call(serviceName, methodName string, args interface{}) ([]byte, error)

// CallWithTimeout 带超时的RPC调用
func (c *Client) CallWithTimeout(ctx context.Context, serviceName, methodName string, args interface{}) ([]byte, error)

Connection

Connection结构体封装了底层网络连接,提供协议层面的读写:

type Connection struct {
conn net.Conn
protocol protocol.Protocol
}

// Write 发送消息
func (c *Connection) Write(serviceName, methodName string, messageType uint8, serializationType uint8, messageID uint64, metadata *protocol.Metadata, payload []byte) error

// Read 接收消息
func (c *Connection) Read() (*protocol.Message, error)

ConnPool

ConnPool结构体实现了连接池,用于管理和复用客户端连接:

type ConnPool struct {
address string
maxIdle int
idleTimeout time.Duration
conns chan *Client
}

// NewConnPool 创建连接池
func NewConnPool(address string, maxIdle int, idleTimeout time.Duration) *ConnPool

// Get 获取连接
func (p *ConnPool) Get() (*Client, error)

// Put 归还连接
func (p *ConnPool) Put(client *Client)

Proxy

Proxy结构体实现了服务代理,用于创建客户端代理对象:

// InitProxy 初始化服务代理
func InitProxy(address string, target interface{}, opts ...ProxyOption) error