Golang을 이용한 간편한 gRPC 서비스 구현 방법
간단한 RPC 서비스를 위해 Golang을 사용하는 방법
RPC의 일반적인 소개를 알고 싶다면, 이 시리즈의 전 문장을 보고 싶을 수도 있다-
구현된 코드는 내 GitHub 저장소에서 찾을 수 있습니다.
Link to GitHub repository
네가 시작하기 전에
작업흐름
블로그 게시물을 작성할 수 있는 간단한 RPC 서비스
개술
### 디렉토리 구조
grpcblog
├── Makefile
├── blog
│ ├── blog.pb.go
│ ├── blog.proto
│ └── blog_grpc.pb.go
├── client
│ └── client.go
├── server
│ └── server.go
├── storage
└── storage.go
.proto 파일
메시지 블록은 두 필드인 제목과 본문을 포함하는 블로그 글의 구조를 정의합니다.
message Blog{
string title = 1;
string body =2;
}
메시지 BlogRequest는 클라이언트 요청의 구조를 정의합니다. 하나의 필드가 있습니다. Blog입니다.
message BlogRequest {
Blog blog = 1;
}
메시지 BlogResponse는 서버 응답의 구조를 정의합니다. 두 필드를 포함합니다.
id: 새 게시물을 성공적으로 작성할 때 생성된 일반 고유 식별자(UUID)입니다.
created:CreatePost가 성공하면 부울 값을true로 설정합니다.안 그러면 틀렸어.
message BlogResponse{
string id = 1;
bool created = 2;
}
service BlogService{
rpc CreatePost(BlogRequest) returns (BlogResponse) {}
}
편집자원본 파일
다음 명령을 사용하여 컴파일합니다.프로파일:
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative blog/blog.proto
이렇게 하면 두 개의 파일이 생성됩니다.blog/blog_grpc.pb.go
블로그pb.go는 서버와 클라이언트 캐시를 포함합니다.BlogServiceClient 및 BlogServer 인터페이스가 없습니다.이 인터페이스들은 잠시 후에 서버와 클라이언트 코드에서 실현될 것입니다.우리는 자신의 서버와 클라이언트를 작성해서 실현해야 한다.blog/blog.pb.go
블로그pb.go는 프로토콜 버퍼 코드를 포함합니다. 서버와 클라이언트 사이에서 데이터를 전송할 때 이진 서열화를 담당합니다.메모리 저장소 정의
저장실.go는 임시 메모리 저장을 위한 사용자 정의 함수를 포함합니다.
type BlogStorage interface {
Save(blog *blog.Blog, id string) error
View()
}
type InMemoryBlogStorage struct {
mutex sync.RWMutex
blogs map[string]*blog.Blog
}
클라이언트 코드
서버 코드
최종 결과
두 개의 독립된 터미널에서 서버와 클라이언트 코드를 실행합니다.
실행 서버
go run server/server.go
실행 클라이언트 - 새 블로그 글의 제목과 내용을 입력합니다.
go run client/client.go
만세!GRPC 서비스를 사용하여 새 게시물을 성공적으로 만들었습니다.
자세히 보기 - 유용한 자료:
Reference
이 문제에 관하여(Golang을 이용한 간편한 gRPC 서비스 구현 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/penthaapatel/how-to-implement-a-simple-grpc-service-using-golang-2hfk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)