Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

ETC grpc framework

FRAMEWORK, RPC, PROTOCOL, 20224 min read

grpc 가 뭐죠? Remote Procedure Call (RPC) framework

gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment
https://grpc.io/

grpc 특징

원격 프로시저 호출 마이크로서비스 => 구글에서 rpc 를 잘 쓸 수 있도록 한 것 http 가 너무 느려서쓴다 remote 프로시저 콜 서로 인터페이스 규약을 정해놓고 어떤 것이 자신을 불렀는지 남길 수 있음=> grpc 사용

grpc 와 http API 를 비교

http 프로토콜 rest api 는

grpc 가 http 2 를써서 1.1 보다 좋아진 점은 grpc 가 양방향통신이 가능 grpc 는 byte 기반

postman 의 grpc 요청 기능 go 버전도 올리자

go 로 원격 메서드 실행을 원한다면 특정 언어에 얽매이지 않도록 grpc 와 같은 표준 프로토콜을 사용

rest full 하게 쓰고 있는데...

마이크로 서비스간에 통신 퍼포먼스를 생각하면 rpc remote prosiger call 을 쓰다가

http

tls 프로토콜

protocal 규약

network layor osi 7 계층

tls 프로토콜 grpc가 tls 로 통신한다 그래서 눈으로 보이지 않음 tls 방식으로 변환해서 간다 grpc 저수준의 방식 성능이 보장된 형태

json대신 protocol buffers (Protobuf) http 2 를 쓴다 ssl security => tls 기반에서 보안

비동기로 작동?

unary => 단방향으로

serverStreaming

여러번 스트리밍으로 보낸다

client 스트리밍

bi-directional Streaming

스트림으로 보내면 스트림으로 받음

protocal buffers

의 장점은 서로 다른 언어끼리 grpc 로 통신하면서 사용할 수 있다

언어 독립적이고 확장성있다

프로토컬퍼퍼의 Message,Service 두가지를 규약해 놓으면 통신할 수 있다

왜? 쓸까요?

마이크로 서비스 connection 스트리밍할 수 있음 멀티 랭기지 할 수 있다

front 에서 동영상을 주고받을 때 realtime streaming 할 수 있다 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install github.com/golang/protobuf/protoc-gen-go@latest 깔고 프로토 버프를 깔아보자

go install google.golang.org/protobuf/cmd/protoc-gen-go

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative ./v0/gwiyeomgo/user.proto

20221216

.protoBuf

언어와 상관없이 쓸 수 있는 정의 서 data 를 message 로 정의 네이밍은 카멜케이스 필드는 스네이크케리스로 쓴다 필드 넘버를 추가 (가능하면 바꾸지 않는다)

정보를 바이트로 바낼때 115 는 1바이트 이고 16 이후는 2바이트로 왠만해서 1~15 번호를 써라

프로토3 최신 버전 사용 기본은 프로토2로 사용시 꼭 3 로 쓰기

repeated 를 쓰고 pack-ture 를 써서 배열을 보냏 수 있다

grpc 는 relase 를 해야함 clientService 만들어서

get 이름 getList

  1. protobuf 파일 만들기 (정의서 만듬)

  2. protoc로 컴파일 (언어별로 컴파일해서 go에서 쓸 수 있도록 만듬)

  3. grpc 로 통신할 수 있도록 서버와 클라이언트 만들어서 통신을 했다.

  4. postman 으로 테스트 하기

  5. http 로 통신을 할 수 있도록 게이트 웨이를 넣음 (http 통신을 받은 후 => 게이트 웨이 => grpc )

유너리? 보내면 받는 http 1.0

스트림으로 양쪽 으로 통신하는 것도 가능..

6.grpc 미들웨어를 넣을 수 있다

https://devjin-blog.com/golang-grpc-server-4/ api 콜할 (request) 때 middleware 에서 grpc

출처 모음

https://chacha95.github.io/2020-06-15-gRPC1/ https://devjin-blog.com/golang-grpc-server-1/ https://grpc.io/docs/protoc-installation/ https://medium.com/naver-cloud-platform/nbp-%EA%B8%B0%EC%88%A0-%EA%B2%BD%ED%97%98-%EC%8B%9C%EB%8C%80%EC%9D%98-%ED%9D%90%EB%A6%84-grpc-%EA%B9%8A%EA%B2%8C-%ED%8C%8C%EA%B3%A0%EB%93%A4%EA%B8%B0-1-39e97cb3460

© 2024 by GwiyeomGo Tech Blog. All rights reserved.