gRPC는 언어 간 원격 호출을 쉽게 구현할 수 있는 Google의 오픈소스 고성능 RPC 프레임워크입니다. 이 글에서는 Go 언어로 gRPC를 설치하고 간단한 gRPC 서비스를 구축하는 방법을 소개합니다.
먼저 gRPC와 protobuf를 설치해야 합니다. 두 개의 별도 패키지이지만 gRPC에서는 데이터를 직렬화하려면 protobuf가 필요합니다. 설치를 위해 다음 명령을 사용할 수 있습니다:
$ go get -u google.golang.org/grpc $ go get -u github.com/golang/protobuf/protoc-gen-go
다음으로 protobuf 컴파일러 protoc을 설치해야 합니다. .proto 파일을 Go 언어에서 사용할 수 있는 코드로 컴파일할 수 있습니다. Linux 시스템에서는 다음 명령을 사용하여 설치할 수 있습니다.
$ sudo apt install -y protobuf-compiler
macOS 시스템에서는 Brew를 사용하여 설치할 수 있습니다.
$ brew install protobuf
또는 공식 웹사이트로 이동하여 수동으로 다운로드하고 설치할 수 있습니다.
gRPC 서비스 작성을 시작하기 전에 RPC 인터페이스를 정의해야 합니다. 이는 서비스 인터페이스와 메시지 형식을 설명하는 .proto 파일을 통해 수행할 수 있습니다. 다음은 간단한 예입니다.
syntax = "proto3"; package helloworld; message HelloRequest { string name = 1; } message HelloReply { string message = 1; } service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); }
위의 예에서는 HelloRequest 매개변수를 받아들이고 HelloReply 매개변수를 반환하는 SayHello라는 RPC 인터페이스가 있는 Greeter라는 서비스를 정의했습니다. 각 매개변수는 protobuf의 메시지를 사용하여 정의됩니다.
이제 protobuf 컴파일러 protoc을 사용하여 Go 코드를 생성할 수 있습니다. 다음 명령을 사용하세요:
$ protoc --go_out=plugins=grpc:. helloworld.proto
그러면 .proto 파일에 정의한 모든 구조와 인터페이스가 포함된 helloworld.pb.go라는 파일이 생성됩니다.
이제 gRPC 서비스를 작성할 차례입니다. 다음은 간단한 서비스 예시입니다.
package main import ( "context" "log" "net" "google.golang.org/grpc" pb "your_module/helloworld" ) const ( port = ":50051" ) // server is used to implement helloworld.GreeterServer. type server struct{} // SayHello implements helloworld.GreeterServer func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { log.Printf("Received: %v", in.GetName()) return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil } func main() { lis, err := net.Listen("tcp", port) if err != nil { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) log.Printf("Listening on %v", port) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
위 예시에서는 .proto 파일에 정의한 인터페이스를 구현하고 이를 gRPC 서버에 등록했습니다.
마지막으로 gRPC 서비스를 실행하고 클라이언트를 사용하여 테스트할 수 있습니다. 다음 명령을 사용하여 서비스를 실행할 수 있습니다.
$ go run server.go
그런 다음 다른 터미널 창에서 다음 명령을 사용하여 클라이언트를 실행할 수 있습니다.
$ go run client.go
클라이언트가 실행된 후 gRPC 서버에 요청을 보내고 인쇄합니다. 응답 메시지를 출력합니다.
이것은 고급 기능을 사용하여 더욱 강력한 gRPC 서비스를 만들 수 있는 간단한 예입니다.
요약
이번 글에서는 Go 언어로 gRPC를 설치하는 방법을 소개하고 간단한 gRPC 서비스 예시를 만들어봤습니다. gRPC는 매우 높은 성능과 효율성으로 언어 간 원격 호출을 쉽게 수행할 수 있는 방법을 제공합니다.
위 내용은 Go 언어로 gRPC를 설치하는 방법에 대해 이야기해보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!