nRPC快速上手:10分钟搭建你的第一个NATS RPC服务

nRPC快速上手:10分钟搭建你的第一个NATS RPC服务

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/alloptionsexamples/metrics_helloworld示例,探索超时控制、指标监控等功能。

开始你的nRPC之旅,体验高效的分布式通信吧!

【免费下载链接】nrpcnRPC is like gRPC, but over NATS项目地址: https://gitcode.com/gh_mirrors/nr/nrpc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考