2021-02-03 GO GRPC EXAMPLE

GRPC

  • GRPC의 기본이나 개념은 모두 알고 있다는 가정하에 코드로 직접 GRPC를 구현해보고 테스트 해봄
  • GRPC 활용 및 사용 방법 등에 대한 샘플은 grpc-go 에 잘되어 있음
  • 아래 프로젝트는 직접 echo, stream 전송 흐름에 대한 프로젝트를 구현해보고 물리적으로 구분된 두개의 머신에서 테스트를 진행해보기 위한 프로젝트

이하 전문은 모두 레포지토리에..


simple throughput check on real machine using grpc

usage

  1. git clone https://github.com/ppzxc/go-grpc-example
  2. cd go-grpc-examples
  3. make all
  4. echo
server side
 - ./echo_server -port 9990
 
client side
 - ./echo_client -ip 192.168.0.65 -port 9990 -len 512 -conn 1 -worker 1
  1. client Stream
server side
 - ./clientStream_server -port 9990
 
client side
 - ./clientStream_client -ip 192.168.0.65 -port 9990 -len 512 -conn 1 -worker 1 -count 10000
  1. server Stream
server side
 - ./serverStream_server -port 9990 -count 1000 -len 512
 
client side
 - ./serverStream_client -ip 192.168.0.65 -port 9990 -conn 1 -worker 1
  1. bidirectional Stream
server side
 - ./biStream_server -port 9990
 
client side
 - ./biStream_client -ip 192.168.0.65 -port 9990 -len 512 -conn 1 -worker 1

flags

message Request {
  uint64 uid = 1;
  bytes message = 2;
  int32 len = 3;
  int32 connNumber = 4;
  int32 workerNumber = 5;
}
  • ip
  • port
  • len => protobuf bytes message size
  • conn => connection count
  • worker => connection per worker count

grpc/grpc-go

D:\go\go-grpc-examples-benchmark\proto\unary>protoc --version
libprotoc 3.14.0
D:\go\go-grpc-examples-benchmark\proto\unary>protoc --go_out=plugins=grpc:. *.proto

reference