nRPC快速上手:10分钟搭建你的第一个NATS RPC服务
【免费下载链接】nrpcnRPC is like gRPC, but over NATS项目地址: https://gitcode.com/gh_mirrors/nr/nrpc
nRPC是一个基于NATS的RPC框架,类似于gRPC但使用NATS作为传输层。本文将带你快速上手nRPC,在10分钟内完成从环境准备到服务部署的全流程,让你轻松体验高效的分布式通信能力。
📋 准备工作:环境搭建
安装Go环境
确保你的系统已安装Go 1.16+环境,可通过go version命令验证安装状态。如果尚未安装,可参考Go官方文档完成配置。
获取nRPC源码
通过以下命令克隆nRPC项目仓库:
git clone https://gitcode.com/gh_mirrors/nr/nrpc cd nrpc安装依赖
项目使用Go Modules管理依赖,执行以下命令安装所需依赖:
go mod download🚀 快速启动:HelloWorld示例
nRPC提供了完整的HelloWorld示例,位于examples/helloworld目录下,包含服务端、客户端及协议定义文件。
1. 定义服务协议
服务接口定义在examples/helloworld/helloworld/helloworld.proto文件中,核心内容如下:
service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }该协议定义了一个Greeter服务,包含SayHello方法,用于接收名字并返回问候消息。
2. 启动服务端
服务端实现位于examples/helloworld/greeter_server/main.go,关键代码如下:
func main() { s := nrpc.NewServer() helloworld.RegisterGreeterServer(s, &server{}) if err := s.Serve(nats.DefaultURL); err != nil { log.Fatalf("server failed to serve: %v", err) } }通过以下命令启动服务端:
go run examples/helloworld/greeter_server/main.go服务端将连接到本地NATS服务器(默认地址nats://127.0.0.1:4222)并等待客户端请求。
3. 运行客户端
客户端代码位于examples/helloworld/greeter_client/main.go,核心逻辑:
func main() { conn, err := nrpc.Dial(nats.DefaultURL) if err != nil { log.Fatalf("failed to dial: %v", err) } defer conn.Close() client := helloworld.NewGreeterClient(conn) resp, err := client.SayHello(context.Background(), &helloworld.HelloRequest{Name: "nRPC"}) if err != nil { log.Fatalf("failed to call SayHello: %v", err) } log.Printf("Received: %s", resp.Message) }在新终端执行以下命令运行客户端:
go run examples/helloworld/greeter_client/main.go成功运行后,客户端将输出:Received: Hello nRPC,表示服务调用成功。
⚙️ 自定义服务开发步骤
1. 编写Protobuf协议
创建.proto文件定义服务接口,例如my_service.proto:
syntax = "proto3"; package myservice; service MyService { rpc DoSomething (Request) returns (Response); } message Request { string data = 1; } message Response { string result = 1; }2. 生成代码
使用nRPC代码生成器生成Go代码:
protoc --nrpc_out=. my_service.proto生成的文件将包含服务接口和客户端/服务端桩代码。
3. 实现服务
创建服务实现文件,实现生成的接口:
type myService struct{} func (s *myService) DoSomething(ctx context.Context, req *myservice.Request) (*myservice.Response, error) { return &myservice.Response{Result: "Processed: " + req.Data}, nil }4. 部署服务
参考HelloWorld示例启动服务端和客户端,完成自定义服务的部署与调用。
📝 总结
通过本文的10分钟教程,你已经掌握了nRPC的基本使用方法,包括环境搭建、示例运行和自定义服务开发。nRPC基于NATS的轻量级特性,使其在微服务架构中具有低延迟、高可用的优势。更多高级特性可参考项目中的examples/alloptions和examples/metrics_helloworld示例,探索超时控制、指标监控等功能。
开始你的nRPC之旅,体验高效的分布式通信吧!
【免费下载链接】nrpcnRPC is like gRPC, but over NATS项目地址: https://gitcode.com/gh_mirrors/nr/nrpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考