# rpc **Repository Path**: youkelike/rpc ## Basic Information - **Project Name**: rpc - **Description**: rpc 框架 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-24 - **Last Updated**: 2024-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## RPC 用代理模式实现的 rpc 框架 ## 特性 - rpc 协议头和协议体都是可变长度 - 协议头中预留元数据扩展位 Meta,通过它可以支持单向调用、超时控制、链路追踪等功能 - 支持自定义序列化和压缩协议 ## 使用示例 ```go // 自定义客户端结构体 usClient := &UserService{} // 自定义服务端结构体 service := &UserServiceServer{} // 服务端 proxy server := rpc.NewServer() // 注册服务 server.RegisterService(service) // 启动服务端 go func() { err := server.Start("tcp", ":8081") t.Log(err) }() // 客户端 proxy client, err := rpc.NewClient(":8081", rpc.ClientWithSerializer(&json.Serializer{})) // 注册客户端 err = client.RegisterService(usClient) // rpc 调用 resp, er := usClient.GetById(context.Background(), &GetByIdReq{Id: 123}) ```