https://github.com/xkeyideal/grpcwatch
grpc-go watch stream example
https://github.com/xkeyideal/grpcwatch
grpc grpc-go grpc-stream watcher
Last synced: about 1 month ago
JSON representation
grpc-go watch stream example
- Host: GitHub
- URL: https://github.com/xkeyideal/grpcwatch
- Owner: xkeyideal
- License: apache-2.0
- Created: 2020-02-26T06:52:02.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-04T07:29:49.000Z (about 6 years ago)
- Last Synced: 2024-06-20T02:10:37.671Z (almost 2 years ago)
- Topics: grpc, grpc-go, grpc-stream, watcher
- Language: Go
- Homepage:
- Size: 61.5 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
## gRPC watch
本项目是参考[Etcd](https://github.com/etcd-io/etcd) 的watch client实现的常规业务的简易化watch 用例.
### watchclient目录
gRPC watch 的客户端核心程序,代码里有比较详细的中文注释,实现的功能:
1. 断线重连
2. gRPC stream 管理
3. 错误处理
核心功能都是参考Etcd的 clientv3/watch.go 中代码实现。
### watchserver目录
gRPC watch 的服务端核心程序,用于mock数据,代码比较简单。
示例中的代码,只采用了定时的方式固定生成数据,然后通过gRPC server stream发送给客户端。
在实际的应用场景中,需要与实际的数据存储程序关联在一起,此处的处理逻辑较为复杂,本例未详细实现,
可参考[Etcd watch server](https://github.com/etcd-io/etcd/blob/master/mvcc/watcher.go)代码。
### grpclient 目录
gRPC client的负载均衡与分布式锁、选主的封装。
此部分代码也是基于Etcd的clientv3代码中修改。
负载均衡代码只适用于 gRPC 1.24.0版本,现有的1.27.+版本由于API的变化,导致不能使用,后续修改。
### 测试代码 test目录
1. go run server.go, 启动服务端
2. go run client.go, 启动客户端
服务端与客户端测试代码比较简单,可以根据自己需求修改,测试各类功能。
### 备注
由于个人能力有限,此用例中可能存在若干bug,还请鉴别使用。
最后给出 [gRPC Codes](https://github.com/xkeyideal/grpcwatch/blob/master/grpcodes.md)的个人理解,仅供参考。