최근 몇 년 동안 golang 언어는 점점 더 많은 개발자들에게 선호되고 있으며 Golang 언어의 경량화 및 높은 동시성 기능은 일부 대기업의 백엔드 서비스에서 널리 사용되고 있습니다. 마이크로서비스와 클라우드 네이티브 기술의 인기로 인해 서버 분야에서 golang의 사용이 늘어나고 있으며, golang의 rpc 프레임워크인 grpc도 널리 사용되고 있습니다.
이 글에서는 주로 grpc 배포에 대해 소개합니다. 배포하기 전에 golang과 grpc의 기본 개념을 이해해야 합니다.
1. golang의 기본 개념
golang은 Google에서 탄생한 정적 유형, 컴파일 및 동시 프로그래밍 언어입니다. golang 언어에는 이해해야 할 몇 가지 특별한 개념이 있습니다.
2. grpc의 기본 개념
grpc는 Google에서 개발하고 오픈소스로 제공하는 고성능 오픈소스 일반 RPC 프레임워크입니다. grpc는 golang, C++, Java 등을 포함한 여러 언어를 지원합니다. grpc의 특징은 다음과 같습니다.
3. grpc 배포
기본 개념을 익힌 후 grpc 배포를 소개하겠습니다.
간단한 grpc 서버 프로그램을 작성한다고 가정해 보겠습니다. 코드는 다음과 같습니다.
package main import ( "context" "fmt" "log" "net" "google.golang.org/grpc" pb "path/to/your/proto" ) const ( port = ":50051" ) type server struct{} func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { log.Printf("Received: %v", in.Name) return &pb.HelloReply{Message: "Hello " + in.Name}, 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{}) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
간단한 grpc 클라이언트 프로그램을 작성한다고 가정해 보겠습니다.
package main import ( "context" "log" "os" "time" "google.golang.org/grpc" pb "path/to/your/proto" ) const ( address = "localhost:50051" defaultName = "world" ) func main() { conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) name := defaultName if len(os.Args) > 1 { name = os.Args[1] } ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) }
컴파일 명령은 다음과 같습니다.
$ go build -o greeter_server ./server/main.go $ go build -o greeter_client ./client/main.go
$ ./greeter_server
실행 후 다음 출력이 표시됩니다.
2021/05/07 10:37:30 Listening on :50051
$ ./greeter_client
실행 후 다음과 같은 출력이 표시됩니다.
2021/05/07 10:38:28 Greeting: Hello world
그 중 world가 기본 매개변수이며 다른 매개변수도 전달할 수 있습니다. 예:
$ ./greeter_client Tim
실행 후
2021/05/07 10:39:22 Greeting: Hello Tim
IV. 요약
이 기사에서는 주로 grpc 서버 프로그램 작성, grpc 클라이언트 프로그램 작성, 바이너리 파일 컴파일 및 생성, grpc 서버 및 클라이언트 프로그램 실행을 포함하여 grpc 배포에 대해 소개합니다. . golang 및 grpc에 대해 자세히 알아보려면 공식 문서 및 기타 관련 자료를 참조하세요.
위 내용은 golang grpc를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!