Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zcong1993/grpc-example
https://github.com/zcong1993/grpc-example
Last synced: about 23 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/zcong1993/grpc-example
- Owner: zcong1993
- License: mit
- Created: 2021-02-24T15:48:03.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-11-25T06:15:11.000Z (almost 3 years ago)
- Last Synced: 2024-06-21T03:34:15.746Z (5 months ago)
- Language: Go
- Size: 57.6 KB
- Stars: 5
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grpc-example
> go grpc example
- grpc client load balance example
## 新手教程
### 1. 安装 protobuf
```shell
$ brew install protobuf
# 检查是否安装成功
$ protoc --version
```### 2. 安装 go 语言代码生成工具
go install 需要 go1.16 版本
```shell
# 官方工具
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install -v google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# 使用 gogo/protobuf 优化代码生成
$ go install github.com/gogo/protobuf/protoc-gen-gogofast@latest
```[./scripts/install.sh](./scripts/install.sh)
### 3. 生成代码
介绍官方生成器和 gogo/protobuf 两种生成器, 新手可以忽略掉 gogo/protobuf
#### 使用官方版本代码生成器
```shell
#!/bin/bash -x
set -eOUT_DIR=./pb
rm -rf $OUT_DIR/*.{go,json}
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
pb/origin-hello.proto```
[./scripts/origin-gen.sh](./scripts/origin-gen.sh) 对应 proto 文件 [./pb/origin-hello.proto](./pb/origin-hello.proto)
#### 使用 gogo/protobuf 生成
```shell
#!/bin/bash -x
set -eOUT_DIR=./pb
GOGOPROTO_ROOT="$(GO111MODULE=on go list -m -f '{{ .Dir }}' -m github.com/gogo/protobuf)"
GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf"rm -rf $OUT_DIR/*.{go,json}
protoc --gogofast_out=plugins=grpc:. \
-I=. \
-I="${GOGOPROTO_PATH}" \
pb/hello.proto```
[./scripts/gen.sh](./scripts/gen.sh) 对应 proto 文件 [./pb/hello.proto](./pb/hello.proto)
### 4. 编写代码
服务端实现生成接口 `pb.HelloServer` 接口, 客户端直接使用 `pb.NewHelloClient` 初始化 client 调用接口.
## License
MIT © zcong1993